public final CompletionMatch match(String s) throws CompletionException { return match(EmptyCompleter.getInstance(), s); }
/** * Provide completions for the specified arguments. * * @param context the command context * @param line the original command line arguments * @return the completions */ public final CompletionMatch complete(RuntimeContext context, String line) throws CommandException { CompletionMatcher matcher = getDescriptor().completer(); Completer completer = getCompleter(context); try { return matcher.match(completer, line); } catch (CompletionException e) { // command.log.log(Level.SEVERE, "Error during completion of line " + line, e); return new CompletionMatch(Delimiter.EMPTY, Completion.create()); } }
public void testOptionValue() throws Exception { class A { @Option(names = "a", completer = CompleterSupport.Foo.class) String a; } // CommandDescriptor<Instance<A>> desc = CommandFactory.DEFAULT.create(A.class); CompletionMatcher<Instance<A>> matcher = desc.completer(); // assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("foo", true)), matcher.match("-a ")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("oo", true)), matcher.match("-a f")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("o", true)), matcher.match("-a fo")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("-b")), matcher.match("-a -b")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create()), matcher.match("-a b ")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("c")), matcher.match("-a b c")); }
public void testSubordinateCommandSingleArgument() throws Exception { class A { @Command void m(@Argument(completer = CompleterSupport.Foo.class) String arg) {} } // CommandDescriptor<Instance<A>> desc = CommandFactory.DEFAULT.create(A.class); CompletionMatcher<Instance<A>> matcher = desc.completer(); // assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("foo", true)), matcher.match("m ")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("oo", true)), matcher.match("m f")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("o", true)), matcher.match("m fo")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create()), matcher.match("m a ")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("f")), matcher.match("m a f")); }
public void testMultiArgument() throws Exception { class A { @Command void m(@Argument(completer = CompleterSupport.Foo.class) List<String> arg) {} } // CommandDescriptor<Instance<A>> desc = CommandFactory.DEFAULT.create(A.class); CompletionMatcher<Instance<A>> matcher = desc.completer(); // assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("foo", true)), matcher.match("m ")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("oo", true)), matcher.match("m f")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("o", true)), matcher.match("m fo")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("foo", true)), matcher.match("m a ")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("oo", true)), matcher.match("m a f")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("o", true)), matcher.match("m a fo")); }
public void testSecondArgument() throws Exception { class A { @Command void main( @Argument String arg1, @Argument(completer = CompleterSupport.Foo.class) String arg2) {} } // CommandDescriptor<Instance<A>> desc = CommandFactory.DEFAULT.create(A.class); CompletionMatcher<Instance<A>> matcher = desc.completer(); // assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("foo", true)), matcher.match("foo ")); assertEquals(new CompletionMatch(Delimiter.DOUBLE_QUOTE, Completion.create("foo", true)), matcher.match("foo \"")); }
public void testOptionArgument() throws Exception { class A { @Command void main(@Option(names = "o") String o, @Argument(completer = CompleterSupport.Foo.class) String arg) { } } // CommandDescriptor<Instance<A>> desc = CommandFactory.DEFAULT.create(A.class); CompletionMatcher<Instance<A>> matcher = desc.completer(); // assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("foo", true)), matcher.match("-o bar ")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("oo", true)), matcher.match("-o bar f")); }
public void testImplicitCommandOptionName() throws Exception { class A { @Command void main(@Option(names = {"o", "option"}) String o) { } } // CommandDescriptor<Instance<A>> desc = CommandFactory.DEFAULT.create(A.class); CompletionMatcher<Instance<A>> matcher = desc.completer(); // assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("-", "o", true)), matcher.match("-")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("--", "option", true)), matcher.match("--")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("--o", "ption", true)), matcher.match("--o")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("--op", "tion", true)), matcher.match("--op")); }
public void testCommandOption() throws Exception { class A { @Command void bar(@Option(names = "a", completer = CompleterSupport.Foo.class) String a) { } } // CommandDescriptor<Instance<A>> desc = CommandFactory.DEFAULT.create(A.class); CompletionMatcher<Instance<A>> matcher = desc.completer(); // assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("bar", true)), matcher.match("")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("b", "ar", true)), matcher.match("b")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("", true)), matcher.match("bar")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create()), matcher.match("bar ")); // assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("foo", true)), matcher.match("bar -a ")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("oo", true)), matcher.match("bar -a f")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("o", true)), matcher.match("bar -a fo")); }
public void testMainCommandSingleArgument() throws Exception { class A { @Command void main(@Argument(completer = CompleterSupport.Foo.class) String arg) {} } // CommandDescriptor<Instance<A>> desc = CommandFactory.DEFAULT.create(A.class); CompletionMatcher<Instance<A>> matcher = desc.completer(); // assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("foo", true)), matcher.match("")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("oo", true)), matcher.match("f")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("o", true)), matcher.match("fo")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create()), matcher.match("a ")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("f")), matcher.match("a f")); }
public void testUseInstance() throws Exception { class Some extends CompleterSupport.Constant { private Some() { super("bilto"); } } Some some = new Some(); class A { @Command void n(@Argument(completer = Some.class) String arg) {} } // CommandDescriptor<Instance<A>> desc = CommandFactory.DEFAULT.create(A.class); CompletionMatcher<Instance<A>> matcher = desc.completer(); // try { matcher.match("n b"); fail(); } catch (CompletionException ignore) { } assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("ilto", true)), matcher.match(some, "n b")); }
public void testArgumentProvidedValue() throws Exception { class A { Custom o; @Command public void foo(@Argument Custom o) { this.o = o; } } CommandDescriptor<Instance<A>> desc = new CommandFactory(CompleteTestCase.class.getClassLoader()).create(A.class); // CompletionMatcher<Instance<A>> matcher = desc.completer(); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create()), matcher.match("foo ")); } }
public void testDoubleDash() throws Exception { class A { @Command void main(@Option(names = "o") String o, @Argument(completer = CompleterSupport.Foo.class) String arg) { } } // CommandDescriptor<Instance<A>> desc = CommandFactory.DEFAULT.create(A.class); CompletionMatcher<Instance<A>> matcher = desc.completer(); // assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("oo", true)), matcher.match("-- f")); }
public void testOption() throws Exception { class A { @Option(names = {"a", "add", "addition"}) String add; } // CommandDescriptor<Instance<A>> desc = CommandFactory.DEFAULT.create(A.class); CompletionMatcher<Instance<A>> matcher = desc.completer(); // assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("-", "a", true)), matcher.match("-")); assertEquals(new CompletionMatch(Delimiter.EMPTY, Completion.create("", true)), matcher.match("-a")); CompletionMatch a = new CompletionMatch(Delimiter.EMPTY, Completion.builder("--").add("add", true).add("addition", true).build()); CompletionMatch b = new CompletionMatch(Delimiter.EMPTY, Completion.builder("--ad").add("d", true).add("dition", true).build()); CompletionMatch c = new CompletionMatch(Delimiter.EMPTY, Completion.create("--addi", "tion", true)); // assertEquals(a, matcher.match("--")); assertEquals(b, matcher.match("--ad")); assertEquals(c, matcher.match("--addi")); }
public void testCommand() throws Exception { class A { @Option(names = "a") String a; @Command void foo(@Option(names = "b") String b) { } @Command void faa() { } } // CommandDescriptor<Instance<A>> desc = CommandFactory.DEFAULT.create(A.class); CompletionMatcher<Instance<A>> matcher = desc.completer(); // CompletionMatch a = new CompletionMatch(Delimiter.EMPTY, Completion.builder("").add("foo", true).add("faa", true).build()); CompletionMatch b = new CompletionMatch(Delimiter.EMPTY, Completion.builder("f").add("oo", true).add("aa", true).build()); CompletionMatch c = new CompletionMatch(Delimiter.EMPTY, Completion.create("", true)); CompletionMatch d = new CompletionMatch(Delimiter.EMPTY, Completion.create()); // assertEquals(a, matcher.match("")); assertEquals(b, matcher.match("f")); assertEquals(c, matcher.match("foo")); assertEquals(d, matcher.match("foo ")); }
assertEquals("testing " + m, a, matcher.match(m + " ")); assertEquals("testing " + m, b, matcher.match(m + " \"")); assertEquals("testing " + m, c, matcher.match(m + " '")); assertEquals("testing " + m, d, matcher.match(m + " SOU")); assertEquals("testing " + m, e, matcher.match(m + " \"SOU")); assertEquals("testing " + m, f, matcher.match(m + " 'SOU")); assertEquals("testing " + m, g, matcher.match(m + " SOURCE")); assertEquals("testing " + m, h, matcher.match(m + " \"SOURCE\""));
public final CompletionMatch match(String s) throws CompletionException { return match(EmptyCompleter.getInstance(), s); }
public final CompletionMatch match(String s) throws CompletionException { return match(EmptyCompleter.getInstance(), s); }
public final CompletionMatch complete(RuntimeContext context, String line) { // WTF CompletionMatcher analyzer = descriptor.completer("main"); // Completer completer = this instanceof Completer ? (Completer)this : null; // this.context = context; try { return analyzer.match(completer, line); } catch (CompletionException e) { log.log(Level.SEVERE, "Error during completion of line " + line, e); return new CompletionMatch(Delimiter.EMPTY, Completion.create()); } finally { this.context = null; } }