@wq2/brigadier-ts 1.0.7 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.git-blame-ignore-revs +2 -0
- package/.github/workflows/publish.yml +6 -4
- package/.github/workflows/test.yml +9 -4
- package/{README.md → ReadME.md} +4 -0
- package/dist/Command.d.ts +7 -2
- package/dist/CommandDispatcher.d.ts +30 -25
- package/dist/CommandDispatcher.js +2 -297
- package/dist/CommandDispatcher.js.map +1 -0
- package/dist/ParseResults.d.ts +17 -9
- package/dist/ParseResults.js +2 -20
- package/dist/ParseResults.js.map +1 -0
- package/dist/Predicate.d.ts +5 -1
- package/dist/StringReader.d.ts +29 -25
- package/dist/StringReader.js +2 -186
- package/dist/StringReader.js.map +1 -0
- package/dist/arguments/ArgumentType.d.ts +12 -7
- package/dist/arguments/ArgumentType.js +2 -14
- package/dist/arguments/ArgumentType.js.map +1 -0
- package/dist/arguments/BoolArgumentType.d.ts +14 -9
- package/dist/arguments/BoolArgumentType.js +2 -23
- package/dist/arguments/BoolArgumentType.js.map +1 -0
- package/dist/arguments/FloatArgumentType.d.ts +13 -7
- package/dist/arguments/FloatArgumentType.js +2 -20
- package/dist/arguments/FloatArgumentType.js.map +1 -0
- package/dist/arguments/IntegerArgumentType.d.ts +13 -7
- package/dist/arguments/IntegerArgumentType.js +2 -20
- package/dist/arguments/IntegerArgumentType.js.map +1 -0
- package/dist/arguments/LongArgumentType.d.ts +15 -9
- package/dist/arguments/LongArgumentType.js +2 -22
- package/dist/arguments/LongArgumentType.js.map +1 -0
- package/dist/arguments/NumberArgumentType.d.ts +18 -13
- package/dist/arguments/NumberArgumentType.js +2 -31
- package/dist/arguments/NumberArgumentType.js.map +1 -0
- package/dist/arguments/StringArgumentType.d.ts +15 -11
- package/dist/arguments/StringArgumentType.js +2 -39
- package/dist/arguments/StringArgumentType.js.map +1 -0
- package/dist/builder/ArgumentBuilder.d.ts +32 -27
- package/dist/builder/ArgumentBuilder.js +2 -56
- package/dist/builder/ArgumentBuilder.js.map +1 -0
- package/dist/builder/LiteralArgumentBuilder.d.ts +14 -9
- package/dist/builder/LiteralArgumentBuilder.js +2 -29
- package/dist/builder/LiteralArgumentBuilder.js.map +1 -0
- package/dist/builder/RequiredArgumentBuilder.d.ts +17 -12
- package/dist/builder/RequiredArgumentBuilder.js +2 -33
- package/dist/builder/RequiredArgumentBuilder.js.map +1 -0
- package/dist/context/CommandContext.d.ts +36 -31
- package/dist/context/CommandContext.js +2 -66
- package/dist/context/CommandContext.js.map +1 -0
- package/dist/context/CommandContextBuilder.d.ts +42 -37
- package/dist/context/CommandContextBuilder.js +2 -118
- package/dist/context/CommandContextBuilder.js.map +1 -0
- package/dist/context/ParsedArgument.d.ts +12 -7
- package/dist/context/ParsedArgument.js +2 -17
- package/dist/context/ParsedArgument.js.map +1 -0
- package/dist/context/ParsedCommandNode.d.ts +13 -8
- package/dist/context/ParsedCommandNode.js +2 -16
- package/dist/context/ParsedCommandNode.js.map +1 -0
- package/dist/context/StringRange.d.ts +14 -10
- package/dist/context/StringRange.js +2 -30
- package/dist/context/StringRange.js.map +1 -0
- package/dist/context/SuggestionContext.d.ts +10 -5
- package/dist/context/SuggestionContext.js +2 -10
- package/dist/context/SuggestionContext.js.map +1 -0
- package/dist/exceptions/CommandErrorType.d.ts +12 -8
- package/dist/exceptions/CommandErrorType.js +2 -18
- package/dist/exceptions/CommandErrorType.js.map +1 -0
- package/dist/exceptions/CommandSyntaxError.d.ts +8 -4
- package/dist/exceptions/CommandSyntaxError.js +2 -20
- package/dist/exceptions/CommandSyntaxError.js.map +1 -0
- package/dist/exceptions/StandardErrorTypes.d.ts +28 -23
- package/dist/exceptions/StandardErrorTypes.js +2 -26
- package/dist/exceptions/StandardErrorTypes.js.map +1 -0
- package/dist/index.d.ts +32 -31
- package/dist/index.js +1 -47
- package/dist/suggestion/Suggestion.d.ts +16 -11
- package/dist/suggestion/Suggestion.js +2 -48
- package/dist/suggestion/Suggestion.js.map +1 -0
- package/dist/suggestion/Suggestions.d.ts +18 -13
- package/dist/suggestion/Suggestions.js +2 -56
- package/dist/suggestion/Suggestions.js.map +1 -0
- package/dist/suggestion/SuggestionsBuilder.d.ts +21 -16
- package/dist/suggestion/SuggestionsBuilder.js +2 -47
- package/dist/suggestion/SuggestionsBuilder.js.map +1 -0
- package/dist/tree/ArgumentCommandNode.d.ts +26 -21
- package/dist/tree/ArgumentCommandNode.js +2 -34
- package/dist/tree/ArgumentCommandNode.js.map +1 -0
- package/dist/tree/CommandNode.d.ts +45 -39
- package/dist/tree/CommandNode.js +2 -80
- package/dist/tree/CommandNode.js.map +1 -0
- package/dist/tree/LiteralCommandNode.d.ts +24 -19
- package/dist/tree/LiteralCommandNode.js +2 -60
- package/dist/tree/LiteralCommandNode.js.map +1 -0
- package/dist/tree/RootCommandNode.d.ts +17 -12
- package/dist/tree/RootCommandNode.js +2 -26
- package/dist/tree/RootCommandNode.js.map +1 -0
- package/dist/tree/internal.js +2 -7
- package/dist/tree/internal.js.map +1 -0
- package/dist/tree/internal2.d.ts +8 -5
- package/dist/tree/internal2.js +2 -10
- package/dist/tree/internal2.js.map +1 -0
- package/package.json +39 -33
- package/src/tree/CommandNode.ts +7 -8
- package/src/tree/internal.ts +7 -0
- package/tsconfig.json +3 -2
- package/tsdown.config.ts +10 -0
- package/dist/Command.js +0 -2
- package/dist/Predicate.js +0 -2
- package/dist/tree/internal.d.ts +0 -3
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,28 +1,33 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
1
|
+
import { Command } from "../Command.js";
|
|
2
|
+
import { Predicate } from "../Predicate.js";
|
|
3
|
+
import { CommandNode } from "../tree/CommandNode.js";
|
|
4
|
+
import { CommandContext } from "../context/CommandContext.js";
|
|
5
|
+
|
|
6
|
+
//#region src/builder/ArgumentBuilder.d.ts
|
|
7
|
+
type RedirectModifier<S> = (context: CommandContext<S>) => S | S[];
|
|
8
|
+
declare abstract class ArgumentBuilder<S, T extends ArgumentBuilder<S, T>> {
|
|
9
|
+
private arguments;
|
|
10
|
+
private command;
|
|
11
|
+
private requirement;
|
|
12
|
+
private target;
|
|
13
|
+
private modifier;
|
|
14
|
+
private forks;
|
|
15
|
+
constructor();
|
|
16
|
+
abstract getThis(): T;
|
|
17
|
+
then<A extends ArgumentBuilder<S, A>>(argument: ArgumentBuilder<S, A> | CommandNode<S>): T;
|
|
18
|
+
executes(command: Command<S>): T;
|
|
19
|
+
requires(requirement: Predicate<S>): T;
|
|
20
|
+
redirect(target: CommandNode<S>, modifier?: RedirectModifier<S>): T;
|
|
21
|
+
fork(target: CommandNode<S>, modifier: RedirectModifier<S>): T;
|
|
22
|
+
forward(target: CommandNode<S>, modifier: RedirectModifier<S>, forks: boolean): T;
|
|
23
|
+
getArguments(): CommandNode<S>[];
|
|
24
|
+
getCommand(): Command<S>;
|
|
25
|
+
getRequirement(): Predicate<S>;
|
|
26
|
+
getRedirect(): CommandNode<S>;
|
|
27
|
+
getRedirectModifier(): RedirectModifier<S>;
|
|
28
|
+
isFork(): boolean;
|
|
29
|
+
abstract build(): CommandNode<S>;
|
|
28
30
|
}
|
|
31
|
+
//#endregion
|
|
32
|
+
export { ArgumentBuilder, RedirectModifier };
|
|
33
|
+
//# sourceMappingURL=ArgumentBuilder.d.ts.map
|
|
@@ -1,56 +1,2 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
exports.ArgumentBuilder = void 0;
|
|
4
|
-
const CommandNode_1 = require("../tree/CommandNode");
|
|
5
|
-
const RootCommandNode_1 = require("../tree/RootCommandNode");
|
|
6
|
-
class ArgumentBuilder {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.arguments = new RootCommandNode_1.RootCommandNode();
|
|
9
|
-
this.requirement = async (_) => true;
|
|
10
|
-
}
|
|
11
|
-
// biome-ignore lint/suspicious/noThenProperty: proof?
|
|
12
|
-
then(argument) {
|
|
13
|
-
const child = argument instanceof CommandNode_1.CommandNode ? argument : argument.build();
|
|
14
|
-
this.arguments.addChild(child);
|
|
15
|
-
return this.getThis();
|
|
16
|
-
}
|
|
17
|
-
executes(command) {
|
|
18
|
-
this.command = command;
|
|
19
|
-
return this.getThis();
|
|
20
|
-
}
|
|
21
|
-
requires(requirement) {
|
|
22
|
-
this.requirement = requirement;
|
|
23
|
-
return this.getThis();
|
|
24
|
-
}
|
|
25
|
-
redirect(target, modifier = null) {
|
|
26
|
-
return this.forward(target, modifier, false);
|
|
27
|
-
}
|
|
28
|
-
fork(target, modifier) {
|
|
29
|
-
return this.forward(target, modifier, true);
|
|
30
|
-
}
|
|
31
|
-
forward(target, modifier, forks) {
|
|
32
|
-
this.target = target;
|
|
33
|
-
this.modifier = modifier;
|
|
34
|
-
this.forks = forks;
|
|
35
|
-
return this.getThis();
|
|
36
|
-
}
|
|
37
|
-
getArguments() {
|
|
38
|
-
return this.arguments.getChildren();
|
|
39
|
-
}
|
|
40
|
-
getCommand() {
|
|
41
|
-
return this.command;
|
|
42
|
-
}
|
|
43
|
-
getRequirement() {
|
|
44
|
-
return this.requirement;
|
|
45
|
-
}
|
|
46
|
-
getRedirect() {
|
|
47
|
-
return this.target;
|
|
48
|
-
}
|
|
49
|
-
getRedirectModifier() {
|
|
50
|
-
return this.modifier;
|
|
51
|
-
}
|
|
52
|
-
isFork() {
|
|
53
|
-
return this.forks;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
exports.ArgumentBuilder = ArgumentBuilder;
|
|
1
|
+
import{CommandNode as e}from"../tree/CommandNode.js";import{RootCommandNode as t}from"../tree/RootCommandNode.js";var n=class{constructor(){this.arguments=new t,this.requirement=async e=>!0}then(t){let n=t instanceof e?t:t.build();return this.arguments.addChild(n),this.getThis()}executes(e){return this.command=e,this.getThis()}requires(e){return this.requirement=e,this.getThis()}redirect(e,t=null){return this.forward(e,t,!1)}fork(e,t){return this.forward(e,t,!0)}forward(e,t,n){return this.target=e,this.modifier=t,this.forks=n,this.getThis()}getArguments(){return this.arguments.getChildren()}getCommand(){return this.command}getRequirement(){return this.requirement}getRedirect(){return this.target}getRedirectModifier(){return this.modifier}isFork(){return this.forks}};export{n as ArgumentBuilder};
|
|
2
|
+
//# sourceMappingURL=ArgumentBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArgumentBuilder.js","names":[],"sources":["../../src/builder/ArgumentBuilder.ts"],"sourcesContent":["import type { Command } from \"../Command\";\nimport type { CommandContext } from \"../context/CommandContext\";\nimport type { Predicate } from \"../Predicate\";\nimport { CommandNode } from \"../tree/CommandNode\";\nimport { RootCommandNode } from \"../tree/RootCommandNode\";\n\nexport type RedirectModifier<S> = (context: CommandContext<S>) => S | S[];\n\nexport abstract class ArgumentBuilder<S, T extends ArgumentBuilder<S, T>> {\n\tprivate arguments: RootCommandNode<S>;\n\tprivate command: Command<S>;\n\tprivate requirement: Predicate<S>;\n\tprivate target: CommandNode<S>;\n\tprivate modifier: RedirectModifier<S>;\n\tprivate forks: boolean;\n\n\tconstructor() {\n\t\tthis.arguments = new RootCommandNode();\n\t\tthis.requirement = async (_) => true;\n\t}\n\n\tabstract getThis(): T;\n\n\t// biome-ignore lint/suspicious/noThenProperty: proof?\n\tthen<A extends ArgumentBuilder<S, A>>(\n\t\targument: ArgumentBuilder<S, A> | CommandNode<S>,\n\t): T {\n\t\tconst child = argument instanceof CommandNode ? argument : argument.build();\n\t\tthis.arguments.addChild(child);\n\t\treturn this.getThis();\n\t}\n\n\texecutes(command: Command<S>): T {\n\t\tthis.command = command;\n\t\treturn this.getThis();\n\t}\n\n\trequires(requirement: Predicate<S>): T {\n\t\tthis.requirement = requirement;\n\t\treturn this.getThis();\n\t}\n\n\tredirect(target: CommandNode<S>, modifier: RedirectModifier<S> = null): T {\n\t\treturn this.forward(target, modifier, false);\n\t}\n\n\tfork(target: CommandNode<S>, modifier: RedirectModifier<S>): T {\n\t\treturn this.forward(target, modifier, true);\n\t}\n\n\tforward(\n\t\ttarget: CommandNode<S>,\n\t\tmodifier: RedirectModifier<S>,\n\t\tforks: boolean,\n\t): T {\n\t\tthis.target = target;\n\t\tthis.modifier = modifier;\n\t\tthis.forks = forks;\n\t\treturn this.getThis();\n\t}\n\n\tgetArguments(): CommandNode<S>[] {\n\t\treturn this.arguments.getChildren();\n\t}\n\n\tgetCommand(): Command<S> {\n\t\treturn this.command;\n\t}\n\n\tgetRequirement(): Predicate<S> {\n\t\treturn this.requirement;\n\t}\n\n\tgetRedirect(): CommandNode<S> {\n\t\treturn this.target;\n\t}\n\n\tgetRedirectModifier(): RedirectModifier<S> {\n\t\treturn this.modifier;\n\t}\n\n\tisFork(): boolean {\n\t\treturn this.forks;\n\t}\n\n\tabstract build(): CommandNode<S>;\n}\n"],"mappings":"kHAQA,IAAsB,EAAtB,KAA0E,CAQzE,aAAc,CACb,KAAK,UAAY,IAAI,EACrB,KAAK,YAAc,KAAO,IAAM,GAMjC,KACC,EACI,CACJ,IAAM,EAAQ,aAAoB,EAAc,EAAW,EAAS,OAAO,CAE3E,OADA,KAAK,UAAU,SAAS,EAAM,CACvB,KAAK,SAAS,CAGtB,SAAS,EAAwB,CAEhC,MADA,MAAK,QAAU,EACR,KAAK,SAAS,CAGtB,SAAS,EAA8B,CAEtC,MADA,MAAK,YAAc,EACZ,KAAK,SAAS,CAGtB,SAAS,EAAwB,EAAgC,KAAS,CACzE,OAAO,KAAK,QAAQ,EAAQ,EAAU,GAAM,CAG7C,KAAK,EAAwB,EAAkC,CAC9D,OAAO,KAAK,QAAQ,EAAQ,EAAU,GAAK,CAG5C,QACC,EACA,EACA,EACI,CAIJ,MAHA,MAAK,OAAS,EACd,KAAK,SAAW,EAChB,KAAK,MAAQ,EACN,KAAK,SAAS,CAGtB,cAAiC,CAChC,OAAO,KAAK,UAAU,aAAa,CAGpC,YAAyB,CACxB,OAAO,KAAK,QAGb,gBAA+B,CAC9B,OAAO,KAAK,YAGb,aAA8B,CAC7B,OAAO,KAAK,OAGb,qBAA2C,CAC1C,OAAO,KAAK,SAGb,QAAkB,CACjB,OAAO,KAAK"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import { LiteralCommandNode } from "../tree/LiteralCommandNode";
|
|
2
|
-
import { ArgumentBuilder } from "./ArgumentBuilder";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { LiteralCommandNode } from "../tree/LiteralCommandNode.js";
|
|
2
|
+
import { ArgumentBuilder } from "./ArgumentBuilder.js";
|
|
3
|
+
|
|
4
|
+
//#region src/builder/LiteralArgumentBuilder.d.ts
|
|
5
|
+
declare class LiteralArgumentBuilder<S> extends ArgumentBuilder<S, LiteralArgumentBuilder<S>> {
|
|
6
|
+
private literal;
|
|
7
|
+
constructor(literal: string);
|
|
8
|
+
getThis(): LiteralArgumentBuilder<S>;
|
|
9
|
+
getLiteral(): string;
|
|
10
|
+
build(): LiteralCommandNode<S>;
|
|
9
11
|
}
|
|
10
|
-
|
|
12
|
+
declare function literal<S = unknown>(name: string): LiteralArgumentBuilder<S>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { LiteralArgumentBuilder, literal };
|
|
15
|
+
//# sourceMappingURL=LiteralArgumentBuilder.d.ts.map
|
|
@@ -1,29 +1,2 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
exports.LiteralArgumentBuilder = void 0;
|
|
4
|
-
exports.literal = literal;
|
|
5
|
-
const LiteralCommandNode_1 = require("../tree/LiteralCommandNode");
|
|
6
|
-
const ArgumentBuilder_1 = require("./ArgumentBuilder");
|
|
7
|
-
class LiteralArgumentBuilder extends ArgumentBuilder_1.ArgumentBuilder {
|
|
8
|
-
constructor(literal) {
|
|
9
|
-
super();
|
|
10
|
-
this.literal = literal;
|
|
11
|
-
}
|
|
12
|
-
getThis() {
|
|
13
|
-
return this;
|
|
14
|
-
}
|
|
15
|
-
getLiteral() {
|
|
16
|
-
return this.literal;
|
|
17
|
-
}
|
|
18
|
-
build() {
|
|
19
|
-
const result = new LiteralCommandNode_1.LiteralCommandNode(this.getLiteral(), this.getCommand(), this.getRequirement(), this.getRedirect(), this.getRedirectModifier(), this.isFork());
|
|
20
|
-
for (const argument of this.getArguments()) {
|
|
21
|
-
result.addChild(argument);
|
|
22
|
-
}
|
|
23
|
-
return result;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
exports.LiteralArgumentBuilder = LiteralArgumentBuilder;
|
|
27
|
-
function literal(name) {
|
|
28
|
-
return new LiteralArgumentBuilder(name);
|
|
29
|
-
}
|
|
1
|
+
import{ArgumentBuilder as e}from"./ArgumentBuilder.js";import{LiteralCommandNode as t}from"../tree/LiteralCommandNode.js";var n=class extends e{constructor(e){super(),this.literal=e}getThis(){return this}getLiteral(){return this.literal}build(){let e=new t(this.getLiteral(),this.getCommand(),this.getRequirement(),this.getRedirect(),this.getRedirectModifier(),this.isFork());for(let t of this.getArguments())e.addChild(t);return e}};function r(e){return new n(e)}export{n as LiteralArgumentBuilder,r as literal};
|
|
2
|
+
//# sourceMappingURL=LiteralArgumentBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiteralArgumentBuilder.js","names":[],"sources":["../../src/builder/LiteralArgumentBuilder.ts"],"sourcesContent":["import { LiteralCommandNode } from \"../tree/LiteralCommandNode\";\nimport { ArgumentBuilder } from \"./ArgumentBuilder\";\n\nexport class LiteralArgumentBuilder<S> extends ArgumentBuilder<\n\tS,\n\tLiteralArgumentBuilder<S>\n> {\n\tprivate literal: string;\n\n\tconstructor(literal: string) {\n\t\tsuper();\n\t\tthis.literal = literal;\n\t}\n\n\tgetThis(): LiteralArgumentBuilder<S> {\n\t\treturn this;\n\t}\n\n\tgetLiteral(): string {\n\t\treturn this.literal;\n\t}\n\n\tbuild(): LiteralCommandNode<S> {\n\t\tconst result = new LiteralCommandNode<S>(\n\t\t\tthis.getLiteral(),\n\t\t\tthis.getCommand(),\n\t\t\tthis.getRequirement(),\n\t\t\tthis.getRedirect(),\n\t\t\tthis.getRedirectModifier(),\n\t\t\tthis.isFork(),\n\t\t);\n\t\tfor (const argument of this.getArguments()) {\n\t\t\tresult.addChild(argument);\n\t\t}\n\t\treturn result;\n\t}\n}\n\nexport function literal<S = unknown>(name: string): LiteralArgumentBuilder<S> {\n\treturn new LiteralArgumentBuilder(name);\n}\n"],"mappings":"0HAGA,IAAa,EAAb,cAA+C,CAG7C,CAGD,YAAY,EAAiB,CAC5B,OAAO,CACP,KAAK,QAAU,EAGhB,SAAqC,CACpC,OAAO,KAGR,YAAqB,CACpB,OAAO,KAAK,QAGb,OAA+B,CAC9B,IAAM,EAAS,IAAI,EAClB,KAAK,YAAY,CACjB,KAAK,YAAY,CACjB,KAAK,gBAAgB,CACrB,KAAK,aAAa,CAClB,KAAK,qBAAqB,CAC1B,KAAK,QAAQ,CACb,CACD,IAAK,IAAM,KAAY,KAAK,cAAc,CACzC,EAAO,SAAS,EAAS,CAE1B,OAAO,IAIT,SAAgB,EAAqB,EAAyC,CAC7E,OAAO,IAAI,EAAuB,EAAK"}
|
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { ArgumentBuilder } from "./ArgumentBuilder.js";
|
|
2
|
+
import { ArgumentType } from "../arguments/ArgumentType.js";
|
|
3
|
+
import { ArgumentCommandNode } from "../tree/ArgumentCommandNode.js";
|
|
4
|
+
|
|
5
|
+
//#region src/builder/RequiredArgumentBuilder.d.ts
|
|
6
|
+
declare class RequiredArgumentBuilder<S, T> extends ArgumentBuilder<S, RequiredArgumentBuilder<S, T>> {
|
|
7
|
+
private name;
|
|
8
|
+
private type;
|
|
9
|
+
constructor(name: string, type: ArgumentType<T>);
|
|
10
|
+
getThis(): RequiredArgumentBuilder<S, T>;
|
|
11
|
+
getName(): string;
|
|
12
|
+
getType(): ArgumentType<T>;
|
|
13
|
+
build(): ArgumentCommandNode<S, T>;
|
|
12
14
|
}
|
|
13
|
-
|
|
15
|
+
declare function argument<S = unknown, T = unknown>(name: string, type: ArgumentType<T>): RequiredArgumentBuilder<S, T>;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { RequiredArgumentBuilder, argument };
|
|
18
|
+
//# sourceMappingURL=RequiredArgumentBuilder.d.ts.map
|
|
@@ -1,33 +1,2 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
exports.RequiredArgumentBuilder = void 0;
|
|
4
|
-
exports.argument = argument;
|
|
5
|
-
const ArgumentCommandNode_1 = require("../tree/ArgumentCommandNode");
|
|
6
|
-
const ArgumentBuilder_1 = require("./ArgumentBuilder");
|
|
7
|
-
class RequiredArgumentBuilder extends ArgumentBuilder_1.ArgumentBuilder {
|
|
8
|
-
constructor(name, type) {
|
|
9
|
-
super();
|
|
10
|
-
this.name = name;
|
|
11
|
-
this.type = type;
|
|
12
|
-
}
|
|
13
|
-
getThis() {
|
|
14
|
-
return this;
|
|
15
|
-
}
|
|
16
|
-
getName() {
|
|
17
|
-
return this.name;
|
|
18
|
-
}
|
|
19
|
-
getType() {
|
|
20
|
-
return this.type;
|
|
21
|
-
}
|
|
22
|
-
build() {
|
|
23
|
-
const result = new ArgumentCommandNode_1.ArgumentCommandNode(this.getName(), this.getType(), this.getCommand(), this.getRequirement(), this.getRedirect(), this.getRedirectModifier(), this.isFork());
|
|
24
|
-
for (const argument of this.getArguments()) {
|
|
25
|
-
result.addChild(argument);
|
|
26
|
-
}
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.RequiredArgumentBuilder = RequiredArgumentBuilder;
|
|
31
|
-
function argument(name, type) {
|
|
32
|
-
return new RequiredArgumentBuilder(name, type);
|
|
33
|
-
}
|
|
1
|
+
import{ArgumentBuilder as e}from"./ArgumentBuilder.js";import{ArgumentCommandNode as t}from"../tree/ArgumentCommandNode.js";var n=class extends e{constructor(e,t){super(),this.name=e,this.type=t}getThis(){return this}getName(){return this.name}getType(){return this.type}build(){let e=new t(this.getName(),this.getType(),this.getCommand(),this.getRequirement(),this.getRedirect(),this.getRedirectModifier(),this.isFork());for(let t of this.getArguments())e.addChild(t);return e}};function r(e,t){return new n(e,t)}export{n as RequiredArgumentBuilder,r as argument};
|
|
2
|
+
//# sourceMappingURL=RequiredArgumentBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequiredArgumentBuilder.js","names":[],"sources":["../../src/builder/RequiredArgumentBuilder.ts"],"sourcesContent":["import type { ArgumentType } from \"../arguments/ArgumentType\";\nimport { ArgumentCommandNode } from \"../tree/ArgumentCommandNode\";\nimport { ArgumentBuilder } from \"./ArgumentBuilder\";\n\nexport class RequiredArgumentBuilder<S, T> extends ArgumentBuilder<\n\tS,\n\tRequiredArgumentBuilder<S, T>\n> {\n\tprivate name: string;\n\tprivate type: ArgumentType<T>;\n\n\tconstructor(name: string, type: ArgumentType<T>) {\n\t\tsuper();\n\t\tthis.name = name;\n\t\tthis.type = type;\n\t}\n\n\tgetThis(): RequiredArgumentBuilder<S, T> {\n\t\treturn this;\n\t}\n\n\tgetName(): string {\n\t\treturn this.name;\n\t}\n\n\tgetType(): ArgumentType<T> {\n\t\treturn this.type;\n\t}\n\n\tbuild(): ArgumentCommandNode<S, T> {\n\t\tconst result = new ArgumentCommandNode(\n\t\t\tthis.getName(),\n\t\t\tthis.getType(),\n\t\t\tthis.getCommand(),\n\t\t\tthis.getRequirement(),\n\t\t\tthis.getRedirect(),\n\t\t\tthis.getRedirectModifier(),\n\t\t\tthis.isFork(),\n\t\t);\n\t\tfor (const argument of this.getArguments()) {\n\t\t\tresult.addChild(argument);\n\t\t}\n\t\treturn result;\n\t}\n}\n\nexport function argument<S = unknown, T = unknown>(\n\tname: string,\n\ttype: ArgumentType<T>,\n): RequiredArgumentBuilder<S, T> {\n\treturn new RequiredArgumentBuilder(name, type);\n}\n"],"mappings":"4HAIA,IAAa,EAAb,cAAmD,CAGjD,CAID,YAAY,EAAc,EAAuB,CAChD,OAAO,CACP,KAAK,KAAO,EACZ,KAAK,KAAO,EAGb,SAAyC,CACxC,OAAO,KAGR,SAAkB,CACjB,OAAO,KAAK,KAGb,SAA2B,CAC1B,OAAO,KAAK,KAGb,OAAmC,CAClC,IAAM,EAAS,IAAI,EAClB,KAAK,SAAS,CACd,KAAK,SAAS,CACd,KAAK,YAAY,CACjB,KAAK,gBAAgB,CACrB,KAAK,aAAa,CAClB,KAAK,qBAAqB,CAC1B,KAAK,QAAQ,CACb,CACD,IAAK,IAAM,KAAY,KAAK,cAAc,CACzC,EAAO,SAAS,EAAS,CAE1B,OAAO,IAIT,SAAgB,EACf,EACA,EACgC,CAChC,OAAO,IAAI,EAAwB,EAAM,EAAK"}
|
|
@@ -1,32 +1,37 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
1
|
+
import { Command } from "../Command.js";
|
|
2
|
+
import { StringRange } from "./StringRange.js";
|
|
3
|
+
import { ParsedArgument } from "./ParsedArgument.js";
|
|
4
|
+
import { ParsedCommandNode } from "./ParsedCommandNode.js";
|
|
5
|
+
import { CommandNode } from "../tree/CommandNode.js";
|
|
6
|
+
import { RedirectModifier } from "../builder/ArgumentBuilder.js";
|
|
7
|
+
|
|
8
|
+
//#region src/context/CommandContext.d.ts
|
|
9
|
+
declare class CommandContext<S> {
|
|
10
|
+
private source;
|
|
11
|
+
private input;
|
|
12
|
+
private arguments;
|
|
13
|
+
private nodes;
|
|
14
|
+
private command;
|
|
15
|
+
private rootNode;
|
|
16
|
+
private child;
|
|
17
|
+
private range;
|
|
18
|
+
private modifier;
|
|
19
|
+
private forks;
|
|
20
|
+
constructor(source: S, input: string, parsedArguments: Map<string, ParsedArgument<unknown>>, command: Command<S>, rootNode: CommandNode<S>, nodes: ParsedCommandNode<S>[], range: StringRange, child: CommandContext<S>, modifier: RedirectModifier<S>, forks: boolean);
|
|
21
|
+
copyFor(source: S): CommandContext<S>;
|
|
22
|
+
getChild(): CommandContext<S>;
|
|
23
|
+
getLastChild(): CommandContext<S>;
|
|
24
|
+
getCommand(): Command<S>;
|
|
25
|
+
getSource(): S;
|
|
26
|
+
getRootNode(): CommandNode<S>;
|
|
27
|
+
get<R = unknown>(name: string): R;
|
|
28
|
+
getRedirectModifier(): RedirectModifier<S>;
|
|
29
|
+
getRange(): StringRange;
|
|
30
|
+
getInput(): string;
|
|
31
|
+
getNodes(): ParsedCommandNode<S>[];
|
|
32
|
+
hasNodes(): boolean;
|
|
33
|
+
isForked(): boolean;
|
|
32
34
|
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { CommandContext };
|
|
37
|
+
//# sourceMappingURL=CommandContext.d.ts.map
|
|
@@ -1,66 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.CommandContext = void 0;
|
|
4
|
-
class CommandContext {
|
|
5
|
-
constructor(source, input, parsedArguments, command, rootNode, nodes, range, child, modifier, forks) {
|
|
6
|
-
this.source = source;
|
|
7
|
-
this.input = input;
|
|
8
|
-
this.arguments = parsedArguments;
|
|
9
|
-
this.command = command;
|
|
10
|
-
this.rootNode = rootNode;
|
|
11
|
-
this.nodes = nodes;
|
|
12
|
-
this.range = range;
|
|
13
|
-
this.child = child;
|
|
14
|
-
this.modifier = modifier;
|
|
15
|
-
this.forks = forks;
|
|
16
|
-
}
|
|
17
|
-
copyFor(source) {
|
|
18
|
-
if (this.source === source) {
|
|
19
|
-
return this;
|
|
20
|
-
}
|
|
21
|
-
return new CommandContext(source, this.input, this.arguments, this.command, this.rootNode, this.nodes, this.range, this.child, this.modifier, this.forks);
|
|
22
|
-
}
|
|
23
|
-
getChild() {
|
|
24
|
-
return this.child;
|
|
25
|
-
}
|
|
26
|
-
getLastChild() {
|
|
27
|
-
let result = this;
|
|
28
|
-
while (result.getChild() != null) {
|
|
29
|
-
result = result.getChild();
|
|
30
|
-
}
|
|
31
|
-
return result;
|
|
32
|
-
}
|
|
33
|
-
getCommand() {
|
|
34
|
-
return this.command;
|
|
35
|
-
}
|
|
36
|
-
getSource() {
|
|
37
|
-
return this.source;
|
|
38
|
-
}
|
|
39
|
-
getRootNode() {
|
|
40
|
-
return this.rootNode;
|
|
41
|
-
}
|
|
42
|
-
get(name) {
|
|
43
|
-
const argument = this.arguments.get(name);
|
|
44
|
-
// TODO: Throw exception when argument is null
|
|
45
|
-
return argument.getResult();
|
|
46
|
-
}
|
|
47
|
-
getRedirectModifier() {
|
|
48
|
-
return this.modifier;
|
|
49
|
-
}
|
|
50
|
-
getRange() {
|
|
51
|
-
return this.range;
|
|
52
|
-
}
|
|
53
|
-
getInput() {
|
|
54
|
-
return this.input;
|
|
55
|
-
}
|
|
56
|
-
getNodes() {
|
|
57
|
-
return this.nodes;
|
|
58
|
-
}
|
|
59
|
-
hasNodes() {
|
|
60
|
-
return this.nodes.length !== 0;
|
|
61
|
-
}
|
|
62
|
-
isForked() {
|
|
63
|
-
return this.forks;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
exports.CommandContext = CommandContext;
|
|
1
|
+
var e=class e{constructor(e,t,n,r,i,a,o,s,c,l){this.source=e,this.input=t,this.arguments=n,this.command=r,this.rootNode=i,this.nodes=a,this.range=o,this.child=s,this.modifier=c,this.forks=l}copyFor(t){return this.source===t?this:new e(t,this.input,this.arguments,this.command,this.rootNode,this.nodes,this.range,this.child,this.modifier,this.forks)}getChild(){return this.child}getLastChild(){let e=this;for(;e.getChild()!=null;)e=e.getChild();return e}getCommand(){return this.command}getSource(){return this.source}getRootNode(){return this.rootNode}get(e){return this.arguments.get(e).getResult()}getRedirectModifier(){return this.modifier}getRange(){return this.range}getInput(){return this.input}getNodes(){return this.nodes}hasNodes(){return this.nodes.length!==0}isForked(){return this.forks}};export{e as CommandContext};
|
|
2
|
+
//# sourceMappingURL=CommandContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandContext.js","names":[],"sources":["../../src/context/CommandContext.ts"],"sourcesContent":["import type { RedirectModifier } from \"../builder/ArgumentBuilder\";\nimport type { Command } from \"../Command\";\nimport type { CommandNode } from \"../tree/CommandNode\";\nimport type { ParsedArgument } from \"./ParsedArgument\";\nimport type { ParsedCommandNode } from \"./ParsedCommandNode\";\nimport type { StringRange } from \"./StringRange\";\n\nexport class CommandContext<S> {\n\tprivate source: S;\n\tprivate input: string;\n\tprivate arguments: Map<string, ParsedArgument<unknown>>;\n\tprivate nodes: ParsedCommandNode<S>[];\n\tprivate command: Command<S>;\n\tprivate rootNode: CommandNode<S>;\n\tprivate child: CommandContext<S>;\n\tprivate range: StringRange;\n\tprivate modifier: RedirectModifier<S>;\n\tprivate forks: boolean;\n\n\tconstructor(\n\t\tsource: S,\n\t\tinput: string,\n\t\tparsedArguments: Map<string, ParsedArgument<unknown>>,\n\t\tcommand: Command<S>,\n\t\trootNode: CommandNode<S>,\n\t\tnodes: ParsedCommandNode<S>[],\n\t\trange: StringRange,\n\t\tchild: CommandContext<S>,\n\t\tmodifier: RedirectModifier<S>,\n\t\tforks: boolean,\n\t) {\n\t\tthis.source = source;\n\t\tthis.input = input;\n\t\tthis.arguments = parsedArguments;\n\t\tthis.command = command;\n\t\tthis.rootNode = rootNode;\n\t\tthis.nodes = nodes;\n\t\tthis.range = range;\n\t\tthis.child = child;\n\t\tthis.modifier = modifier;\n\t\tthis.forks = forks;\n\t}\n\n\tcopyFor(source: S): CommandContext<S> {\n\t\tif (this.source === source) {\n\t\t\treturn this;\n\t\t}\n\t\treturn new CommandContext<S>(\n\t\t\tsource,\n\t\t\tthis.input,\n\t\t\tthis.arguments,\n\t\t\tthis.command,\n\t\t\tthis.rootNode,\n\t\t\tthis.nodes,\n\t\t\tthis.range,\n\t\t\tthis.child,\n\t\t\tthis.modifier,\n\t\t\tthis.forks,\n\t\t);\n\t}\n\n\tgetChild(): CommandContext<S> {\n\t\treturn this.child;\n\t}\n\n\tgetLastChild(): CommandContext<S> {\n\t\tlet result: CommandContext<S> = this;\n\t\twhile (result.getChild() != null) {\n\t\t\tresult = result.getChild();\n\t\t}\n\t\treturn result;\n\t}\n\n\tgetCommand(): Command<S> {\n\t\treturn this.command;\n\t}\n\n\tgetSource(): S {\n\t\treturn this.source;\n\t}\n\n\tgetRootNode(): CommandNode<S> {\n\t\treturn this.rootNode;\n\t}\n\n\tget<R = unknown>(name: string): R {\n\t\tconst argument = this.arguments.get(name);\n\t\t// TODO: Throw exception when argument is null\n\t\treturn argument.getResult() as R;\n\t}\n\n\tgetRedirectModifier(): RedirectModifier<S> {\n\t\treturn this.modifier;\n\t}\n\n\tgetRange(): StringRange {\n\t\treturn this.range;\n\t}\n\n\tgetInput(): string {\n\t\treturn this.input;\n\t}\n\n\tgetNodes(): ParsedCommandNode<S>[] {\n\t\treturn this.nodes;\n\t}\n\n\thasNodes(): boolean {\n\t\treturn this.nodes.length !== 0;\n\t}\n\n\tisForked(): boolean {\n\t\treturn this.forks;\n\t}\n}\n"],"mappings":"AAOA,IAAa,EAAb,MAAa,CAAkB,CAY9B,YACC,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACC,CACD,KAAK,OAAS,EACd,KAAK,MAAQ,EACb,KAAK,UAAY,EACjB,KAAK,QAAU,EACf,KAAK,SAAW,EAChB,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,SAAW,EAChB,KAAK,MAAQ,EAGd,QAAQ,EAA8B,CAIrC,OAHI,KAAK,SAAW,EACZ,KAED,IAAI,EACV,EACA,KAAK,MACL,KAAK,UACL,KAAK,QACL,KAAK,SACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,SACL,KAAK,MACL,CAGF,UAA8B,CAC7B,OAAO,KAAK,MAGb,cAAkC,CACjC,IAAI,EAA4B,KAChC,KAAO,EAAO,UAAU,EAAI,MAC3B,EAAS,EAAO,UAAU,CAE3B,OAAO,EAGR,YAAyB,CACxB,OAAO,KAAK,QAGb,WAAe,CACd,OAAO,KAAK,OAGb,aAA8B,CAC7B,OAAO,KAAK,SAGb,IAAiB,EAAiB,CAGjC,OAFiB,KAAK,UAAU,IAAI,EAAK,CAEzB,WAAW,CAG5B,qBAA2C,CAC1C,OAAO,KAAK,SAGb,UAAwB,CACvB,OAAO,KAAK,MAGb,UAAmB,CAClB,OAAO,KAAK,MAGb,UAAmC,CAClC,OAAO,KAAK,MAGb,UAAoB,CACnB,OAAO,KAAK,MAAM,SAAW,EAG9B,UAAoB,CACnB,OAAO,KAAK"}
|
|
@@ -1,38 +1,43 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
1
|
+
import { Command } from "../Command.js";
|
|
2
|
+
import { StringRange } from "./StringRange.js";
|
|
3
|
+
import { CommandDispatcher } from "../CommandDispatcher.js";
|
|
4
|
+
import { ParsedArgument } from "./ParsedArgument.js";
|
|
5
|
+
import { ParsedCommandNode } from "./ParsedCommandNode.js";
|
|
6
|
+
import { SuggestionContext } from "./SuggestionContext.js";
|
|
7
|
+
import { CommandNode } from "../tree/CommandNode.js";
|
|
8
|
+
import { CommandContext } from "./CommandContext.js";
|
|
9
|
+
|
|
10
|
+
//#region src/context/CommandContextBuilder.d.ts
|
|
11
|
+
declare class CommandContextBuilder<S> {
|
|
12
|
+
private source;
|
|
13
|
+
private arguments;
|
|
14
|
+
private rootNode;
|
|
15
|
+
private dispatcher;
|
|
16
|
+
private command;
|
|
17
|
+
private child;
|
|
18
|
+
private range;
|
|
19
|
+
private nodes;
|
|
20
|
+
private modifier;
|
|
21
|
+
private forks;
|
|
22
|
+
constructor(dispatcher: CommandDispatcher<S>, source: S, rootNode: CommandNode<S>, start: number);
|
|
23
|
+
withSource(source: S): CommandContextBuilder<S>;
|
|
24
|
+
getSource(): S;
|
|
25
|
+
getRootNode(): CommandNode<S>;
|
|
26
|
+
withArgument(name: string, argument: ParsedArgument<unknown>): CommandContextBuilder<S>;
|
|
27
|
+
getArguments(): Map<string, ParsedArgument<unknown>>;
|
|
28
|
+
withChild(child: CommandContextBuilder<S>): CommandContextBuilder<S>;
|
|
29
|
+
getChild(): CommandContextBuilder<S>;
|
|
30
|
+
getLastChild(): CommandContextBuilder<S>;
|
|
31
|
+
withCommand(command: Command<S>): CommandContextBuilder<S>;
|
|
32
|
+
getCommand(): Command<S>;
|
|
33
|
+
withNode(node: CommandNode<S>, range: StringRange): CommandContextBuilder<S>;
|
|
34
|
+
getNodes(): ParsedCommandNode<S>[];
|
|
35
|
+
copy(): CommandContextBuilder<S>;
|
|
36
|
+
build(input: string): CommandContext<S>;
|
|
37
|
+
getDispatcher(): CommandDispatcher<S>;
|
|
38
|
+
getRange(): StringRange;
|
|
39
|
+
findSuggestionContext(cursor: number): SuggestionContext<S>;
|
|
38
40
|
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { CommandContextBuilder };
|
|
43
|
+
//# sourceMappingURL=CommandContextBuilder.d.ts.map
|
|
@@ -1,118 +1,2 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
exports.CommandContextBuilder = void 0;
|
|
4
|
-
const CommandContext_1 = require("./CommandContext");
|
|
5
|
-
const ParsedCommandNode_1 = require("./ParsedCommandNode");
|
|
6
|
-
const StringRange_1 = require("./StringRange");
|
|
7
|
-
const SuggestionContext_1 = require("./SuggestionContext");
|
|
8
|
-
class CommandContextBuilder {
|
|
9
|
-
constructor(dispatcher, source, rootNode, start) {
|
|
10
|
-
this.dispatcher = dispatcher;
|
|
11
|
-
this.source = source;
|
|
12
|
-
this.rootNode = rootNode;
|
|
13
|
-
this.range = StringRange_1.StringRange.at(start);
|
|
14
|
-
this.nodes = [];
|
|
15
|
-
this.arguments = new Map();
|
|
16
|
-
}
|
|
17
|
-
withSource(source) {
|
|
18
|
-
this.source = source;
|
|
19
|
-
return this;
|
|
20
|
-
}
|
|
21
|
-
getSource() {
|
|
22
|
-
return this.source;
|
|
23
|
-
}
|
|
24
|
-
getRootNode() {
|
|
25
|
-
return this.rootNode;
|
|
26
|
-
}
|
|
27
|
-
withArgument(name, argument) {
|
|
28
|
-
this.arguments.set(name, argument);
|
|
29
|
-
return this;
|
|
30
|
-
}
|
|
31
|
-
getArguments() {
|
|
32
|
-
return this.arguments;
|
|
33
|
-
}
|
|
34
|
-
withChild(child) {
|
|
35
|
-
this.child = child;
|
|
36
|
-
return this;
|
|
37
|
-
}
|
|
38
|
-
getChild() {
|
|
39
|
-
return this.child;
|
|
40
|
-
}
|
|
41
|
-
getLastChild() {
|
|
42
|
-
let result = this;
|
|
43
|
-
while (result.getChild() != null) {
|
|
44
|
-
result = result.getChild();
|
|
45
|
-
}
|
|
46
|
-
return result;
|
|
47
|
-
}
|
|
48
|
-
withCommand(command) {
|
|
49
|
-
this.command = command;
|
|
50
|
-
return this;
|
|
51
|
-
}
|
|
52
|
-
getCommand() {
|
|
53
|
-
return this.command;
|
|
54
|
-
}
|
|
55
|
-
withNode(node, range) {
|
|
56
|
-
this.nodes.push(new ParsedCommandNode_1.ParsedCommandNode(node, range));
|
|
57
|
-
this.range = StringRange_1.StringRange.encompassing(this.range, range);
|
|
58
|
-
this.modifier = node.getRedirectModifier();
|
|
59
|
-
this.forks = node.isFork();
|
|
60
|
-
return this;
|
|
61
|
-
}
|
|
62
|
-
getNodes() {
|
|
63
|
-
return this.nodes;
|
|
64
|
-
}
|
|
65
|
-
copy() {
|
|
66
|
-
const copy = new CommandContextBuilder(this.dispatcher, this.source, this.rootNode, this.range.getStart());
|
|
67
|
-
copy.command = this.command;
|
|
68
|
-
copy.child = this.child;
|
|
69
|
-
copy.range = this.range;
|
|
70
|
-
copy.nodes.push(...this.nodes);
|
|
71
|
-
this.arguments.forEach((v, k) => {
|
|
72
|
-
copy.arguments.set(k, v);
|
|
73
|
-
});
|
|
74
|
-
return copy;
|
|
75
|
-
}
|
|
76
|
-
build(input) {
|
|
77
|
-
const child = this.child == null ? null : this.child.build(input);
|
|
78
|
-
return new CommandContext_1.CommandContext(this.source, input, this.arguments, this.command, this.rootNode, this.nodes, this.range, child, this.modifier, this.forks);
|
|
79
|
-
}
|
|
80
|
-
getDispatcher() {
|
|
81
|
-
return this.dispatcher;
|
|
82
|
-
}
|
|
83
|
-
getRange() {
|
|
84
|
-
return this.range;
|
|
85
|
-
}
|
|
86
|
-
findSuggestionContext(cursor) {
|
|
87
|
-
if (this.range.getStart() <= cursor) {
|
|
88
|
-
if (this.range.getEnd() < cursor) {
|
|
89
|
-
if (this.child != null) {
|
|
90
|
-
return this.child.findSuggestionContext(cursor);
|
|
91
|
-
}
|
|
92
|
-
else if (this.nodes.length > 0) {
|
|
93
|
-
const last = this.nodes[this.nodes.length - 1];
|
|
94
|
-
return new SuggestionContext_1.SuggestionContext(last.getNode(), last.getRange().getEnd() + 1);
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
return new SuggestionContext_1.SuggestionContext(this.rootNode, this.range.getStart());
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
let prev = this.rootNode;
|
|
102
|
-
for (const node of this.nodes) {
|
|
103
|
-
const nodeRange = node.getRange();
|
|
104
|
-
if (nodeRange.getStart() <= cursor && cursor <= nodeRange.getEnd()) {
|
|
105
|
-
return new SuggestionContext_1.SuggestionContext(prev, nodeRange.getStart());
|
|
106
|
-
}
|
|
107
|
-
prev = node.getNode();
|
|
108
|
-
}
|
|
109
|
-
if (prev === null) {
|
|
110
|
-
throw new Error("Can't find node before cursor");
|
|
111
|
-
}
|
|
112
|
-
return new SuggestionContext_1.SuggestionContext(prev, this.range.getStart());
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
throw new Error("Can't find node before cursor");
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
exports.CommandContextBuilder = CommandContextBuilder;
|
|
1
|
+
import{StringRange as e}from"./StringRange.js";import{CommandContext as t}from"./CommandContext.js";import{ParsedCommandNode as n}from"./ParsedCommandNode.js";import{SuggestionContext as r}from"./SuggestionContext.js";var i=class i{constructor(t,n,r,i){this.dispatcher=t,this.source=n,this.rootNode=r,this.range=e.at(i),this.nodes=[],this.arguments=new Map}withSource(e){return this.source=e,this}getSource(){return this.source}getRootNode(){return this.rootNode}withArgument(e,t){return this.arguments.set(e,t),this}getArguments(){return this.arguments}withChild(e){return this.child=e,this}getChild(){return this.child}getLastChild(){let e=this;for(;e.getChild()!=null;)e=e.getChild();return e}withCommand(e){return this.command=e,this}getCommand(){return this.command}withNode(t,r){return this.nodes.push(new n(t,r)),this.range=e.encompassing(this.range,r),this.modifier=t.getRedirectModifier(),this.forks=t.isFork(),this}getNodes(){return this.nodes}copy(){let e=new i(this.dispatcher,this.source,this.rootNode,this.range.getStart());return e.command=this.command,e.child=this.child,e.range=this.range,e.nodes.push(...this.nodes),this.arguments.forEach((t,n)=>{e.arguments.set(n,t)}),e}build(e){let n=this.child==null?null:this.child.build(e);return new t(this.source,e,this.arguments,this.command,this.rootNode,this.nodes,this.range,n,this.modifier,this.forks)}getDispatcher(){return this.dispatcher}getRange(){return this.range}findSuggestionContext(e){if(this.range.getStart()<=e)if(this.range.getEnd()<e){if(this.child!=null)return this.child.findSuggestionContext(e);if(this.nodes.length>0){let e=this.nodes[this.nodes.length-1];return new r(e.getNode(),e.getRange().getEnd()+1)}else return new r(this.rootNode,this.range.getStart())}else{let t=this.rootNode;for(let n of this.nodes){let i=n.getRange();if(i.getStart()<=e&&e<=i.getEnd())return new r(t,i.getStart());t=n.getNode()}if(t===null)throw Error(`Can't find node before cursor`);return new r(t,this.range.getStart())}throw Error(`Can't find node before cursor`)}};export{i as CommandContextBuilder};
|
|
2
|
+
//# sourceMappingURL=CommandContextBuilder.js.map
|