@barefootjs/go-template 0.4.0 → 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/dist/adapter/go-template-adapter.d.ts +1 -0
- package/dist/adapter/go-template-adapter.d.ts.map +1 -1
- package/dist/adapter/index.js +6 -3
- package/dist/build.js +6 -3
- package/dist/index.js +6 -3
- package/package.json +2 -2
- package/src/__tests__/go-template-adapter.test.ts +7 -0
- package/src/adapter/go-template-adapter.ts +19 -5
|
@@ -30,6 +30,7 @@ export interface GoTemplateAdapterOptions {
|
|
|
30
30
|
export declare class GoTemplateAdapter extends BaseAdapter implements ParsedExprEmitter, IRNodeEmitter<GoRenderCtx> {
|
|
31
31
|
name: string;
|
|
32
32
|
extension: string;
|
|
33
|
+
importMapInjection: 'html-snippet';
|
|
33
34
|
private filterExprDepth;
|
|
34
35
|
private filterExprUnsupported;
|
|
35
36
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"go-template-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/go-template-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,SAAS,EACT,MAAM,EACN,YAAY,EACZ,aAAa,EACb,MAAM,EAEN,WAAW,EACX,UAAU,EACV,MAAM,EAMN,UAAU,EAEV,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACV,OAAO,EACP,yBAAyB,EAC1B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAE3B,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EAUhB,MAAM,iBAAiB,CAAA;AAGxB;;;;;GAKG;AACH,KAAK,WAAW,GAAG;IACjB,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAClC,CAAA;AA2ED,MAAM,WAAW,wBAAwB;IACvC,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;
|
|
1
|
+
{"version":3,"file":"go-template-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/go-template-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter/index.js
CHANGED
|
@@ -45,9 +45,11 @@ function wrapIfMultiToken(rendered) {
|
|
|
45
45
|
return rendered;
|
|
46
46
|
}
|
|
47
47
|
function emitBfSort(recv, c) {
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
const groups = c.keys.map((k) => {
|
|
49
|
+
const keyName = k.key.kind === "field" ? capitalize(k.key.field) : "";
|
|
50
|
+
return `"${k.key.kind}" "${keyName}" "${k.type}" "${k.direction}"`;
|
|
51
|
+
});
|
|
52
|
+
return `bf_sort ${wrapIfMultiToken(recv)} ${groups.join(" ")}`;
|
|
51
53
|
}
|
|
52
54
|
function capitalize(s) {
|
|
53
55
|
return s.length === 0 ? s : s[0].toUpperCase() + s.slice(1);
|
|
@@ -72,6 +74,7 @@ var GO_TEMPLATE_PRIMITIVES = {
|
|
|
72
74
|
class GoTemplateAdapter extends BaseAdapter {
|
|
73
75
|
name = "go-template";
|
|
74
76
|
extension = ".tmpl";
|
|
77
|
+
importMapInjection = "html-snippet";
|
|
75
78
|
filterExprDepth = 0;
|
|
76
79
|
filterExprUnsupported = false;
|
|
77
80
|
templatePrimitives = Object.fromEntries(Object.entries(GO_TEMPLATE_PRIMITIVES).map(([k, v]) => [k, v.emit]));
|
package/dist/build.js
CHANGED
|
@@ -385,9 +385,11 @@ function wrapIfMultiToken(rendered) {
|
|
|
385
385
|
return rendered;
|
|
386
386
|
}
|
|
387
387
|
function emitBfSort(recv, c) {
|
|
388
|
-
const
|
|
389
|
-
|
|
390
|
-
|
|
388
|
+
const groups = c.keys.map((k) => {
|
|
389
|
+
const keyName = k.key.kind === "field" ? capitalize(k.key.field) : "";
|
|
390
|
+
return `"${k.key.kind}" "${keyName}" "${k.type}" "${k.direction}"`;
|
|
391
|
+
});
|
|
392
|
+
return `bf_sort ${wrapIfMultiToken(recv)} ${groups.join(" ")}`;
|
|
391
393
|
}
|
|
392
394
|
function capitalize(s) {
|
|
393
395
|
return s.length === 0 ? s : s[0].toUpperCase() + s.slice(1);
|
|
@@ -412,6 +414,7 @@ var GO_TEMPLATE_PRIMITIVES = {
|
|
|
412
414
|
class GoTemplateAdapter extends BaseAdapter {
|
|
413
415
|
name = "go-template";
|
|
414
416
|
extension = ".tmpl";
|
|
417
|
+
importMapInjection = "html-snippet";
|
|
415
418
|
filterExprDepth = 0;
|
|
416
419
|
filterExprUnsupported = false;
|
|
417
420
|
templatePrimitives = Object.fromEntries(Object.entries(GO_TEMPLATE_PRIMITIVES).map(([k, v]) => [k, v.emit]));
|
package/dist/index.js
CHANGED
|
@@ -45,9 +45,11 @@ function wrapIfMultiToken(rendered) {
|
|
|
45
45
|
return rendered;
|
|
46
46
|
}
|
|
47
47
|
function emitBfSort(recv, c) {
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
const groups = c.keys.map((k) => {
|
|
49
|
+
const keyName = k.key.kind === "field" ? capitalize(k.key.field) : "";
|
|
50
|
+
return `"${k.key.kind}" "${keyName}" "${k.type}" "${k.direction}"`;
|
|
51
|
+
});
|
|
52
|
+
return `bf_sort ${wrapIfMultiToken(recv)} ${groups.join(" ")}`;
|
|
51
53
|
}
|
|
52
54
|
function capitalize(s) {
|
|
53
55
|
return s.length === 0 ? s : s[0].toUpperCase() + s.slice(1);
|
|
@@ -72,6 +74,7 @@ var GO_TEMPLATE_PRIMITIVES = {
|
|
|
72
74
|
class GoTemplateAdapter extends BaseAdapter {
|
|
73
75
|
name = "go-template";
|
|
74
76
|
extension = ".tmpl";
|
|
77
|
+
importMapInjection = "html-snippet";
|
|
75
78
|
filterExprDepth = 0;
|
|
76
79
|
filterExprUnsupported = false;
|
|
77
80
|
templatePrimitives = Object.fromEntries(Object.entries(GO_TEMPLATE_PRIMITIVES).map(([k, v]) => [k, v.emit]));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@barefootjs/go-template",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Go html/template adapter for BarefootJS - generates Go template files from IR",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -54,6 +54,6 @@
|
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@barefootjs/adapter-tests": "0.1.0",
|
|
57
|
-
"@barefootjs/jsx": "0.
|
|
57
|
+
"@barefootjs/jsx": "0.5.0"
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -1833,6 +1833,8 @@ import { fixture as arraySortFieldAscFixture } from '../../../adapter-tests/fixt
|
|
|
1833
1833
|
import { fixture as arraySortFieldDescFixture } from '../../../adapter-tests/fixtures/methods/array-sort-field-desc'
|
|
1834
1834
|
import { fixture as arraySortPrimitiveFixture } from '../../../adapter-tests/fixtures/methods/array-sort-primitive'
|
|
1835
1835
|
import { fixture as arraySortLocaleFixture } from '../../../adapter-tests/fixtures/methods/array-sort-locale'
|
|
1836
|
+
import { fixture as arraySortMultiKeyFixture } from '../../../adapter-tests/fixtures/methods/array-sort-multikey'
|
|
1837
|
+
import { fixture as arraySortTernaryFixture } from '../../../adapter-tests/fixtures/methods/array-sort-ternary'
|
|
1836
1838
|
import { fixture as arrayToSortedFixture } from '../../../adapter-tests/fixtures/methods/array-toSorted'
|
|
1837
1839
|
// #1448 Tier B — .entries / .keys / .values iteration shapes.
|
|
1838
1840
|
import { fixture as arrayEntriesFixture } from '../../../adapter-tests/fixtures/methods/array-entries'
|
|
@@ -1867,6 +1869,11 @@ describe('GoTemplateAdapter - #1448 Tier A/B fixture-driven lowering pins', () =
|
|
|
1867
1869
|
{ fixture: arraySortFieldDescFixture, expect: 'bf_sort .Items "field" "Price" "numeric" "desc"' },
|
|
1868
1870
|
{ fixture: arraySortPrimitiveFixture, expect: 'bf_sort .Nums "self" "" "numeric" "asc"' },
|
|
1869
1871
|
{ fixture: arraySortLocaleFixture, expect: 'bf_sort .Names "self" "" "string" "asc"' },
|
|
1872
|
+
// Multi-key (`||`-chain): one 4-string group per comparison key,
|
|
1873
|
+
// applied in priority order as tie-breakers.
|
|
1874
|
+
{ fixture: arraySortMultiKeyFixture, expect: 'bf_sort .Items "field" "Price" "numeric" "asc" "field" "Name" "string" "asc"' },
|
|
1875
|
+
// Relational-ternary comparator lowers to a single `auto` key.
|
|
1876
|
+
{ fixture: arraySortTernaryFixture, expect: 'bf_sort .Items "field" "Rank" "auto" "asc"' },
|
|
1870
1877
|
{ fixture: arrayToSortedFixture, expect: 'bf_sort .Nums "self" "" "numeric" "asc"' },
|
|
1871
1878
|
// #1448 Tier B — iteration shapes. These are loop-level
|
|
1872
1879
|
// patterns (range binding order), not helper function calls.
|
|
@@ -179,21 +179,32 @@ function wrapIfMultiToken(rendered: string): string {
|
|
|
179
179
|
* takes 4 string operands so a future `nulls` knob can grow on the
|
|
180
180
|
* end without rewriting either call site (#1448 Tier B):
|
|
181
181
|
*
|
|
182
|
-
* bf_sort <recv> <keyKind> <keyName> <compareType> <direction>
|
|
182
|
+
* bf_sort <recv> (<keyKind> <keyName> <compareType> <direction>)+
|
|
183
183
|
*
|
|
184
184
|
* keyKind: "self" | "field"
|
|
185
185
|
* keyName: "" when keyKind=self; capitalised field name otherwise
|
|
186
|
-
* compareType: "numeric" | "string"
|
|
186
|
+
* compareType: "numeric" | "string" | "auto"
|
|
187
187
|
* direction: "asc" | "desc"
|
|
188
188
|
*
|
|
189
|
+
* The 4-string group repeats once per comparison key: a simple
|
|
190
|
+
* comparator emits one group; a `||`-chained multi-key comparator
|
|
191
|
+
* emits one per operand, applied in order as tie-breakers by the
|
|
192
|
+
* variadic `bf_sort` runtime.
|
|
193
|
+
*
|
|
189
194
|
* The capitalisation mirrors the Go-side struct-field convention
|
|
190
195
|
* (`bf_sort .Items "field" "Price" "numeric" "asc"`) so the runtime
|
|
191
196
|
* helper's reflect lookup matches without a recapitalise step.
|
|
192
197
|
*/
|
|
193
198
|
function emitBfSort(recv: string, c: SortComparator): string {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
199
|
+
// One 4-string group per comparison key (keyKind, keyName,
|
|
200
|
+
// compareType, direction). A single-key comparator emits exactly the
|
|
201
|
+
// pre-multi-key shape; `||`-chained keys append further groups, which
|
|
202
|
+
// `bf_sort`'s variadic runtime applies in order as tie-breakers.
|
|
203
|
+
const groups = c.keys.map((k) => {
|
|
204
|
+
const keyName = k.key.kind === 'field' ? capitalize(k.key.field) : ''
|
|
205
|
+
return `"${k.key.kind}" "${keyName}" "${k.type}" "${k.direction}"`
|
|
206
|
+
})
|
|
207
|
+
return `bf_sort ${wrapIfMultiToken(recv)} ${groups.join(' ')}`
|
|
197
208
|
}
|
|
198
209
|
|
|
199
210
|
function capitalize(s: string): string {
|
|
@@ -239,6 +250,9 @@ const GO_TEMPLATE_PRIMITIVES: Record<string, PrimitiveSpec> = {
|
|
|
239
250
|
export class GoTemplateAdapter extends BaseAdapter implements ParsedExprEmitter, IRNodeEmitter<GoRenderCtx> {
|
|
240
251
|
name = 'go-template'
|
|
241
252
|
extension = '.tmpl'
|
|
253
|
+
// Template-string target with no component layer: `bf build` emits a static
|
|
254
|
+
// `barefoot-importmap.html` to `{{ template }}` into the page <head> (#1644).
|
|
255
|
+
importMapInjection = 'html-snippet' as const
|
|
242
256
|
|
|
243
257
|
// Recursion-scoped state for `renderFilterExpr`. `filterExprDepth`
|
|
244
258
|
// tracks nesting so the outer call resets `filterExprUnsupported`
|