@jondotsoy/flags
Version:
A Javascript arguments processor
41 lines • 3.88 kB
JavaScript
import { Builder } from "./Builder.js";
import { Spec, } from "./Spec.js";
import { transformRefine } from "./refiners/transformRefine.js";
import { flagMatchRefine } from "./refiners/flagMatchRefine.js";
import { keyValueFlagRefine } from "./refiners/keyValueFlagRefine.js";
import { keyValueAccumulate } from "./accumulates/keyValueAccumulate.js";
export class KeyValueFlagBuilder extends Builder {
initial(initial) {
return new KeyValueFlagBuilder(this.spec.initial(initial));
}
accumulate(accumulate) {
return new KeyValueFlagBuilder(this.spec.accumulate(accumulate));
}
refine(refine) {
return new KeyValueFlagBuilder(this.spec.refine(refine));
}
metadata(values) {
return new KeyValueFlagBuilder(this.spec.metadata(values));
}
describe(description) {
return this.metadata({ description });
}
required() {
return this.metadata({ required: true });
}
delimiter(delimiter) {
// Get the matches from metadata
const matches = this.spec.hasMetadata("matches")
? this.spec.getMetadata("matches")
: [];
// Re-create the builder with new delimiter
const newSpec = Spec.create().metadata({ delimiter, matches });
const specWithFlag = newSpec.refine(flagMatchRefine);
const specWithKeyValue = specWithFlag.refine(keyValueFlagRefine);
return new KeyValueFlagBuilder(specWithKeyValue.accumulate(keyValueAccumulate));
}
transform(transform) {
return new KeyValueFlagBuilder(this.spec.refine(transformRefine(transform)));
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS2V5VmFsdWVGbGFnQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idWlsZGVycy9LZXlWYWx1ZUZsYWdCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUNMLElBQUksR0FJTCxNQUFNLFdBQVcsQ0FBQztBQUduQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXpFLE1BQU0sT0FBTyxtQkFBOEMsU0FBUSxPQUFVO0lBQzNFLE9BQU8sQ0FBSSxPQUFVO1FBQ25CLE9BQU8sSUFBSSxtQkFBbUIsQ0FDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUErQixDQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxVQUFzQjtRQUMvQixPQUFPLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFNLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsTUFBTSxDQUFJLE1BQWM7UUFDdEIsT0FBTyxJQUFJLG1CQUFtQixDQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQThCLENBQ3RELENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQTJCO1FBQ2xDLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQU0sQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxRQUFRLENBQUMsV0FBbUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxTQUFTLENBQUMsU0FBaUI7UUFDekIsZ0NBQWdDO1FBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztZQUM5QyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQVcsU0FBUyxDQUFDO1lBQzVDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFUCwyQ0FBMkM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckQsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDakUsT0FBTyxJQUFJLG1CQUFtQixDQUM1QixnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FDaEQsQ0FBQztJQUNKLENBQUM7SUFFRCxTQUFTLENBQUksU0FBa0Q7UUFDN0QsT0FBTyxJQUFJLG1CQUFtQixDQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBSSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDaEQsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9