CommandProvider
コマンドを実装するカスタムを作成しました( cphr
):
public void _cphr(CommandInterpreter ci){
/* ... *
}
これは、指定されたクエリをサイファー実行エンジンに転送するだけです。したがって、呼び出しの例:
osgi>cphr <query>
次のようにエンジンに渡されます。
ExecutionEngine eng = new ExecutionEngine(...);
ExecutionResult er = eng.execute(query);
CommandProvider
-Interface はトークンベースのアクセス用に最適化されているため、その実装では をトークンに分割し、それquery
を反復処理できci.nextArgument()
ます。
たとえば、一重引用符は取り除かれ、保持するには明示的にエスケープする必要があるため、これは問題があります。したがって、有効なクエリは次のとおりです。
cphr start n=node(*) where n.pathTime='2013-11-05-10-36-7' return n
構文エラーになります。
Invalid input '5': expected '.', whitespace, '[', node labels, "=~", IN, IS, '*', '/', '%', '^', '+', '-', '<', '>', "<=", ">=", '=', "<>", "!=", AND, XOR, OR, START, MATCH, MERGE, CREATE, SET, DELETE, REMOVE, FOREACH, WITH, RETURN, UNION, ';' or end of input (line 1, column 44) " start n=node(*) where n.pathTime=2013-11-05-10-36-7 return n"
一方、エスケープされたクエリは機能します。
cphr start n=node(*) where n.pathTime=\'2013-11-05-10-36-7\' return n
CommandProvider
ユーザーが実装で提供したコマンドラインにアクセスする方法はありますか?