public final CompletionMatch match(String s) throws CompletionException { return match(EmptyCompleter.getInstance(), s); }
public final CompletionMatcher<T> completer() { return new CompletionMatcher<T>(this); }
public CompletionMatch match(Completer completer, String s) throws CompletionException { return getCompletion(completer, s).complete(); }
/** * 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 final CompletionMatcher<T> completer() { return new CompletionMatcher<T>(this); }
public CompletionMatch match(Completer completer, String s) throws CompletionException { return getCompletion(completer, s).complete(); }
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 final CompletionMatcher<T> completer() { return new CompletionMatcher<T>(this); }
public CompletionMatch match(Completer completer, String s) throws CompletionException { return getCompletion(completer, s).complete(); }
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 final CompletionMatcher<T> completer(String mainName) { return new CompletionMatcher<T>(mainName, this); }
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 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 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")); }