coffeehaml 0.4.1 → 0.5.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 CHANGED
@@ -79,9 +79,19 @@ expressions like `{onClick: handler}` or `{disabled: !connected}`).
79
79
  ### CLI
80
80
 
81
81
  ```bash
82
- npx coffeehaml compile app.coffeehaml
82
+ # One-shot compile
83
+ npx coffeehaml compile app.chaml -o app.js --wrap component
84
+
85
+ # Watch mode — recompiles on every change
86
+ npx coffeehaml watch src/ --wrap observer
83
87
  ```
84
88
 
89
+ | Flag | Description |
90
+ |------|-------------|
91
+ | `-o`, `--output` | Write output to file |
92
+ | `--source-map` | Emit inline source map |
93
+ | `--wrap <mode>` | Wrap mode: `component`, `observer`, or comma-separated HOC list |
94
+
85
95
  Accepts `.coffeehaml`, `.cohaml`, and `.chaml` extensions.
86
96
 
87
97
  ### Vite plugin
@@ -120,8 +130,9 @@ console.log(result.code);
120
130
  | `#id` | Element ID |
121
131
  | `{attr: val}` / `(attr: val)` | Attributes (CoffeeScript expressions) |
122
132
  | `{onClick}` | Shorthand — `onClick={onClick}` |
123
- | `= expression` | Inline output (escaped) |
133
+ | `= expression` | Inline output (escaped); continuation via indented lines |
124
134
  | `- if`, `- unless` | Conditional |
135
+ | `- code` | Arbitrary CoffeeScript statements; continuation via indented lines |
125
136
  | `- for x in xs` | Loop → `.map()` |
126
137
  | `- else`, `- else if` | Chain conditionals |
127
138
  | `-# comment` | Haml comment (stripped) |
@@ -136,7 +147,8 @@ Full grammar: [`docs/grammar.md`](docs/grammar.md)
136
147
 
137
148
  - **Zero runtime** — the compiler is the only artifact
138
149
  - **Emitter-agnostic AST** — future backends possible (Solid, Vue, Mithril)
139
- - **Excellent source maps** — debug in CoffeeHaml, not generated JS
150
+ - **Source-located errors** — line/column hints for every compile failure
151
+ - **Source maps** — debug in CoffeeHaml, not generated JS
140
152
  - **Incremental compilation** — Vite HMR out of the box
141
153
  - **No invention** — reuse Haml and CoffeeScript conventions
142
154
 
@@ -144,24 +156,31 @@ Full grammar: [`docs/grammar.md`](docs/grammar.md)
144
156
 
145
157
  ## Status
146
158
 
147
- **v0.1.0 — experimental.** The core compiler pipeline (Lexer → Parser →
148
- Emitter) is functional. Source maps and CoffeeScript expression compilation
149
- require the `coffeescript` peer dependency.
159
+ **v0.5.0 — production beta.** The compiler pipeline (Lexer → Parser → Emitter)
160
+ is complete. Source maps, component wrapping, spread attributes, statement/expression
161
+ continuation, and source-located errors are all functional.
150
162
 
151
163
  | Feature | Status |
152
164
  |---------|--------|
153
165
  | Elements, components, implicit divs | ✅ |
154
166
  | `.class` / `#id` modifiers | ✅ |
155
- | `{attr: val}` / `(attr: val)` blocks | ✅ |
167
+ | `{attr: val}` / `(attr: val)` + spread `{props...}` | ✅ |
156
168
  | Inline `= expression` output | ✅ |
169
+ | `=` expression continuation (indented) | ✅ |
170
+ | `-` statement continuation (indented) | ✅ |
157
171
  | `- if` / `- unless` / `- else` / `- else if` | ✅ |
158
172
  | `- for item in items` → `.map()` | ✅ |
159
173
  | `- while` | ✅ |
160
174
  | Haml/HTML comments | ✅ |
161
175
  | `:filter` blocks | ✅ |
176
+ | Prologue passthrough (`import`, `@decorator`) | ✅ |
177
+ | Component / HOC wrapping (`wrap: 'observer'`) | ✅ |
162
178
  | Vite plugin with HMR | ✅ |
163
- | Source maps | 🚧 Stubbed |
164
- | CoffeeScript expression compilation | 🚧 Requires peer dep |
179
+ | CLI `--wrap` flag | ✅ |
180
+ | CLI `watch` mode | ✅ |
181
+ | Source-located error messages | ✅ |
182
+ | Source maps | ✅ |
183
+ | CoffeeScript expression compilation | ✅ (requires peer dep) |
165
184
  | React Fast Refresh | 📅 Planned |
166
185
 
167
186
  ---
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
- constructor(expression: Expression, outputKind: OutputKind, location?: SourceLocation);
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":"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"}
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,8 @@
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';
7
6
  function getVersion() {
8
7
  try {
9
8
  const __dirname = dirname(fileURLToPath(import.meta.url));
@@ -20,67 +19,164 @@ if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
20
19
  Haml structure. CoffeeScript semantics. React runtime.
21
20
 
22
21
  Usage:
23
- coffeehaml compile <input> [-o <output>] [--source-map]
22
+ coffeehaml compile <input> [-o <output>] [--source-map] [--wrap <mode>]
23
+ coffeehaml watch <input> [-o <output>] [--source-map] [--wrap <mode>]
24
24
 
25
25
  Options:
26
26
  -o, --output <file> Write output to file instead of stdout
27
27
  --source-map Emit inline source map
28
+ --wrap <mode> Wrap output: 'component', 'observer', or comma-separated HOC list
28
29
  -h, --help Show this help
29
30
 
30
31
  Examples:
31
- coffeehaml compile app.coffeehaml -o app.js
32
- coffeehaml compile app.coffeehaml # prints to stdout
32
+ coffeehaml compile app.chaml -o app.js --wrap component
33
+ coffeehaml compile app.chaml # prints to stdout
34
+ coffeehaml watch src/ --wrap observer # watch and recompile on change
33
35
  `);
34
36
  process.exit(0);
35
37
  }
36
- const cmd = args[0];
37
- if (cmd === 'compile') {
38
- const input = args[1];
39
- if (!input) {
40
- console.error('Error: no input file specified');
41
- process.exit(1);
42
- }
38
+ function parseWrapFlag(args) {
39
+ const idx = args.indexOf('--wrap');
40
+ if (idx === -1)
41
+ return undefined;
42
+ const val = args[idx + 1];
43
+ if (!val || val.startsWith('-'))
44
+ return undefined;
45
+ // 'component' and 'observer' are shorthands; comma-separated → string[]
46
+ if (val === 'component' || val === 'observer')
47
+ return val;
48
+ if (val === 'none')
49
+ return 'none';
50
+ return val.split(',').map(s => s.trim()).filter(Boolean);
51
+ }
52
+ function parseArgs(args) {
43
53
  const outIdx = args.indexOf('-o') !== -1 ? args.indexOf('-o') : args.indexOf('--output');
44
- const output = outIdx !== -1 ? args[outIdx + 1] : null;
54
+ const output = outIdx !== -1 ? args[outIdx + 1] : undefined;
45
55
  const sourceMap = args.includes('--source-map');
46
- const result = compileFile(input, { filename: input, sourceMap });
56
+ const wrap = parseWrapFlag(args);
57
+ return { input: args[0], output, sourceMap, wrap };
58
+ }
59
+ function formatError(err, filename) {
60
+ const loc = err.location;
61
+ let msg = loc
62
+ ? `${filename}:${loc.start.line + 1}:${loc.start.column + 1}: [${err.code}] ${err.message}`
63
+ : `[${err.code}] ${err.message}`;
64
+ if (err.hint)
65
+ msg += `\n Hint: ${err.hint}`;
66
+ return msg;
67
+ }
68
+ function formatWarning(warn, filename) {
69
+ const loc = warn.location;
70
+ if (loc) {
71
+ return `Warning: ${filename}:${loc.start.line + 1}:${loc.start.column + 1}: ${warn.message}`;
72
+ }
73
+ return `Warning: ${warn.message}`;
74
+ }
75
+ function doCompile(input, opts) {
76
+ const result = compileFile(input, { filename: input, sourceMap: opts.sourceMap, wrap: opts.wrap });
47
77
  if (result.errors.length > 0) {
48
78
  for (const err of result.errors) {
49
79
  console.error(formatError(err, input));
50
80
  }
51
- process.exit(1);
81
+ return false;
52
82
  }
53
- // Print warnings to stderr
54
83
  for (const warn of result.warnings) {
55
84
  console.error(formatWarning(warn, input));
56
85
  }
57
- if (output) {
58
- writeFileSync(output, result.code);
86
+ if (opts.output) {
87
+ writeFileSync(opts.output, result.code);
59
88
  if (result.sourceMap) {
60
- writeFileSync(output + '.map', result.sourceMap);
89
+ writeFileSync(opts.output + '.map', result.sourceMap);
61
90
  }
62
- console.error(`Compiled: ${input} → ${output}`);
91
+ console.error(`Compiled: ${input} → ${opts.output}`);
63
92
  }
64
93
  else {
65
94
  process.stdout.write(result.code);
66
95
  }
96
+ return true;
67
97
  }
68
- else {
69
- console.error(`Unknown command: ${cmd}`);
70
- process.exit(1);
71
- }
72
- function formatError(err, filename) {
73
- const loc = err.location;
74
- if (loc) {
75
- return `${filename}:${loc.start.line + 1}:${loc.start.column + 1}: [${err.code}] ${err.message}`;
98
+ const cmd = args[0];
99
+ const rest = args.slice(1);
100
+ if (cmd === 'compile') {
101
+ const opts = parseArgs(rest);
102
+ if (!opts.input) {
103
+ console.error('Error: no input file specified');
104
+ process.exit(1);
76
105
  }
77
- return `[${err.code}] ${err.message}`;
106
+ const ok = doCompile(opts.input, opts);
107
+ process.exit(ok ? 0 : 1);
78
108
  }
79
- function formatWarning(warn, filename) {
80
- const loc = warn.location;
81
- if (loc) {
82
- return `Warning: ${filename}:${loc.start.line + 1}:${loc.start.column + 1}: ${warn.message}`;
109
+ else if (cmd === 'watch') {
110
+ const opts = parseArgs(rest);
111
+ if (!opts.input) {
112
+ console.error('Error: no input path specified');
113
+ process.exit(1);
83
114
  }
84
- return `Warning: ${warn.message}`;
115
+ const target = resolve(opts.input);
116
+ const stats = existsSync(target) ? statSync(target) : null;
117
+ // Collect .chaml/.coffeehaml files
118
+ const files = [];
119
+ function findFiles(dir) {
120
+ if (!existsSync(dir))
121
+ return;
122
+ const stat = statSync(dir);
123
+ if (stat.isDirectory()) {
124
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
125
+ const full = join(dir, entry.name);
126
+ if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'node_modules') {
127
+ findFiles(full);
128
+ }
129
+ else if (entry.isFile() && /\.(chaml|coffeehaml)$/.test(entry.name)) {
130
+ files.push(full);
131
+ }
132
+ }
133
+ }
134
+ else if (/\.(chaml|coffeehaml)$/.test(dir)) {
135
+ files.push(dir);
136
+ }
137
+ }
138
+ findFiles(target);
139
+ if (files.length === 0) {
140
+ console.error(`Error: no .chaml/.coffeehaml files found in ${opts.input}`);
141
+ process.exit(1);
142
+ }
143
+ console.error(`Watching ${files.length} file(s)...`);
144
+ let initial = true;
145
+ const compile = (file) => {
146
+ const rel = relative(process.cwd(), file);
147
+ if (!initial)
148
+ console.error(`\n[recompile] ${rel}`);
149
+ initial = false;
150
+ // Derive output: same dir, .js extension
151
+ const outFile = opts.output || file.replace(/\.(chaml|coffeehaml)$/, '.js');
152
+ const ok = doCompile(file, { ...opts, output: outFile, input: file });
153
+ if (!ok)
154
+ console.error(` ✗ ${rel}`);
155
+ };
156
+ for (const file of files)
157
+ compile(file);
158
+ // Watch each file for changes (debounced)
159
+ const timers = new Map();
160
+ const watchDir = stats?.isDirectory() ? target : dirname(target);
161
+ const watcher = watch(watchDir, { recursive: true }, (_event, filename) => {
162
+ if (!filename || !/\.(chaml|coffeehaml)$/.test(filename))
163
+ return;
164
+ const full = resolve(watchDir, filename);
165
+ if (timers.has(full))
166
+ clearTimeout(timers.get(full));
167
+ timers.set(full, setTimeout(() => {
168
+ timers.delete(full);
169
+ compile(full);
170
+ }, 100));
171
+ });
172
+ process.on('SIGINT', () => {
173
+ watcher.close();
174
+ console.error('\nStopped watching.');
175
+ process.exit(0);
176
+ });
177
+ }
178
+ else {
179
+ console.error(`Unknown command: ${cmd}`);
180
+ process.exit(1);
85
181
  }
86
182
  //# 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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAET,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,cAAc,EAAE,UAAU,EAAkB,MAAM,YAAY,CAAC;AA+DxE,wBAAgB,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,GAAE,cAAmB,GAAG,UAAU,CAgC5E"}
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAET,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,cAAc,EAAE,UAAU,EAAkB,MAAM,YAAY,CAAC;AAgExE,wBAAgB,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,GAAE,cAAmB,GAAG,UAAU,CAiC5E"}