coffeehaml 0.4.2 → 0.6.0
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/README.md +38 -10
- package/dist/ast.d.ts +3 -1
- package/dist/ast.d.ts.map +1 -1
- package/dist/ast.js +2 -1
- package/dist/ast.js.map +1 -1
- package/dist/cli.js +306 -34
- package/dist/cli.js.map +1 -1
- package/dist/compiler.js +8 -10
- package/dist/compiler.js.map +1 -1
- package/dist/emitter.js +116 -14
- package/dist/emitter.js.map +1 -1
- package/dist/expressions.d.ts +7 -4
- package/dist/expressions.d.ts.map +1 -1
- package/dist/expressions.js +20 -7
- package/dist/expressions.js.map +1 -1
- package/dist/lexer.d.ts.map +1 -1
- package/dist/lexer.js +26 -21
- package/dist/lexer.js.map +1 -1
- package/dist/parser.d.ts +7 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +46 -3
- package/dist/parser.js.map +1 -1
- package/dist/vite-plugin.d.ts.map +1 -1
- package/dist/vite-plugin.js +11 -1
- package/dist/vite-plugin.js.map +1 -1
- package/package.json +1 -1
- package/dist/parser.js.bak +0 -431
package/README.md
CHANGED
|
@@ -79,9 +79,23 @@ expressions like `{onClick: handler}` or `{disabled: !connected}`).
|
|
|
79
79
|
### CLI
|
|
80
80
|
|
|
81
81
|
```bash
|
|
82
|
-
|
|
82
|
+
# Scaffold a new project (interactive wizard)
|
|
83
|
+
npx coffeehaml init
|
|
84
|
+
|
|
85
|
+
# One-shot compile
|
|
86
|
+
npx coffeehaml compile app.chaml -o app.js --wrap component
|
|
87
|
+
|
|
88
|
+
# Watch mode — recompiles on every change
|
|
89
|
+
npx coffeehaml watch src/ --wrap observer
|
|
83
90
|
```
|
|
84
91
|
|
|
92
|
+
| Flag | Description |
|
|
93
|
+
|------|-------------|
|
|
94
|
+
| `init` | Interactive project scaffold (Vite, dependency, samples) |
|
|
95
|
+
| `-o`, `--output` | Write output to file |
|
|
96
|
+
| `--source-map` | Emit inline source map |
|
|
97
|
+
| `--wrap <mode>` | Wrap mode: `component`, `observer`, or comma-separated HOC list |
|
|
98
|
+
|
|
85
99
|
Accepts `.coffeehaml`, `.cohaml`, and `.chaml` extensions.
|
|
86
100
|
|
|
87
101
|
### Vite plugin
|
|
@@ -120,8 +134,9 @@ console.log(result.code);
|
|
|
120
134
|
| `#id` | Element ID |
|
|
121
135
|
| `{attr: val}` / `(attr: val)` | Attributes (CoffeeScript expressions) |
|
|
122
136
|
| `{onClick}` | Shorthand — `onClick={onClick}` |
|
|
123
|
-
| `= expression` | Inline output (escaped) |
|
|
137
|
+
| `= expression` | Inline output (escaped); continuation via indented lines |
|
|
124
138
|
| `- if`, `- unless` | Conditional |
|
|
139
|
+
| `- code` | Arbitrary CoffeeScript statements; continuation via indented lines |
|
|
125
140
|
| `- for x in xs` | Loop → `.map()` |
|
|
126
141
|
| `- else`, `- else if` | Chain conditionals |
|
|
127
142
|
| `-# comment` | Haml comment (stripped) |
|
|
@@ -136,7 +151,8 @@ Full grammar: [`docs/grammar.md`](docs/grammar.md)
|
|
|
136
151
|
|
|
137
152
|
- **Zero runtime** — the compiler is the only artifact
|
|
138
153
|
- **Emitter-agnostic AST** — future backends possible (Solid, Vue, Mithril)
|
|
139
|
-
- **
|
|
154
|
+
- **Source-located errors** — line/column hints for every compile failure
|
|
155
|
+
- **Source maps** — debug in CoffeeHaml, not generated JS
|
|
140
156
|
- **Incremental compilation** — Vite HMR out of the box
|
|
141
157
|
- **No invention** — reuse Haml and CoffeeScript conventions
|
|
142
158
|
|
|
@@ -144,25 +160,37 @@ Full grammar: [`docs/grammar.md`](docs/grammar.md)
|
|
|
144
160
|
|
|
145
161
|
## Status
|
|
146
162
|
|
|
147
|
-
**v0.
|
|
148
|
-
|
|
149
|
-
|
|
163
|
+
**v0.6.0 — production beta.** The compiler pipeline (Lexer → Parser → Emitter)
|
|
164
|
+
is complete. Source maps, component wrapping, spread attributes, arrow
|
|
165
|
+
continuation (`= items.map (item) ->`), statement/expression continuation,
|
|
166
|
+
source-located errors, `coffeehaml init` scaffold, Fast Refresh annotations,
|
|
167
|
+
and multi-error parser recovery are all functional.
|
|
150
168
|
|
|
151
169
|
| Feature | Status |
|
|
152
170
|
|---------|--------|
|
|
153
171
|
| Elements, components, implicit divs | ✅ |
|
|
154
172
|
| `.class` / `#id` modifiers | ✅ |
|
|
155
|
-
| `{attr: val}` / `(attr: val)`
|
|
173
|
+
| `{attr: val}` / `(attr: val)` + spread `{props...}` | ✅ |
|
|
156
174
|
| Inline `= expression` output | ✅ |
|
|
175
|
+
| `=` expression continuation (indented) | ✅ |
|
|
176
|
+
| `-` statement continuation (indented) | ✅ |
|
|
157
177
|
| `- if` / `- unless` / `- else` / `- else if` | ✅ |
|
|
158
178
|
| `- for item in items` → `.map()` | ✅ |
|
|
159
179
|
| `- while` | ✅ |
|
|
160
180
|
| Haml/HTML comments | ✅ |
|
|
161
181
|
| `:filter` blocks | ✅ |
|
|
182
|
+
| Prologue passthrough (`import`, `@decorator`) | ✅ |
|
|
183
|
+
| Component / HOC wrapping (`wrap: 'observer'`) | ✅ |
|
|
162
184
|
| Vite plugin with HMR | ✅ |
|
|
163
|
-
|
|
|
164
|
-
|
|
|
165
|
-
|
|
|
185
|
+
| CLI `--wrap` flag | ✅ |
|
|
186
|
+
| CLI `watch` mode | ✅ |
|
|
187
|
+
| CLI `init` scaffold | ✅ |
|
|
188
|
+
| `= expr ->` arrow continuation | ✅ |
|
|
189
|
+
| Source-located error messages | ✅ |
|
|
190
|
+
| Multi-error parser recovery | ✅ |
|
|
191
|
+
| Source maps | ✅ |
|
|
192
|
+
| CoffeeScript expression compilation | ✅ (requires peer dep) |
|
|
193
|
+
| React Fast Refresh annotations | ✅ |
|
|
166
194
|
|
|
167
195
|
---
|
|
168
196
|
|
package/dist/ast.d.ts
CHANGED
|
@@ -79,7 +79,9 @@ export declare class Output extends Node {
|
|
|
79
79
|
readonly kind: "Output";
|
|
80
80
|
readonly expression: Expression;
|
|
81
81
|
readonly outputKind: OutputKind;
|
|
82
|
-
|
|
82
|
+
/** Indented continuation children (TEXT = code continuation, others = nested elements). */
|
|
83
|
+
readonly children: Node[];
|
|
84
|
+
constructor(expression: Expression, outputKind: OutputKind, location?: SourceLocation, children?: Node[]);
|
|
83
85
|
}
|
|
84
86
|
export declare class ControlFlow extends Node {
|
|
85
87
|
readonly kind: "ControlFlow";
|
package/dist/ast.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"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"}
|
package/dist/ast.js
CHANGED
|
@@ -61,11 +61,12 @@ export class Text extends Node {
|
|
|
61
61
|
}
|
|
62
62
|
// ─── Output ────────────────────────────────────────────────
|
|
63
63
|
export class Output extends Node {
|
|
64
|
-
constructor(expression, outputKind, location) {
|
|
64
|
+
constructor(expression, outputKind, location, children = []) {
|
|
65
65
|
super(location);
|
|
66
66
|
this.kind = 'Output';
|
|
67
67
|
this.expression = expression;
|
|
68
68
|
this.outputKind = outputKind;
|
|
69
|
+
this.children = children;
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
72
|
// ─── ControlFlow ───────────────────────────────────────────
|
package/dist/ast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"AAmBA,8DAA8D;AAE9D,MAAM,OAAgB,IAAI;IAIxB,YAAY,QAAyB;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,8DAA8D;AAE9D;iDACiD;AACjD,MAAM,OAAO,UAAU;IAKrB,YAAY,MAAc,EAAE,MAAY;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAED,8DAA8D;AAE9D,MAAM,OAAO,QAAS,SAAQ,IAAI;IAKhC,YAAY,QAAgB,EAAE,WAAqB,EAAE,EAAE,QAAyB;QAC9E,KAAK,CAAC,QAAQ,CAAC,CAAC;QALT,SAAI,GAAG,UAAmB,CAAC;QAMlC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,8DAA8D;AAE9D,MAAM,OAAO,OAAQ,SAAQ,IAAI;IAU/B,YACE,GAAwB,EACxB,OAQI,EAAE;QAEN,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QArBd,SAAI,GAAG,SAAkB,CAAC;QAsBjC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC;IACnD,CAAC;CACF;AAkBD,8DAA8D;AAE9D,qEAAqE;AACrE,MAAM,OAAO,WAAY,SAAQ,IAAI;IAOnC,YACE,OAMI,EAAE;QAEN,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAfd,SAAI,GAAG,aAAsB,CAAC;QAgBrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IACtC,CAAC;CACF;AAED,8DAA8D;AAE9D,MAAM,OAAO,IAAK,SAAQ,IAAI;IAI5B,YAAY,KAAa,EAAE,QAAyB;QAClD,KAAK,CAAC,QAAQ,CAAC,CAAC;QAJT,SAAI,GAAG,MAAe,CAAC;QAK9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,8DAA8D;AAE9D,MAAM,OAAO,MAAO,SAAQ,IAAI;
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { compileFile } from './index.js';
|
|
3
|
-
import { writeFileSync } from 'fs';
|
|
4
|
-
import { readFileSync } from 'fs';
|
|
3
|
+
import { writeFileSync, readFileSync, existsSync, watch, statSync, readdirSync } from 'fs';
|
|
5
4
|
import { fileURLToPath } from 'url';
|
|
6
|
-
import { dirname, join } from 'path';
|
|
5
|
+
import { dirname, join, resolve, relative } from 'path';
|
|
6
|
+
import { createInterface } from 'readline';
|
|
7
7
|
function getVersion() {
|
|
8
8
|
try {
|
|
9
9
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
@@ -20,67 +20,339 @@ if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
|
|
|
20
20
|
Haml structure. CoffeeScript semantics. React runtime.
|
|
21
21
|
|
|
22
22
|
Usage:
|
|
23
|
-
coffeehaml
|
|
23
|
+
coffeehaml init scaffold a new project
|
|
24
|
+
coffeehaml compile <input> [-o <output>] [--source-map] [--wrap <mode>]
|
|
25
|
+
coffeehaml watch <input> [-o <output>] [--source-map] [--wrap <mode>]
|
|
24
26
|
|
|
25
27
|
Options:
|
|
26
28
|
-o, --output <file> Write output to file instead of stdout
|
|
27
29
|
--source-map Emit inline source map
|
|
30
|
+
--wrap <mode> Wrap output: 'component', 'observer', or comma-separated HOC list
|
|
28
31
|
-h, --help Show this help
|
|
29
32
|
|
|
30
33
|
Examples:
|
|
31
|
-
coffeehaml
|
|
32
|
-
coffeehaml compile app.
|
|
34
|
+
coffeehaml init # interactive project scaffold
|
|
35
|
+
coffeehaml compile app.chaml -o app.js --wrap component
|
|
36
|
+
coffeehaml compile app.chaml # prints to stdout
|
|
37
|
+
coffeehaml watch src/ --wrap observer # watch and recompile on change
|
|
33
38
|
`);
|
|
34
39
|
process.exit(0);
|
|
35
40
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
function parseWrapFlag(args) {
|
|
42
|
+
const idx = args.indexOf('--wrap');
|
|
43
|
+
if (idx === -1)
|
|
44
|
+
return undefined;
|
|
45
|
+
const val = args[idx + 1];
|
|
46
|
+
if (!val || val.startsWith('-'))
|
|
47
|
+
return undefined;
|
|
48
|
+
// 'component' and 'observer' are shorthands; comma-separated → string[]
|
|
49
|
+
if (val === 'component' || val === 'observer')
|
|
50
|
+
return val;
|
|
51
|
+
if (val === 'none')
|
|
52
|
+
return 'none';
|
|
53
|
+
return val.split(',').map(s => s.trim()).filter(Boolean);
|
|
54
|
+
}
|
|
55
|
+
function parseArgs(args) {
|
|
43
56
|
const outIdx = args.indexOf('-o') !== -1 ? args.indexOf('-o') : args.indexOf('--output');
|
|
44
|
-
const output = outIdx !== -1 ? args[outIdx + 1] :
|
|
57
|
+
const output = outIdx !== -1 ? args[outIdx + 1] : undefined;
|
|
45
58
|
const sourceMap = args.includes('--source-map');
|
|
46
|
-
const
|
|
59
|
+
const wrap = parseWrapFlag(args);
|
|
60
|
+
return { input: args[0], output, sourceMap, wrap };
|
|
61
|
+
}
|
|
62
|
+
function formatError(err, filename) {
|
|
63
|
+
const loc = err.location;
|
|
64
|
+
let msg = loc
|
|
65
|
+
? `${filename}:${loc.start.line + 1}:${loc.start.column + 1}: [${err.code}] ${err.message}`
|
|
66
|
+
: `[${err.code}] ${err.message}`;
|
|
67
|
+
if (err.hint)
|
|
68
|
+
msg += `\n Hint: ${err.hint}`;
|
|
69
|
+
return msg;
|
|
70
|
+
}
|
|
71
|
+
function formatWarning(warn, filename) {
|
|
72
|
+
const loc = warn.location;
|
|
73
|
+
if (loc) {
|
|
74
|
+
return `Warning: ${filename}:${loc.start.line + 1}:${loc.start.column + 1}: ${warn.message}`;
|
|
75
|
+
}
|
|
76
|
+
return `Warning: ${warn.message}`;
|
|
77
|
+
}
|
|
78
|
+
function doCompile(input, opts) {
|
|
79
|
+
const result = compileFile(input, { filename: input, sourceMap: opts.sourceMap, wrap: opts.wrap });
|
|
47
80
|
if (result.errors.length > 0) {
|
|
48
81
|
for (const err of result.errors) {
|
|
49
82
|
console.error(formatError(err, input));
|
|
50
83
|
}
|
|
51
|
-
|
|
84
|
+
return false;
|
|
52
85
|
}
|
|
53
|
-
// Print warnings to stderr
|
|
54
86
|
for (const warn of result.warnings) {
|
|
55
87
|
console.error(formatWarning(warn, input));
|
|
56
88
|
}
|
|
57
|
-
if (output) {
|
|
58
|
-
writeFileSync(output, result.code);
|
|
89
|
+
if (opts.output) {
|
|
90
|
+
writeFileSync(opts.output, result.code);
|
|
59
91
|
if (result.sourceMap) {
|
|
60
|
-
writeFileSync(output + '.map', result.sourceMap);
|
|
92
|
+
writeFileSync(opts.output + '.map', result.sourceMap);
|
|
61
93
|
}
|
|
62
|
-
console.error(`Compiled: ${input} → ${output}`);
|
|
94
|
+
console.error(`Compiled: ${input} → ${opts.output}`);
|
|
63
95
|
}
|
|
64
96
|
else {
|
|
65
97
|
process.stdout.write(result.code);
|
|
66
98
|
}
|
|
99
|
+
return true;
|
|
67
100
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
process.
|
|
101
|
+
// ─── Init ──────────────────────────────────────────────────
|
|
102
|
+
function ask(q) {
|
|
103
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
104
|
+
return new Promise(resolve => {
|
|
105
|
+
rl.question(q, (answer) => {
|
|
106
|
+
rl.close();
|
|
107
|
+
resolve(answer.trim());
|
|
108
|
+
});
|
|
109
|
+
});
|
|
71
110
|
}
|
|
72
|
-
function
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
111
|
+
async function doInit() {
|
|
112
|
+
const cwd = process.cwd();
|
|
113
|
+
const hasPkg = existsSync(join(cwd, 'package.json'));
|
|
114
|
+
const hasViteConfig = existsSync(join(cwd, 'vite.config.ts')) || existsSync(join(cwd, 'vite.config.js'));
|
|
115
|
+
const hasTsConfig = existsSync(join(cwd, 'tsconfig.json'));
|
|
116
|
+
console.log(`\n ☕ CoffeeHaml init — project scaffold\n`);
|
|
117
|
+
console.log(` Working directory: ${cwd}`);
|
|
118
|
+
console.log(` Detected: ${[
|
|
119
|
+
hasPkg ? 'package.json' : '',
|
|
120
|
+
hasViteConfig ? 'Vite' : '',
|
|
121
|
+
hasTsConfig ? 'TypeScript' : '',
|
|
122
|
+
!hasPkg ? 'bare project' : '',
|
|
123
|
+
].filter(Boolean).join(', ')}\n`);
|
|
124
|
+
// Question 1: Add dependency?
|
|
125
|
+
let addDep = true;
|
|
126
|
+
if (hasPkg) {
|
|
127
|
+
const ans = await ask(' Add coffeehaml as devDependency? (Y/n): ');
|
|
128
|
+
addDep = !/^n/i.test(ans);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
console.log(' No package.json found — skipping dependency install.');
|
|
132
|
+
addDep = false;
|
|
133
|
+
}
|
|
134
|
+
// Question 2: Vite plugin?
|
|
135
|
+
let setupVite = false;
|
|
136
|
+
if (hasViteConfig) {
|
|
137
|
+
const ans = await ask(' Configure Vite plugin? (Y/n): ');
|
|
138
|
+
setupVite = !/^n/i.test(ans);
|
|
76
139
|
}
|
|
77
|
-
|
|
140
|
+
else if (hasPkg) {
|
|
141
|
+
const ans = await ask(' No vite.config detected. Create one with CoffeeHaml plugin? (y/N): ');
|
|
142
|
+
setupVite = /^y/i.test(ans);
|
|
143
|
+
}
|
|
144
|
+
// Question 3: Sample component?
|
|
145
|
+
let createSample = true;
|
|
146
|
+
const ans = await ask(' Create sample .chaml component? (Y/n): ');
|
|
147
|
+
createSample = !/^n/i.test(ans);
|
|
148
|
+
// Question 4: npm scripts?
|
|
149
|
+
let addScripts = false;
|
|
150
|
+
if (hasPkg) {
|
|
151
|
+
const ans = await ask(' Add build/watch scripts to package.json? (Y/n): ');
|
|
152
|
+
addScripts = !/^n/i.test(ans);
|
|
153
|
+
}
|
|
154
|
+
console.log();
|
|
155
|
+
// ── Execute ──
|
|
156
|
+
// 1. Install dependency
|
|
157
|
+
if (addDep) {
|
|
158
|
+
console.log(' ⚡ Installing coffeehaml...');
|
|
159
|
+
const { execSync } = await import('child_process');
|
|
160
|
+
try {
|
|
161
|
+
execSync('npm install --save-dev coffeehaml', { cwd, stdio: 'inherit' });
|
|
162
|
+
console.log(' ✓ coffeehaml installed\n');
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
console.log(' ✗ Install failed — continuing anyway\n');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// 2. Vite plugin
|
|
169
|
+
if (setupVite) {
|
|
170
|
+
const configPath = join(cwd, hasViteConfig
|
|
171
|
+
? (existsSync(join(cwd, 'vite.config.ts')) ? 'vite.config.ts' : 'vite.config.js')
|
|
172
|
+
: 'vite.config.ts');
|
|
173
|
+
const ext = configPath.endsWith('.ts') ? 'ts' : 'js';
|
|
174
|
+
if (hasViteConfig) {
|
|
175
|
+
// Modify existing vite config — inject the import and plugin
|
|
176
|
+
let existing = readFileSync(configPath, 'utf-8');
|
|
177
|
+
const hasImport = /coffeehaml/.test(existing);
|
|
178
|
+
const hasPlugin = /coffeehaml\(\)/.test(existing);
|
|
179
|
+
if (!hasImport) {
|
|
180
|
+
existing = `import coffeehaml from 'coffeehaml/vite-plugin';\n` + existing;
|
|
181
|
+
}
|
|
182
|
+
if (!hasPlugin) {
|
|
183
|
+
// Insert coffeehaml() into plugins array
|
|
184
|
+
existing = existing.replace(/(plugins\s*:\s*\[)/, '$1\n coffeehaml(),');
|
|
185
|
+
if (!/plugins\s*:\s*\[/.test(existing)) {
|
|
186
|
+
// No plugins array — add one after defineConfig({
|
|
187
|
+
existing = existing.replace(/(defineConfig\s*\(\s*\{)/, '$1\n plugins: [coffeehaml()],');
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
writeFileSync(configPath, existing);
|
|
191
|
+
console.log(` ✓ Updated ${relative(cwd, configPath)}\n`);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
// Create new vite config
|
|
195
|
+
const tsContent = `import { defineConfig } from 'vite';
|
|
196
|
+
import react from '@vitejs/plugin-react';
|
|
197
|
+
import coffeehaml from 'coffeehaml/vite-plugin';
|
|
198
|
+
|
|
199
|
+
export default defineConfig({
|
|
200
|
+
plugins: [
|
|
201
|
+
react(),
|
|
202
|
+
coffeehaml(),
|
|
203
|
+
],
|
|
204
|
+
});`;
|
|
205
|
+
const jsContent = `import { defineConfig } from 'vite';
|
|
206
|
+
import react from '@vitejs/plugin-react';
|
|
207
|
+
import coffeehaml from 'coffeehaml/vite-plugin';
|
|
208
|
+
|
|
209
|
+
export default defineConfig({
|
|
210
|
+
plugins: [
|
|
211
|
+
react(),
|
|
212
|
+
coffeehaml(),
|
|
213
|
+
],
|
|
214
|
+
});`;
|
|
215
|
+
writeFileSync(configPath, ext === 'ts' ? tsContent : jsContent);
|
|
216
|
+
console.log(` ✓ Created ${relative(cwd, configPath)}\n`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// 3. Sample component
|
|
220
|
+
if (createSample) {
|
|
221
|
+
const srcDir = join(cwd, 'src');
|
|
222
|
+
if (!existsSync(srcDir)) {
|
|
223
|
+
const { mkdirSync } = await import('fs');
|
|
224
|
+
mkdirSync(srcDir, { recursive: true });
|
|
225
|
+
}
|
|
226
|
+
const samplePath = join(srcDir, 'App.chaml');
|
|
227
|
+
if (existsSync(samplePath)) {
|
|
228
|
+
console.log(` ⚠ ${relative(cwd, samplePath)} already exists — skipping\n`);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
const sample = `-# App.chaml — a sample CoffeeHaml component
|
|
232
|
+
import { useState } from 'react'
|
|
233
|
+
|
|
234
|
+
%div.app
|
|
235
|
+
%header
|
|
236
|
+
%h1= "CoffeeHaml ✨"
|
|
237
|
+
%p.subtitle Haml structure. CoffeeScript semantics. React runtime.
|
|
238
|
+
|
|
239
|
+
%main
|
|
240
|
+
- name = 'World'
|
|
241
|
+
%section.card
|
|
242
|
+
%h2= "Hello, #{name}!"
|
|
243
|
+
%p= "Counter: 0"
|
|
244
|
+
|
|
245
|
+
%footer
|
|
246
|
+
%small Built with coffeehaml v${getVersion()}
|
|
247
|
+
`;
|
|
248
|
+
writeFileSync(samplePath, sample);
|
|
249
|
+
console.log(` ✓ Created ${relative(cwd, samplePath)}\n`);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
// 4. npm scripts
|
|
253
|
+
if (addScripts && hasPkg) {
|
|
254
|
+
const pkgPath = join(cwd, 'package.json');
|
|
255
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
256
|
+
pkg.scripts = pkg.scripts || {};
|
|
257
|
+
if (!pkg.scripts['build:chaml']) {
|
|
258
|
+
pkg.scripts['build:chaml'] = 'coffeehaml compile src/ -o dist/';
|
|
259
|
+
}
|
|
260
|
+
if (!pkg.scripts['watch:chaml']) {
|
|
261
|
+
pkg.scripts['watch:chaml'] = 'coffeehaml watch src/ --wrap component';
|
|
262
|
+
}
|
|
263
|
+
writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
|
|
264
|
+
console.log(' ✓ Added build:chaml and watch:chaml scripts\n');
|
|
265
|
+
}
|
|
266
|
+
console.log(' 🎉 Done! Start building:\n');
|
|
267
|
+
console.log(' npm run build:chaml # compile once');
|
|
268
|
+
console.log(' npm run watch:chaml # watch and recompile');
|
|
269
|
+
console.log(' npx coffeehaml watch src/ # ad-hoc watch\n');
|
|
78
270
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
271
|
+
const cmd = args[0];
|
|
272
|
+
const rest = args.slice(1);
|
|
273
|
+
if (cmd === 'compile') {
|
|
274
|
+
const opts = parseArgs(rest);
|
|
275
|
+
if (!opts.input) {
|
|
276
|
+
console.error('Error: no input file specified');
|
|
277
|
+
process.exit(1);
|
|
83
278
|
}
|
|
84
|
-
|
|
279
|
+
const ok = doCompile(opts.input, opts);
|
|
280
|
+
process.exit(ok ? 0 : 1);
|
|
281
|
+
}
|
|
282
|
+
else if (cmd === 'watch') {
|
|
283
|
+
const opts = parseArgs(rest);
|
|
284
|
+
if (!opts.input) {
|
|
285
|
+
console.error('Error: no input path specified');
|
|
286
|
+
process.exit(1);
|
|
287
|
+
}
|
|
288
|
+
const target = resolve(opts.input);
|
|
289
|
+
const stats = existsSync(target) ? statSync(target) : null;
|
|
290
|
+
// Collect .chaml/.coffeehaml files
|
|
291
|
+
const files = [];
|
|
292
|
+
function findFiles(dir) {
|
|
293
|
+
if (!existsSync(dir))
|
|
294
|
+
return;
|
|
295
|
+
const stat = statSync(dir);
|
|
296
|
+
if (stat.isDirectory()) {
|
|
297
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
298
|
+
const full = join(dir, entry.name);
|
|
299
|
+
if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'node_modules') {
|
|
300
|
+
findFiles(full);
|
|
301
|
+
}
|
|
302
|
+
else if (entry.isFile() && /\.(chaml|coffeehaml)$/.test(entry.name)) {
|
|
303
|
+
files.push(full);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
else if (/\.(chaml|coffeehaml)$/.test(dir)) {
|
|
308
|
+
files.push(dir);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
findFiles(target);
|
|
312
|
+
if (files.length === 0) {
|
|
313
|
+
console.error(`Error: no .chaml/.coffeehaml files found in ${opts.input}`);
|
|
314
|
+
process.exit(1);
|
|
315
|
+
}
|
|
316
|
+
console.error(`Watching ${files.length} file(s)...`);
|
|
317
|
+
let initial = true;
|
|
318
|
+
const compile = (file) => {
|
|
319
|
+
const rel = relative(process.cwd(), file);
|
|
320
|
+
if (!initial)
|
|
321
|
+
console.error(`\n[recompile] ${rel}`);
|
|
322
|
+
initial = false;
|
|
323
|
+
// Derive output: same dir, .js extension
|
|
324
|
+
const outFile = opts.output || file.replace(/\.(chaml|coffeehaml)$/, '.js');
|
|
325
|
+
const ok = doCompile(file, { ...opts, output: outFile, input: file });
|
|
326
|
+
if (!ok)
|
|
327
|
+
console.error(` ✗ ${rel}`);
|
|
328
|
+
};
|
|
329
|
+
for (const file of files)
|
|
330
|
+
compile(file);
|
|
331
|
+
// Watch each file for changes (debounced)
|
|
332
|
+
const timers = new Map();
|
|
333
|
+
const watchDir = stats?.isDirectory() ? target : dirname(target);
|
|
334
|
+
const watcher = watch(watchDir, { recursive: true }, (_event, filename) => {
|
|
335
|
+
if (!filename || !/\.(chaml|coffeehaml)$/.test(filename))
|
|
336
|
+
return;
|
|
337
|
+
const full = resolve(watchDir, filename);
|
|
338
|
+
if (timers.has(full))
|
|
339
|
+
clearTimeout(timers.get(full));
|
|
340
|
+
timers.set(full, setTimeout(() => {
|
|
341
|
+
timers.delete(full);
|
|
342
|
+
compile(full);
|
|
343
|
+
}, 100));
|
|
344
|
+
});
|
|
345
|
+
process.on('SIGINT', () => {
|
|
346
|
+
watcher.close();
|
|
347
|
+
console.error('\nStopped watching.');
|
|
348
|
+
process.exit(0);
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
else if (cmd === 'init') {
|
|
352
|
+
doInit();
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
console.error(`Unknown command: ${cmd}`);
|
|
356
|
+
process.exit(1);
|
|
85
357
|
}
|
|
86
358
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/compiler.js
CHANGED
|
@@ -41,16 +41,14 @@ export function compile(source, options = {}) {
|
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
// Phase 2: Parse
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
code: '',
|
|
51
|
-
|
|
52
|
-
warnings: [],
|
|
53
|
-
};
|
|
44
|
+
const parsed = parse(tokens, options.filename);
|
|
45
|
+
const ast = parsed.document;
|
|
46
|
+
// Collect parse errors (non-fatal — parsing continues with recovery)
|
|
47
|
+
if (parsed.errors.length > 0) {
|
|
48
|
+
errors.push(...parsed.errors);
|
|
49
|
+
if (ast.children.length === 0) {
|
|
50
|
+
return { code: '', errors, warnings };
|
|
51
|
+
}
|
|
54
52
|
}
|
|
55
53
|
// Phase 3: Emit
|
|
56
54
|
let result;
|
package/dist/compiler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAkC,YAAY,EAAkB,MAAM,YAAY,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAE9C,qEAAqE;AACrE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAE1E,2EAA2E;AAC3E,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,QAAQ,GAAG,GAAG,CAAC;QAC/B,IAAI,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,OAAO,CAAC,MAAc,EAAE,UAA2B,EAAE;IACnE,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAqB,EAAE,CAAC;IAEtC,0EAA0E;IAC1E,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,iDAAiD,gCAAgC,EAAE,gIAAgI;YAC5N,KAAK,EAAE,UAAU;SAClB,CAAC,CAAC;IACL,CAAC;IAED,eAAe;IACf,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC/B,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"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"}
|