From c138f74460bafaba3da55a65f3942bb6f95b1d99 Mon Sep 17 00:00:00 2001 From: undergroundwires Date: Wed, 12 Jun 2024 12:36:40 +0200 Subject: [PATCH] Refactor to unify scripts/categories as Executable This commit consolidates scripts and categories under a unified 'Executable' concept. This simplifies the architecture and improves code readability. - Introduce subfolders within `src/domain` to segregate domain elements. - Update class and interface names by removing the 'I' prefix in alignment with new coding standards. - Replace 'Node' with 'Executable' to clarify usage; reserve 'Node' exclusively for the UI's tree component. --- docs/application.md | 4 +- docs/collection-files.md | 17 ++- .../State/Code/Event/CodeChangedEvent.ts | 16 +-- .../State/Code/Event/ICodeChangedEvent.ts | 10 +- .../Filter/Result/AppliedFilterResult.ts | 8 +- .../State/Filter/Result/FilterResult.ts | 7 +- .../Filter/Strategy/LinearFilterStrategy.ts | 15 +-- .../Selection/Category/CategorySelection.ts | 6 +- .../ScriptToCategorySelectionMapper.ts | 6 +- .../Script/DebouncedScriptSelection.ts | 10 +- .../State/Selection/Script/ScriptSelection.ts | 4 +- .../State/Selection/Script/SelectedScript.ts | 6 +- .../Selection/Script/UserSelectedScript.ts | 4 +- .../Parser/CategoryCollectionParser.ts | 9 +- .../CategoryCollectionSpecificUtilities.ts | 32 ++++++ .../Parser/{ => Executable}/CategoryParser.ts | 97 ++++++++-------- .../{ => Executable}/DocumentationParser.ts | 0 .../Expressions/Expression/Expression.ts | 2 +- .../Expression/ExpressionEvaluationContext.ts | 0 .../Expression/ExpressionPosition.ts | 0 .../Expression/ExpressionPositionFactory.ts | 0 .../Expressions/Expression/IExpression.ts | 0 .../Expressions/ExpressionsCompiler.ts | 2 +- .../Expressions/IExpressionsCompiler.ts | 0 .../Parser/CompositeExpressionParser.ts | 0 .../Expressions/Parser/IExpressionParser.ts | 0 .../Parser/Regex/ExpressionRegexBuilder.ts | 0 .../Expressions/Parser/Regex/RegexParser.ts | 0 .../Compiler/Expressions/Pipes/IPipe.ts | 0 .../Expressions/Pipes/IPipelineCompiler.ts | 0 .../PipeDefinitions/EscapeDoubleQuotes.ts | 0 .../Pipes/PipeDefinitions/InlinePowerShell.ts | 0 .../Compiler/Expressions/Pipes/PipeFactory.ts | 0 .../Expressions/Pipes/PipelineCompiler.ts | 0 .../ParameterSubstitutionParser.ts | 2 +- .../Expressions/SyntaxParsers/WithParser.ts | 6 +- .../Call/Argument/FunctionCallArgument.ts | 0 .../FunctionCallArgumentCollection.ts | 0 .../Call/Argument/IFunctionCallArgument.ts | 0 .../IFunctionCallArgumentCollection.ts | 0 .../CodeSegmentJoin/CodeSegmentMerger.ts | 0 .../NewlineCodeSegmentMerger.ts | 0 .../Function/Call/Compiler/CompiledCode.ts | 0 .../FunctionCallCompilationContext.ts | 2 +- .../Call/Compiler/FunctionCallCompiler.ts | 2 +- .../Compiler/FunctionCallSequenceCompiler.ts | 2 +- .../AdaptiveFunctionCallCompiler.ts | 0 .../Compiler/SingleCall/SingleCallCompiler.ts | 0 .../SingleCall/SingleCallCompilerStrategy.ts | 4 +- .../Strategies/Argument/ArgumentCompiler.ts | 4 +- .../NestedFunctionArgumentCompiler.ts | 16 +-- .../Strategies/InlineFunctionCallCompiler.ts | 10 +- .../Strategies/NestedFunctionCallCompiler.ts | 8 +- .../Compiler/Function/Call/FunctionCall.ts | 0 .../Function/Call/FunctionCallParser.ts | 0 .../Function/Call/ParsedFunctionCall.ts | 0 .../Compiler/Function/ISharedFunction.ts | 0 .../Function/ISharedFunctionCollection.ts | 0 .../Function/ISharedFunctionsParser.ts | 2 +- .../Function/Parameter/FunctionParameter.ts | 0 .../Parameter/FunctionParameterCollection.ts | 0 .../FunctionParameterCollectionFactory.ts | 0 .../Function/Parameter/IFunctionParameter.ts | 0 .../Parameter/IFunctionParameterCollection.ts | 0 .../Function/Shared/ParameterNameValidator.ts | 0 .../Compiler/Function/SharedFunction.ts | 0 .../Function/SharedFunctionCollection.ts | 0 .../Function/SharedFunctionsParser.ts | 10 +- .../Script/Compiler/IScriptCompiler.ts | 4 +- .../Script/Compiler/ScriptCompiler.ts | 14 +-- .../{ => Executable}/Script/ScriptParser.ts | 64 +++++------ .../Script/Validation/CodeValidator.ts | 0 .../Script/Validation/ICodeLine.ts | 0 .../Script/Validation/ICodeValidationRule.ts | 0 .../Script/Validation/ICodeValidator.ts | 0 .../Validation/Rules/NoDuplicatedLines.ts | 2 +- .../Script/Validation/Rules/NoEmptyLines.ts | 0 .../Validation/Syntax/BatchFileSyntax.ts | 2 +- .../Validation/Syntax/ILanguageSyntax.ts | 0 .../Validation/Syntax/ISyntaxFactory.ts | 0 .../Validation/Syntax/ShellScriptSyntax.ts | 2 +- .../Script/Validation/Syntax/SyntaxFactory.ts | 2 +- .../Validation/ExecutableErrorContext.ts | 24 ++++ .../ExecutableErrorContextMessage.ts | 35 ++++++ .../Executable/Validation/ExecutableType.ts | 4 + .../Validation/ExecutableValidator.ts} | 34 +++--- .../Parser/NodeValidation/NodeData.ts | 3 - .../NodeValidation/NodeDataErrorContext.ts | 25 ----- .../NodeDataErrorContextMessage.ts | 35 ------ .../Parser/NodeValidation/NodeDataType.ts | 4 - .../Script/CategoryCollectionParseContext.ts | 23 ---- .../Script/ICategoryCollectionParseContext.ts | 7 -- .../ScriptingDefinition/CodeSubstituter.ts | 14 +-- .../collections/collection.yaml.d.ts | 12 +- src/domain/CategoryCollection.ts | 42 +++---- src/domain/Executables/Category/Category.ts | 11 ++ .../Category/CollectionCategory.ts} | 24 ++-- .../Documentable.ts} | 2 +- src/domain/Executables/Executable.ts | 6 + .../Code/DistinctReversibleScriptCode.ts} | 4 +- .../Script/Code/ScriptCode.ts} | 2 +- .../Script/Code/ScriptCodeFactory.ts | 12 ++ .../Script/CollectionScript.ts} | 10 +- .../Script}/RecommendationLevel.ts | 0 src/domain/Executables/Script/Script.ts | 11 ++ src/domain/ICategory.ts | 15 --- src/domain/ICategoryCollection.ts | 18 +-- src/domain/IScript.ts | 12 -- src/domain/ScriptCodeFactory.ts | 10 -- .../components/Code/TheCodeArea.vue | 4 +- .../RecommendationStatusHandler.ts | 6 +- .../Scripts/Menu/Revert/TheRevertSelector.vue | 6 +- .../View/Cards/CardSelectionIndicator.vue | 4 +- .../CategoryNodeMetadataConverter.ts | 17 +-- .../TreeViewAdapter/UseTreeViewFilterEvent.ts | 12 +- .../Filter/Result/AppliedFilterResult.spec.ts | 11 +- .../Strategy/LinearFilterStrategy.spec.ts | 16 +-- .../ScriptToCategorySelectionMapper.spec.ts | 7 +- .../Script/DebouncedScriptSelection.spec.ts | 4 +- .../Parser/CategoryCollectionParser.spec.ts | 8 +- ...ategoryCollectionSpecificUtilities.spec.ts | 100 +++++++++++++++++ .../{ => Executable}/CategoryParser.spec.ts | 106 +++++++++--------- .../DocumentationParser.spec.ts | 17 +-- .../Expressions/Expression/Expression.spec.ts | 12 +- .../ExpressionEvaluationContext.spec.ts | 6 +- .../Expression/ExpressionPosition.spec.ts | 2 +- .../ExpressionPositionFactory.spec.ts | 4 +- .../Expressions/ExpressionsCompiler.spec.ts | 6 +- .../Parser/CompositeExpressionParser.spec.ts | 6 +- .../Regex/ExpressionRegexBuilder.spec.ts | 2 +- .../Parser/Regex/RegexParser.spec.ts | 14 +-- .../EscapeDoubleQuotes.spec.ts | 2 +- .../PipeDefinitions/InlinePowerShell.spec.ts | 2 +- .../Pipes/PipeDefinitions/PipeTestRunner.ts | 2 +- .../Expressions/Pipes/PipeFactory.spec.ts | 2 +- .../Pipes/PipelineCompiler.spec.ts | 6 +- .../ParameterSubstitutionParser.spec.ts | 4 +- .../SyntaxParsers/SyntaxParserTestsRunner.ts | 4 +- .../SyntaxParsers/WithParser.spec.ts | 4 +- .../Argument/FunctionCallArgument.spec.ts | 2 +- .../FunctionCallArgumentCollection.spec.ts | 4 +- .../NewlineCodeSegmentMerger.spec.ts | 4 +- .../FunctionCallSequenceCompiler.spec.ts | 12 +- .../NestedFunctionCallCompiler.spec.ts | 8 +- .../AdaptiveFunctionCallCompiler.spec.ts | 10 +- .../NestedFunctionArgumentCompiler.spec.ts | 10 +- .../InlineFunctionCallCompiler.spec.ts | 4 +- .../Function/Call/FunctionCallParser.spec.ts | 2 +- .../Function/Call/ParsedFunctionCall.spec.ts | 4 +- .../Function/ExpectFunctionBodyType.ts | 4 +- .../Parameter/FunctionParameter.spec.ts | 2 +- .../FunctionParameterCollection.spec.ts | 2 +- ...FunctionParameterCollectionFactory.spec.ts | 4 +- .../Compiler/Function/SharedFunction.spec.ts | 8 +- .../Function/SharedFunctionCollection.spec.ts | 2 +- .../Function/SharedFunctionsParser.spec.ts | 14 +-- .../Compiler/ParameterNameTestRunner.ts | 0 .../Script/Compiler/ScriptCompiler.spec.ts | 18 +-- .../Script/ScriptParser.spec.ts | 84 +++++++------- .../Script/Validation/CodeValidator.spec.ts | 6 +- .../Rules/CodeValidationRuleTestRunner.ts | 4 +- .../Rules/NoDuplicatedLines.spec.ts | 4 +- .../Validation/Rules/NoEmptyLines.spec.ts | 2 +- .../Syntax/ConcreteSyntaxes.spec.ts | 6 +- .../Validation/Syntax/SyntaxFactory.spec.ts | 6 +- .../DataValidationTestScenarioGenerator.ts | 0 .../Validation/ExecutableValidationTester.ts} | 71 ++++++------ .../Validation/ExecutableValidator.spec.ts} | 88 +++++++-------- .../CategoryCollectionParseContext.spec.ts | 71 ------------ .../CodeSubstituter.spec.ts | 2 +- tests/unit/domain/CategoryCollection.spec.ts | 8 +- .../Category/CollectionCategory.spec.ts} | 23 ++-- .../Script/Code}/ScriptCode.spec.ts | 8 +- .../Script/CollectionScript.spec.ts} | 16 +-- tests/unit/domain/ScriptCodeFactory.spec.ts | 2 +- .../RecommendationStatusHandler.spec.ts | 8 +- .../RecommendationStatusTestScenario.ts | 2 +- .../Reverter/CategoryReverter.spec.ts | 6 +- .../CategoryNodeMetadataConverter.spec.ts | 16 +-- .../UseSelectedScriptNodeIds.spec.ts | 8 +- .../UseTreeViewFilterEvent.spec.ts | 8 +- .../unit/shared/Stubs/ArgumentCompilerStub.ts | 6 +- .../CategoryCollectionParseContextStub.ts | 21 ---- ...CategoryCollectionSpecificUtilitiesStub.ts | 22 ++++ .../Stubs/CategoryCollectionStateStub.ts | 4 +- .../shared/Stubs/CategoryCollectionStub.ts | 30 ++--- tests/unit/shared/Stubs/CategoryDataStub.ts | 6 +- .../unit/shared/Stubs/CategoryFactoryStub.ts | 10 +- tests/unit/shared/Stubs/CategoryStub.ts | 27 ++--- .../unit/shared/Stubs/CodeChangedEventStub.ts | 8 +- .../shared/Stubs/CodeSegmentMergerStub.ts | 4 +- .../shared/Stubs/CodeValidationRuleStub.ts | 4 +- tests/unit/shared/Stubs/CodeValidatorStub.ts | 4 +- tests/unit/shared/Stubs/CollectionDataStub.ts | 2 +- tests/unit/shared/Stubs/CompiledCodeStub.ts | 2 +- .../Stubs/ExecutableErrorContextStub.ts | 11 ++ ...atorStub.ts => ExecutableValidatorStub.ts} | 22 ++-- .../Stubs/ExpressionEvaluationContextStub.ts | 6 +- .../unit/shared/Stubs/ExpressionParserStub.ts | 4 +- tests/unit/shared/Stubs/ExpressionStub.ts | 8 +- .../shared/Stubs/ExpressionsCompilerStub.ts | 6 +- tests/unit/shared/Stubs/FilterResultStub.ts | 12 +- .../FunctionCallArgumentCollectionStub.ts | 4 +- .../shared/Stubs/FunctionCallArgumentStub.ts | 2 +- .../FunctionCallCompilationContextStub.ts | 8 +- .../shared/Stubs/FunctionCallCompilerStub.ts | 8 +- tests/unit/shared/Stubs/FunctionCallStub.ts | 2 +- tests/unit/shared/Stubs/FunctionCodeStub.ts | 2 +- .../Stubs/FunctionParameterCollectionStub.ts | 4 +- .../shared/Stubs/FunctionParameterStub.ts | 2 +- tests/unit/shared/Stubs/LanguageSyntaxStub.ts | 2 +- .../shared/Stubs/NodeDataErrorContextStub.ts | 11 -- tests/unit/shared/Stubs/PipeFactoryStub.ts | 4 +- tests/unit/shared/Stubs/PipeStub.ts | 2 +- .../unit/shared/Stubs/PipelineCompilerStub.ts | 2 +- .../shared/Stubs/ScriptCodeFactoryStub.ts | 6 +- tests/unit/shared/Stubs/ScriptCodeStub.ts | 4 +- tests/unit/shared/Stubs/ScriptCompilerStub.ts | 10 +- tests/unit/shared/Stubs/ScriptDataStub.ts | 2 +- tests/unit/shared/Stubs/ScriptFactoryStub.ts | 10 +- tests/unit/shared/Stubs/ScriptParserStub.ts | 12 +- .../unit/shared/Stubs/ScriptSelectionStub.ts | 4 +- tests/unit/shared/Stubs/ScriptStub.ts | 10 +- tests/unit/shared/Stubs/SelectedScriptStub.ts | 6 +- .../Stubs/SharedFunctionCollectionStub.ts | 4 +- tests/unit/shared/Stubs/SharedFunctionStub.ts | 6 +- .../shared/Stubs/SharedFunctionsParserStub.ts | 6 +- .../Stubs/SingleCallCompilerStrategyStub.ts | 10 +- .../shared/Stubs/SingleCallCompilerStub.ts | 8 +- tests/unit/shared/Stubs/SyntaxFactoryStub.ts | 18 +++ 230 files changed, 1120 insertions(+), 1039 deletions(-) create mode 100644 src/application/Parser/Executable/CategoryCollectionSpecificUtilities.ts rename src/application/Parser/{ => Executable}/CategoryParser.ts (53%) rename src/application/Parser/{ => Executable}/DocumentationParser.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/Expression/Expression.ts (97%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/Expression/ExpressionEvaluationContext.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/Expression/ExpressionPosition.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/Expression/ExpressionPositionFactory.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/Expression/IExpression.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/ExpressionsCompiler.ts (98%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/IExpressionsCompiler.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/Parser/CompositeExpressionParser.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/Parser/IExpressionParser.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/Parser/Regex/ExpressionRegexBuilder.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/Parser/Regex/RegexParser.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/Pipes/IPipe.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/Pipes/IPipelineCompiler.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/Pipes/PipeDefinitions/EscapeDoubleQuotes.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/Pipes/PipeDefinitions/InlinePowerShell.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/Pipes/PipeFactory.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/Pipes/PipelineCompiler.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/SyntaxParsers/ParameterSubstitutionParser.ts (89%) rename src/application/Parser/{ => Executable}/Script/Compiler/Expressions/SyntaxParsers/WithParser.ts (95%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Argument/FunctionCallArgument.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Argument/FunctionCallArgumentCollection.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Argument/IFunctionCallArgument.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Argument/IFunctionCallArgumentCollection.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/CodeSegmentJoin/CodeSegmentMerger.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/CodeSegmentJoin/NewlineCodeSegmentMerger.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/CompiledCode.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/FunctionCallCompilationContext.ts (85%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/FunctionCallCompiler.ts (82%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/FunctionCallSequenceCompiler.ts (93%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/SingleCall/AdaptiveFunctionCallCompiler.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/SingleCall/SingleCallCompiler.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/SingleCall/SingleCallCompilerStrategy.ts (63%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/SingleCall/Strategies/Argument/ArgumentCompiler.ts (56%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/SingleCall/Strategies/Argument/NestedFunctionArgumentCompiler.ts (82%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/SingleCall/Strategies/InlineFunctionCallCompiler.ts (74%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/SingleCall/Strategies/NestedFunctionCallCompiler.ts (81%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/FunctionCall.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/FunctionCallParser.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Call/ParsedFunctionCall.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/ISharedFunction.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/ISharedFunctionCollection.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/ISharedFunctionsParser.ts (73%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Parameter/FunctionParameter.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Parameter/FunctionParameterCollection.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Parameter/FunctionParameterCollectionFactory.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Parameter/IFunctionParameter.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Parameter/IFunctionParameterCollection.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/Shared/ParameterNameValidator.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/SharedFunction.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/SharedFunctionCollection.ts (100%) rename src/application/Parser/{ => Executable}/Script/Compiler/Function/SharedFunctionsParser.ts (93%) rename src/application/Parser/{ => Executable}/Script/Compiler/IScriptCompiler.ts (53%) rename src/application/Parser/{ => Executable}/Script/Compiler/ScriptCompiler.ts (82%) rename src/application/Parser/{ => Executable}/Script/ScriptParser.ts (60%) rename src/application/Parser/{ => Executable}/Script/Validation/CodeValidator.ts (100%) rename src/application/Parser/{ => Executable}/Script/Validation/ICodeLine.ts (100%) rename src/application/Parser/{ => Executable}/Script/Validation/ICodeValidationRule.ts (100%) rename src/application/Parser/{ => Executable}/Script/Validation/ICodeValidator.ts (100%) rename src/application/Parser/{ => Executable}/Script/Validation/Rules/NoDuplicatedLines.ts (93%) rename src/application/Parser/{ => Executable}/Script/Validation/Rules/NoEmptyLines.ts (100%) rename src/application/Parser/{ => Executable}/Script/Validation/Syntax/BatchFileSyntax.ts (73%) rename src/application/Parser/{ => Executable}/Script/Validation/Syntax/ILanguageSyntax.ts (100%) rename src/application/Parser/{ => Executable}/Script/Validation/Syntax/ISyntaxFactory.ts (100%) rename src/application/Parser/{ => Executable}/Script/Validation/Syntax/ShellScriptSyntax.ts (61%) rename src/application/Parser/{ => Executable}/Script/Validation/Syntax/SyntaxFactory.ts (85%) create mode 100644 src/application/Parser/Executable/Validation/ExecutableErrorContext.ts create mode 100644 src/application/Parser/Executable/Validation/ExecutableErrorContextMessage.ts create mode 100644 src/application/Parser/Executable/Validation/ExecutableType.ts rename src/application/Parser/{NodeValidation/NodeDataValidator.ts => Executable/Validation/ExecutableValidator.ts} (52%) delete mode 100644 src/application/Parser/NodeValidation/NodeData.ts delete mode 100644 src/application/Parser/NodeValidation/NodeDataErrorContext.ts delete mode 100644 src/application/Parser/NodeValidation/NodeDataErrorContextMessage.ts delete mode 100644 src/application/Parser/NodeValidation/NodeDataType.ts delete mode 100644 src/application/Parser/Script/CategoryCollectionParseContext.ts delete mode 100644 src/application/Parser/Script/ICategoryCollectionParseContext.ts create mode 100644 src/domain/Executables/Category/Category.ts rename src/domain/{Category.ts => Executables/Category/CollectionCategory.ts} (62%) rename src/domain/{IDocumentable.ts => Executables/Documentable.ts} (56%) create mode 100644 src/domain/Executables/Executable.ts rename src/domain/{ScriptCode.ts => Executables/Script/Code/DistinctReversibleScriptCode.ts} (84%) rename src/domain/{IScriptCode.ts => Executables/Script/Code/ScriptCode.ts} (65%) create mode 100644 src/domain/Executables/Script/Code/ScriptCodeFactory.ts rename src/domain/{Script.ts => Executables/Script/CollectionScript.ts} (79%) rename src/domain/{ => Executables/Script}/RecommendationLevel.ts (100%) create mode 100644 src/domain/Executables/Script/Script.ts delete mode 100644 src/domain/ICategory.ts delete mode 100644 src/domain/IScript.ts delete mode 100644 src/domain/ScriptCodeFactory.ts create mode 100644 tests/unit/application/Parser/Executable/CategoryCollectionSpecificUtilities.spec.ts rename tests/unit/application/Parser/{ => Executable}/CategoryParser.spec.ts (82%) rename tests/unit/application/Parser/{ => Executable}/DocumentationParser.spec.ts (80%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/Expression/Expression.spec.ts (93%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/Expression/ExpressionEvaluationContext.spec.ts (84%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/Expression/ExpressionPosition.spec.ts (98%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/Expression/ExpressionPositionFactory.spec.ts (94%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/ExpressionsCompiler.spec.ts (97%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/Parser/CompositeExpressionParser.spec.ts (89%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/Parser/Regex/ExpressionRegexBuilder.spec.ts (98%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/Parser/Regex/RegexParser.spec.ts (95%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/Pipes/PipeDefinitions/EscapeDoubleQuotes.spec.ts (87%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/Pipes/PipeDefinitions/InlinePowerShell.spec.ts (99%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/Pipes/PipeDefinitions/PipeTestRunner.ts (81%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/Pipes/PipeFactory.spec.ts (96%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/Pipes/PipelineCompiler.spec.ts (92%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/SyntaxParsers/ParameterSubstitutionParser.spec.ts (90%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/SyntaxParsers/SyntaxParserTestsRunner.ts (95%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Expressions/SyntaxParsers/WithParser.spec.ts (97%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Argument/FunctionCallArgument.spec.ts (92%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Argument/FunctionCallArgumentCollection.spec.ts (96%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/CodeSegmentJoin/NewlineCodeSegmentMerger.spec.ts (93%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/FunctionCallSequenceCompiler.spec.ts (93%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/SingleCall/NestedFunctionCallCompiler.spec.ts (96%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/SingleCall/Strategies/AdaptiveFunctionCallCompiler.spec.ts (95%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/SingleCall/Strategies/Argument/NestedFunctionArgumentCompiler.spec.ts (96%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/Call/Compiler/SingleCall/Strategies/InlineFunctionCallCompiler.spec.ts (97%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/Call/FunctionCallParser.spec.ts (96%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/Call/ParsedFunctionCall.spec.ts (90%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/ExpectFunctionBodyType.ts (80%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/Parameter/FunctionParameter.spec.ts (90%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/Parameter/FunctionParameterCollection.spec.ts (94%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/Parameter/FunctionParameterCollectionFactory.spec.ts (83%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/SharedFunction.spec.ts (95%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/SharedFunctionCollection.spec.ts (95%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/Function/SharedFunctionsParser.spec.ts (95%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/ParameterNameTestRunner.ts (100%) rename tests/unit/application/Parser/{ => Executable}/Script/Compiler/ScriptCompiler.spec.ts (93%) rename tests/unit/application/Parser/{ => Executable}/Script/ScriptParser.spec.ts (85%) rename tests/unit/application/Parser/{ => Executable}/Script/Validation/CodeValidator.spec.ts (95%) rename tests/unit/application/Parser/{ => Executable}/Script/Validation/Rules/CodeValidationRuleTestRunner.ts (86%) rename tests/unit/application/Parser/{ => Executable}/Script/Validation/Rules/NoDuplicatedLines.spec.ts (93%) rename tests/unit/application/Parser/{ => Executable}/Script/Validation/Rules/NoEmptyLines.spec.ts (94%) rename tests/unit/application/Parser/{ => Executable}/Script/Validation/Syntax/ConcreteSyntaxes.spec.ts (69%) rename tests/unit/application/Parser/{ => Executable}/Script/Validation/Syntax/SyntaxFactory.spec.ts (62%) rename tests/unit/application/Parser/{ => Executable/Validation}/DataValidationTestScenarioGenerator.ts (100%) rename tests/unit/application/Parser/{NodeDataValidationTester.ts => Executable/Validation/ExecutableValidationTester.ts} (71%) rename tests/unit/application/Parser/{NodeValidation/NodeDataValidator.spec.ts => Executable/Validation/ExecutableValidator.spec.ts} (65%) delete mode 100644 tests/unit/application/Parser/Script/CategoryCollectionParseContext.spec.ts rename tests/unit/domain/{Category.spec.ts => Executables/Category/CollectionCategory.spec.ts} (90%) rename tests/unit/domain/{ => Executables/Script/Code}/ScriptCode.spec.ts (92%) rename tests/unit/domain/{Script.spec.ts => Executables/Script/CollectionScript.spec.ts} (88%) delete mode 100644 tests/unit/shared/Stubs/CategoryCollectionParseContextStub.ts create mode 100644 tests/unit/shared/Stubs/CategoryCollectionSpecificUtilitiesStub.ts create mode 100644 tests/unit/shared/Stubs/ExecutableErrorContextStub.ts rename tests/unit/shared/Stubs/{NodeDataValidatorStub.ts => ExecutableValidatorStub.ts} (60%) delete mode 100644 tests/unit/shared/Stubs/NodeDataErrorContextStub.ts create mode 100644 tests/unit/shared/Stubs/SyntaxFactoryStub.ts diff --git a/docs/application.md b/docs/application.md index 7c73635e..6e2eb4f8 100644 --- a/docs/application.md +++ b/docs/application.md @@ -41,5 +41,5 @@ Application layer compiles templating syntax during parsing to create the end sc The steps to extend the templating syntax: -1. Add a new parser under [SyntaxParsers](./../src/application/Parser/Script/Compiler/Expressions/SyntaxParsers) where you can look at other parsers to understand more. -2. Register your in [CompositeExpressionParser](./../src/application/Parser/Script/Compiler/Expressions/Parser/CompositeExpressionParser.ts). +1. Add a new parser under [SyntaxParsers](./../src/application/Parser/Executable/Script/Compiler/Expressions/SyntaxParsers) where you can look at other parsers to understand more. +2. Register your in [CompositeExpressionParser](./../src/application/Parser/Executable/Script/Compiler/Expressions/Parser/CompositeExpressionParser.ts). diff --git a/docs/collection-files.md b/docs/collection-files.md index d58d2d1e..f3239728 100644 --- a/docs/collection-files.md +++ b/docs/collection-files.md @@ -28,11 +28,20 @@ Related documentation: - `scripting:` ***[`ScriptingDefinition`](#scriptingdefinition)*** **(required)** - Sets the scripting language for all inline code used within the collection. -### `Category` +### Executables + +An Executable is a logical entity that can + +- execute once compiled, +- include a `docs` property for documentation. + +It's either [Category](#category) or a [Script](#script). + +#### `Category` Represents a logical group of scripts and subcategories. -#### `Category` syntax +##### `Category` syntax - `category:` *`string`* **(required)** - Name of the category. @@ -43,7 +52,7 @@ Represents a logical group of scripts and subcategories. - `docs`: *`string`* | `[`*`string`*`, ... ]` - Markdown-formatted documentation related to the category. -### `Script` +#### `Script` Represents an individual tweak. @@ -58,7 +67,7 @@ Types (like [functions](#function)): 📖 For detailed guidelines, see [Script Guidelines](./script-guidelines.md). -#### `Script` syntax +##### `Script` syntax - `name`: *`string`* **(required)** - Script name. diff --git a/src/application/Context/State/Code/Event/CodeChangedEvent.ts b/src/application/Context/State/Code/Event/CodeChangedEvent.ts index b15f0a53..aa99a78e 100644 --- a/src/application/Context/State/Code/Event/CodeChangedEvent.ts +++ b/src/application/Context/State/Code/Event/CodeChangedEvent.ts @@ -1,4 +1,4 @@ -import type { IScript } from '@/domain/IScript'; +import type { Script } from '@/domain/Executables/Script/Script'; import type { ICodePosition } from '@/application/Context/State/Code/Position/ICodePosition'; import type { SelectedScript } from '@/application/Context/State/Selection/Script/SelectedScript'; import type { ICodeChangedEvent } from './ICodeChangedEvent'; @@ -6,13 +6,13 @@ import type { ICodeChangedEvent } from './ICodeChangedEvent'; export class CodeChangedEvent implements ICodeChangedEvent { public readonly code: string; - public readonly addedScripts: ReadonlyArray; + public readonly addedScripts: ReadonlyArray