public Shell(BundleContext context, CommandProcessor processor) { this.context = context; this.processor = processor; String baseDir = context.getProperty("gosh.home"); baseDir = (baseDir == null) ? context.getProperty("user.dir") : baseDir; baseURI = new File(baseDir).toURI(); this.history = new History(); }
private String findContains(final CharacterIterator ci) { CharSequence part = findDelimiter(ci, '?'); final ListIterator<String> iter = this.commands.listIterator(this.commands.size()); while (iter.hasPrevious()) { String value = iter.previous(); if (value.contains(part)) { return value; } } throw new IllegalArgumentException("No command containing '" + part + "' in the history"); }
public String[] history() { Iterator<String> history = this.history.getHistory(); List<String> lines = new ArrayList<>(); for (int i = 1; history.hasNext(); i++) { lines.add(String.format("%5d %s", i, history.next())); } return lines.toArray(new String[lines.size()]); } }
ci.next(); } else if ((c >= '0' && c <= '9') || c == '-') { event = getCommand(ci); } else if (c == '?') { event = findContains(ci); ci.next(); } else { ci.previous(); event = findStartsWith(ci); event = subst(ci, c, false, this.commands.getLast()); } else { throw new IllegalArgumentException(commandLine + ": Unsupported event"); event = subst(ci, ci.next(), global, event);
ci.next(); } else if ((c >= '0' && c <= '9') || c == '-') { event = getCommand(ci); } else if (c == '?') { event = findContains(ci); ci.next(); } else { ci.previous(); event = findStartsWith(ci); event = subst(ci, c, false, this.commands.getLast()); } else { throw new IllegalArgumentException(commandLine + ": Unsupported event"); event = subst(ci, ci.next(), global, event);
private String findStartsWith(final CharacterIterator ci) { String part = findDelimiter(ci, ':').toString(); final ListIterator<String> iter2 = this.commands.listIterator(this.commands.size()); while (iter2.hasPrevious()) { String value = iter2.previous(); if (value.startsWith(part)) { return value; } } throw new IllegalArgumentException("No command containing '" + part + "' in the history"); }
public Shell(BundleContext context, CommandProcessor processor) { this.context = context; this.processor = processor; String baseDir = context.getProperty("gosh.home"); baseDir = (baseDir == null) ? context.getProperty("user.dir") : baseDir; baseURI = new File(baseDir).toURI(); this.history = new History(); }
public String[] history() { Iterator<String> history = this.history.getHistory(); List<String> lines = new ArrayList<>(); for (int i = 1; history.hasNext(); i++) { lines.add(String.format("%5d %s", i, history.next())); } return lines.toArray(new String[lines.size()]); } }
private String findContains(final CharacterIterator ci) { CharSequence part = findDelimiter(ci, '?'); final ListIterator<String> iter = this.commands.listIterator(this.commands.size()); while (iter.hasPrevious()) { String value = iter.previous(); if (value.contains(part)) { return value; } } throw new IllegalArgumentException("No command containing '" + part + "' in the history"); }
private String findStartsWith(final CharacterIterator ci) { String part = findDelimiter(ci, ':').toString(); final ListIterator<String> iter2 = this.commands.listIterator(this.commands.size()); while (iter2.hasPrevious()) { String value = iter2.previous(); if (value.startsWith(part)) { return value; } } throw new IllegalArgumentException("No command containing '" + part + "' in the history"); }
private String subst(final CharacterIterator ci, final char delimiter, final boolean replaceAll, final String event) { final String pattern = findDelimiter(ci, delimiter).toString(); final String repl = findDelimiter(ci, delimiter).toString(); if (pattern.length() == 0) { throw new IllegalArgumentException(":s" + event + ": substitution failed"); } final Pattern regex = Pattern.compile(pattern); final Matcher m = regex.matcher(event); final StringBuffer res = new StringBuffer(); if (!m.find()) { throw new IllegalArgumentException(":s" + event + ": substitution failed"); } do { m.appendReplacement(res, repl); } while (replaceAll && m.find()); m.appendTail(res); return res.toString(); }
private String subst(final CharacterIterator ci, final char delimiter, final boolean replaceAll, final String event) { final String pattern = findDelimiter(ci, delimiter).toString(); final String repl = findDelimiter(ci, delimiter).toString(); if (pattern.length() == 0) { throw new IllegalArgumentException(":s" + event + ": substitution failed"); } final Pattern regex = Pattern.compile(pattern); final Matcher m = regex.matcher(event); final StringBuffer res = new StringBuffer(); if (!m.find()) { throw new IllegalArgumentException(":s" + event + ": substitution failed"); } do { m.appendReplacement(res, repl); } while (replaceAll && m.find()); m.appendTail(res); return res.toString(); }