meld
Version:
Meld: A template language for LLM prompts
34 lines (30 loc) • 1.3 kB
JavaScript
// analyze-imports.mjs
import { parse } from 'meld-ast';
async function analyzeImports() {
const testCases = [
{ name: 'HOME_PATH', code: '@import [$~/dev/meld/examples/example-import.meld]' },
{ name: 'PROJECT_PATH', code: '@import [$./examples/example-import.meld]' },
{ name: 'SIMPLE_PATH', code: '@import [example-import.meld]' },
{ name: 'PATH_VAR_REF', code: '@path mypath = "$PROJECTPATH/examples/example-import.meld"\n@import [${mypath}]' },
{ name: 'PATH_VAR_DIRECT', code: '@path mypath = "$PROJECTPATH/examples/example-import.meld"\n@import [$mypath]' }
];
const options = { trackLocations: true, validateNodes: true, structuredPaths: true };
for (const testCase of testCases) {
console.log(`\n===== ${testCase.name} =====`);
try {
const result = await parse(testCase.code, options);
const directive = result.ast.find(node =>
node.type === 'Directive' && node.directive?.kind === 'import'
);
if (directive) {
console.log(JSON.stringify(directive.directive.path, null, 2));
} else {
console.log('No import directive found');
}
} catch (error) {
console.error(`Error parsing ${testCase.name}:`, error.message);
}
}
}
// Run the analysis
analyzeImports().catch(console.error);