meld
Version:
Meld: A template language for LLM prompts
158 lines (144 loc) • 3.75 kB
text/typescript
import {
DirectiveError,
DirectiveErrorCode
} from '@services/pipeline/DirectiveService/errors/DirectiveError.js';
import { ErrorSeverity } from '@core/errors';
import {
createExample,
createInvalidExample,
combineExamples,
SyntaxExampleGroup
} from '@core/syntax/helpers';
/**
* Collection of atomic @import directive examples
*
* These are the most basic examples that serve as building blocks for more complex examples
*/
export const atomic = {
basicImport: createExample(
'Basic import directive',
` [imported.meld]`
),
projectPathImport: createExample(
'Import with project path variable',
` [$PROJECTPATH/samples/nested.meld]`
),
projectPathShortImport: createExample(
'Import with project path shorthand',
` [$./samples/nested.meld]`
),
homePathImport: createExample(
'Import with home path variable',
` [$HOMEPATH/examples/basic.meld]`
),
homePathShortImport: createExample(
'Import with home path shorthand',
` [$~/examples/basic.meld]`
),
homePathNestedImport: createExample(
'Import with home path and deeply nested path',
` [$~/dev/meld/examples/example-import.meld]`
)
};
/**
* Collection of combined @import directive examples
*
* These examples demonstrate more complex import scenarios
*/
export const combinations = {
variablePath: combineExamples(
'Import with path variable',
createExample(
'Path definition',
` templates = "$PROJECTPATH/templates"`
),
createExample(
'Import using path variable',
` [$templates/variables.meld]`
)
),
multiLevelImports: combineExamples(
'Multi-level imports',
createExample(
'Level 1 import',
` level1 = "Level 1 imported"
[level2.meld]`
),
createExample(
'Level 2 import (in level2.meld)',
` level2 = "Level 2 imported"
[level3.meld]`
),
createExample(
'Level 3 import (in level3.meld)',
` level3 = "Level 3 imported"`
)
),
nestedImports: combineExamples(
'Nested imports',
createExample(
'Top level import',
` [utils.meld]`
),
createExample(
'Second level import',
` [helpers.meld]`
)
),
circularity: combineExamples(
'Circular reference examples',
createExample(
'circular1.meld',
` [$./circular2.meld]`
),
createExample(
'circular2.meld',
` [$./circular1.meld]`
)
)
};
/**
* Collection of invalid @import directive examples
*
* These examples demonstrate invalid import scenarios
*/
export const invalid = {
fileNotFound: createInvalidExample(
'Non-existent file path',
` [non-existent-file.meld]`,
{
type: DirectiveError,
severity: ErrorSeverity.Recoverable,
code: DirectiveErrorCode.FILE_NOT_FOUND,
message: 'File not found: non-existent-file.meld'
}
),
circularImport: createInvalidExample(
'Circular import reference',
` [circular1.meld]`,
{
type: DirectiveError,
severity: ErrorSeverity.Fatal,
code: DirectiveErrorCode.CIRCULAR_REFERENCE,
message: 'Circular import detected'
}
),
invalidSyntax: createInvalidExample(
'Invalid import syntax',
` without-brackets.meld`,
{
type: DirectiveError,
severity: ErrorSeverity.Fatal,
code: DirectiveErrorCode.VALIDATION_FAILED,
message: 'Invalid import syntax'
}
)
};
/**
* Complete collection of @import directive examples
*/
export const importDirectiveExamples: SyntaxExampleGroup = {
atomic,
combinations,
invalid
};