@bookshop/hugo-engine 2.4.0-hugo.1 → 2.4.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.
Files changed (18) hide show
  1. package/.nyc_output/{0aba92b1-ff4b-4ce1-95dc-4c9309743616.json → 46dcfe75-3bbf-4f92-a6b3-8145e351ae24.json} +0 -0
  2. package/.nyc_output/{1c730ea9-4f60-42cc-aeb9-b7ab9ffe808d.json → 67223940-25e4-4ca5-88f7-2427417305e6.json} +0 -0
  3. package/.nyc_output/{39623a8d-3884-4bd8-9bb3-d34b0adbe309.json → 8cad51f7-2d53-4aad-9ac6-583d26278617.json} +0 -0
  4. package/.nyc_output/{813da5a0-42e1-4fc2-85bc-09abb19c8211.json → b0aa8748-7b49-40c3-a46a-4c4b89756480.json} +0 -0
  5. package/.nyc_output/{afe35238-e9ea-4a4c-9aae-2b8d52b2d2f9.json → f64c5820-5f85-4cca-a4b8-197da73a4918.json} +0 -0
  6. package/.nyc_output/processinfo/{1c730ea9-4f60-42cc-aeb9-b7ab9ffe808d.json → 46dcfe75-3bbf-4f92-a6b3-8145e351ae24.json} +1 -1
  7. package/.nyc_output/processinfo/{39623a8d-3884-4bd8-9bb3-d34b0adbe309.json → 67223940-25e4-4ca5-88f7-2427417305e6.json} +1 -1
  8. package/.nyc_output/processinfo/{813da5a0-42e1-4fc2-85bc-09abb19c8211.json → 8cad51f7-2d53-4aad-9ac6-583d26278617.json} +1 -1
  9. package/.nyc_output/processinfo/{afe35238-e9ea-4a4c-9aae-2b8d52b2d2f9.json → b0aa8748-7b49-40c3-a46a-4c4b89756480.json} +1 -1
  10. package/.nyc_output/processinfo/f64c5820-5f85-4cca-a4b8-197da73a4918.json +1 -0
  11. package/.nyc_output/processinfo/index.json +1 -1
  12. package/lib/engine.js +1 -1
  13. package/lib/hugoIdentifierParser.js +7 -1
  14. package/lib/hugoIdentifierParser.test.js +21 -2
  15. package/lib/translateTextTemplate.js +18 -5
  16. package/lib/translateTextTemplate.test.js +33 -10
  17. package/package.json +2 -2
  18. package/.nyc_output/processinfo/0aba92b1-ff4b-4ce1-95dc-4c9309743616.json +0 -1
@@ -1 +1 @@
1
- {"parent":"0aba92b1-ff4b-4ce1-95dc-4c9309743616","pid":58166,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643508568414,"ppid":58164,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/1c730ea9-4f60-42cc-aeb9-b7ab9ffe808d.json","externalId":"","uuid":"1c730ea9-4f60-42cc-aeb9-b7ab9ffe808d","files":[]}
1
+ {"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","pid":23488,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643594173677,"ppid":23484,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/46dcfe75-3bbf-4f92-a6b3-8145e351ae24.json","externalId":"","uuid":"46dcfe75-3bbf-4f92-a6b3-8145e351ae24","files":[]}
@@ -1 +1 @@
1
- {"parent":"0aba92b1-ff4b-4ce1-95dc-4c9309743616","pid":58165,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643508568407,"ppid":58164,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/39623a8d-3884-4bd8-9bb3-d34b0adbe309.json","externalId":"","uuid":"39623a8d-3884-4bd8-9bb3-d34b0adbe309","files":[]}
1
+ {"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","pid":23487,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643594173669,"ppid":23484,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/67223940-25e4-4ca5-88f7-2427417305e6.json","externalId":"","uuid":"67223940-25e4-4ca5-88f7-2427417305e6","files":[]}
@@ -1 +1 @@
1
- {"parent":"0aba92b1-ff4b-4ce1-95dc-4c9309743616","pid":58168,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643508568423,"ppid":58164,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/813da5a0-42e1-4fc2-85bc-09abb19c8211.json","externalId":"","uuid":"813da5a0-42e1-4fc2-85bc-09abb19c8211","files":[]}
1
+ {"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","pid":23486,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643594173664,"ppid":23484,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/8cad51f7-2d53-4aad-9ac6-583d26278617.json","externalId":"","uuid":"8cad51f7-2d53-4aad-9ac6-583d26278617","files":[]}
@@ -1 +1 @@
1
- {"parent":"0aba92b1-ff4b-4ce1-95dc-4c9309743616","pid":58167,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643508568419,"ppid":58164,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/afe35238-e9ea-4a4c-9aae-2b8d52b2d2f9.json","externalId":"","uuid":"afe35238-e9ea-4a4c-9aae-2b8d52b2d2f9","files":[]}
1
+ {"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","pid":23485,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643594173660,"ppid":23484,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/b0aa8748-7b49-40c3-a46a-4c4b89756480.json","externalId":"","uuid":"b0aa8748-7b49-40c3-a46a-4c4b89756480","files":[]}
@@ -0,0 +1 @@
1
+ {"parent":null,"pid":23484,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/cli.js","-v"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643594173128,"ppid":23483,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/f64c5820-5f85-4cca-a4b8-197da73a4918.json","externalId":"","uuid":"f64c5820-5f85-4cca-a4b8-197da73a4918","files":[]}
@@ -1 +1 @@
1
- {"processes":{"0aba92b1-ff4b-4ce1-95dc-4c9309743616":{"parent":null,"children":["1c730ea9-4f60-42cc-aeb9-b7ab9ffe808d","39623a8d-3884-4bd8-9bb3-d34b0adbe309","813da5a0-42e1-4fc2-85bc-09abb19c8211","afe35238-e9ea-4a4c-9aae-2b8d52b2d2f9"]},"1c730ea9-4f60-42cc-aeb9-b7ab9ffe808d":{"parent":"0aba92b1-ff4b-4ce1-95dc-4c9309743616","children":[]},"39623a8d-3884-4bd8-9bb3-d34b0adbe309":{"parent":"0aba92b1-ff4b-4ce1-95dc-4c9309743616","children":[]},"813da5a0-42e1-4fc2-85bc-09abb19c8211":{"parent":"0aba92b1-ff4b-4ce1-95dc-4c9309743616","children":[]},"afe35238-e9ea-4a4c-9aae-2b8d52b2d2f9":{"parent":"0aba92b1-ff4b-4ce1-95dc-4c9309743616","children":[]}},"files":{},"externalIds":{}}
1
+ {"processes":{"46dcfe75-3bbf-4f92-a6b3-8145e351ae24":{"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","children":[]},"67223940-25e4-4ca5-88f7-2427417305e6":{"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","children":[]},"8cad51f7-2d53-4aad-9ac6-583d26278617":{"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","children":[]},"b0aa8748-7b49-40c3-a46a-4c4b89756480":{"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","children":[]},"f64c5820-5f85-4cca-a4b8-197da73a4918":{"parent":null,"children":["46dcfe75-3bbf-4f92-a6b3-8145e351ae24","67223940-25e4-4ca5-88f7-2427417305e6","8cad51f7-2d53-4aad-9ac6-583d26278617","b0aa8748-7b49-40c3-a46a-4c4b89756480"]}},"files":{},"externalIds":{}}
package/lib/engine.js CHANGED
@@ -107,7 +107,7 @@ export class Engine {
107
107
 
108
108
  async eval(str, props = [{}]) {
109
109
  while (!window.renderHugo) await sleep(10);
110
- let props_obj = props.reduce((a, b) => { return { ...b, ...a } });
110
+ let props_obj = props.reduce((a, b) => { return { ...a, ...b } });
111
111
 
112
112
  // We're capable of looking up a simple variable
113
113
  // (and it's hard to pass to wasm since we store variables on the context)
@@ -22,6 +22,13 @@ export class IdentifierParser {
22
22
 
23
23
  // Some short-circuits for easy to regex patterns to skip the parser
24
24
  tryShortCircuit() {
25
+ // change an index of . to be only the index
26
+ const indexDotFunc = /^\s*\(\s*index\s+(?:\(\s*\.\s*\)|\.)\s+(\d+)\s*\)\s*$/
27
+ if (indexDotFunc.test(this.input)) {
28
+ const [, index] = this.input.match(indexDotFunc);
29
+ return `${index}`;
30
+ }
31
+
25
32
  // change the index function into Bookshop dot notation
26
33
  const indexFunc = /^\s*\(\s*index\s+\(?\.?(.+?)\)?\s+(\d+)\s*\)\s*$/
27
34
  if (indexFunc.test(this.input)) {
@@ -30,7 +37,6 @@ export class IdentifierParser {
30
37
  }
31
38
 
32
39
  // strip the leading . from basic variable references
33
- const variableDot = /^\s*\.([^\.\s])/;
34
40
  if (/^\s*\./.test(this.input)) {
35
41
  return this.input.replace(/^\s*\.([^\.\s])/, '$1');
36
42
  }
@@ -66,7 +66,26 @@ test(`Nested dicts and slices`, async t => {
66
66
  });
67
67
 
68
68
  test(`Converts an index into dot notation`, async t => {
69
- const ident = `(index (.items) 5)`;
70
- const output = (new IdentifierParser(ident)).build();
69
+ let ident = `(index (.items) 5)`;
70
+ let output = (new IdentifierParser(ident)).build();
71
71
  t.deepEqual(output, `items.5`);
72
+
73
+ ident = `(index .array 5)`;
74
+ output = (new IdentifierParser(ident)).build();
75
+ t.deepEqual(output, `array.5`);
76
+
77
+ ident = `(index $variable 5)`;
78
+ output = (new IdentifierParser(ident)).build();
79
+ t.deepEqual(output, `$variable.5`);
80
+ });
81
+
82
+
83
+ test(`Converts a dot index into a JS object property`, async t => {
84
+ let ident = `(index (.) 5)`;
85
+ let output = (new IdentifierParser(ident)).build();
86
+ t.deepEqual(output, `5`);
87
+
88
+ ident = `(index . 1234)`;
89
+ output = (new IdentifierParser(ident)).build();
90
+ t.deepEqual(output, `1234`);
72
91
  });
@@ -5,9 +5,11 @@ const tokens = {
5
5
  BEGIN: /{{\s*(if)/,
6
6
  BEGIN_SCOPED: /{{\s*(range|with|define|block|template)/,
7
7
  LOOP: /{{\s*range\s+(.+?)\s*}}/,
8
+ INDEX_LOOP: /{{\s*range\s+(\$.+), \$.+ := (.+?)\s*}}/,
8
9
  ASSIGN: /{{\s*(\$\S+)\s+:=\s+(.+?)\s*}}/,
9
10
  WITH: /{{\s*with\s+(.+?)\s*}}/,
10
- BOOKSHOP: /{{\s*partial\s+"bookshop(?:_partial)?"\s+\(\s*slice\s+"(.+?)" (.+?)\s*\)\s*}}/,
11
+ BOOKSHOP: /{{\s*partial\s+"bookshop"\s+\(\s*slice\s+"(.+?)" (.+?)\s*\)\s*}}/,
12
+ BOOKSHOP_SCOPED: /{{\s*partial\s+"bookshop"\s+\(?\s*\.\s*\)?\s*}}/,
11
13
  }
12
14
 
13
15
  /**
@@ -39,7 +41,12 @@ const rewriteTag = function (token, src, endTags, liveMarkup) {
39
41
  matchingEnd.text = `{{ \`<!--bookshop-live unstack-->\` | safeHTML }}${matchingEnd.text}`;
40
42
  }
41
43
 
42
- if (liveMarkup && tokens.LOOP.test(raw)) {
44
+ if (liveMarkup && tokens.INDEX_LOOP.test(raw)) {
45
+ let [, index_variable, iterator] = raw.match(tokens.INDEX_LOOP);
46
+ outputToken.text = [`${outputToken.text}`,
47
+ `{{ (printf \`<!--bookshop-live context(.: (index (${iterator}) %d))-->\` ${index_variable}) | safeHTML }}`
48
+ ].join('')
49
+ } else if (liveMarkup && tokens.LOOP.test(raw)) {
43
50
  let [, iterator] = raw.match(tokens.LOOP);
44
51
  outputToken.text = [`{{ $bookshop__live__iterator := 0 }}`,
45
52
  `${outputToken.text}`,
@@ -48,13 +55,19 @@ const rewriteTag = function (token, src, endTags, liveMarkup) {
48
55
  ].join('')
49
56
  } else if (liveMarkup && tokens.ASSIGN.test(raw)) {
50
57
  let [, identifier, value] = raw.match(tokens.ASSIGN);
51
- outputToken.text = `${outputToken.text}{{ \`<!--bookshop-live context(${identifier}: ${value})-->\` | safeHTML }}`
58
+ outputToken.text = `${outputToken.text}{{ \`<!--bookshop-live context(${identifier}: (${value}))-->\` | safeHTML }}`
52
59
  } else if (liveMarkup && tokens.WITH.test(raw)) {
53
60
  let [, value] = raw.match(tokens.WITH);
54
- outputToken.text = `${outputToken.text}{{ \`<!--bookshop-live context(.: ${value})-->\` | safeHTML }}`
61
+ outputToken.text = `${outputToken.text}{{ \`<!--bookshop-live context(.: (${value}))-->\` | safeHTML }}`
55
62
  } else if (liveMarkup && tokens.BOOKSHOP.test(raw)) {
56
63
  let [, name, params] = raw.match(tokens.BOOKSHOP);
57
- outputToken.text = `{{ \`<!--bookshop-live name(${name}) params(.: ${params})-->\` | safeHTML }}${outputToken.text}{{ \`<!--bookshop-live end-->\` | safeHTML }}`
64
+ outputToken.text = `{{ \`<!--bookshop-live name(${name}) params(.: (${params}))-->\` | safeHTML }}${outputToken.text}{{ \`<!--bookshop-live end-->\` | safeHTML }}`
65
+ } else if (liveMarkup && tokens.BOOKSHOP_SCOPED.test(raw)) {
66
+ outputToken.text = [`{{ if reflect.IsSlice . }}{{ (printf \`<!--bookshop-live name(%s) params(.: .)-->\` (index . 0)) | safeHTML }}`,
67
+ `{{- else if reflect.IsMap . -}}{{ (printf \`<!--bookshop-live name(%s) params(.: .)-->\` ._bookshop_name) | safeHTML }}{{ end }}`,
68
+ `${outputToken.text}`,
69
+ `{{ \`<!--bookshop-live end-->\` | safeHTML }}`
70
+ ].join('');
58
71
  }
59
72
 
60
73
  return outputToken;
@@ -4,26 +4,37 @@ import translateTextTemplate from './translateTextTemplate.js';
4
4
  test("add live markup to bookshop tags", t => {
5
5
  const input = `{{ partial "bookshop" (slice "content" (dict "content_html" .Params.note_html "type" "note")) }}`;
6
6
  const expected = [
7
- `{{ \`<!--bookshop-live name(content) params(.: (dict "content_html" .Params.note_html "type" "note"))-->\` | safeHTML }}`,
7
+ `{{ \`<!--bookshop-live name(content) params(.: ((dict "content_html" .Params.note_html "type" "note")))-->\` | safeHTML }}`,
8
8
  `{{ partial "bookshop" (slice "content" (dict "content_html" .Params.note_html "type" "note")) }}`,
9
9
  `{{ \`<!--bookshop-live end-->\` | safeHTML }}`
10
10
  ].join('');
11
11
  t.is(translateTextTemplate(input, {}), expected);
12
12
  });
13
13
 
14
- test("add live markup to bookshop_partial tags", t => {
15
- const input = `{{ partial "bookshop_partial" (slice "helper" (dict "text" "input")) }}`;
14
+ test("add live markup to scoped bookshop tags", t => {
15
+ const input = `{{ partial "bookshop" . }}`;
16
16
  const expected = [
17
- `{{ \`<!--bookshop-live name(helper) params(.: (dict "text" "input"))-->\` | safeHTML }}`,
18
- `{{ partial "bookshop_partial" (slice "helper" (dict "text" "input")) }}`,
17
+ `{{ if reflect.IsSlice . }}{{ (printf \`<!--bookshop-live name(%s) params(.: .)-->\` (index . 0)) | safeHTML }}`,
18
+ `{{- else if reflect.IsMap . -}}{{ (printf \`<!--bookshop-live name(%s) params(.: .)-->\` ._bookshop_name) | safeHTML }}{{ end }}`,
19
+ `{{ partial "bookshop" . }}`,
19
20
  `{{ \`<!--bookshop-live end-->\` | safeHTML }}`
20
21
  ].join('');
21
22
  t.is(translateTextTemplate(input, {}), expected);
22
23
  });
23
24
 
25
+ test("don't add live markup to bookshop_partial tags", t => {
26
+ const input = `{{ partial "bookshop_partial" (slice "helper" (dict "text" "input")) }}`;
27
+ const expected = `{{ partial "bookshop_partial" (slice "helper" (dict "text" "input")) }}`;
28
+ t.is(translateTextTemplate(input, {}), expected);
29
+ });
30
+
24
31
  test("add live markup to assigns", t => {
25
- const input = `{{ $a := .b }}`;
26
- const expected = `{{ $a := .b }}{{ \`<!--bookshop-live context($a: .b)-->\` | safeHTML }}`;
32
+ let input = `{{ $a := .b }}`;
33
+ let expected = `{{ $a := .b }}{{ \`<!--bookshop-live context($a: (.b))-->\` | safeHTML }}`;
34
+ t.is(translateTextTemplate(input, {}), expected);
35
+
36
+ input = `{{ $a := .b | chomp }}`;
37
+ expected = `{{ $a := .b | chomp }}{{ \`<!--bookshop-live context($a: (.b | chomp))-->\` | safeHTML }}`;
27
38
  t.is(translateTextTemplate(input, {}), expected);
28
39
  });
29
40
 
@@ -31,7 +42,7 @@ test("add live markup to withs", t => {
31
42
  const input = `{{ with .b }}<p>{{.}}</p>{{ end }}`;
32
43
  const expected = [`{{ with .b }}`,
33
44
  `{{ \`<!--bookshop-live stack-->\` | safeHTML }}`,
34
- `{{ \`<!--bookshop-live context(.: .b)-->\` | safeHTML }}`,
45
+ `{{ \`<!--bookshop-live context(.: (.b))-->\` | safeHTML }}`,
35
46
  `<p>{{.}}</p>`,
36
47
  `{{ \`<!--bookshop-live unstack-->\` | safeHTML }}`,
37
48
  `{{ end }}`
@@ -53,6 +64,18 @@ test("add live markup to loops", t => {
53
64
  t.is(translateTextTemplate(input, {}), expected);
54
65
  });
55
66
 
67
+ test("add live markup to loops with iterators", t => {
68
+ const input = `{{range $loop_index, $element := .columns}}<p>{{$element}}</p>{{ end }}`;
69
+ const expected = [`{{range $loop_index, $element := .columns}}`,
70
+ `{{ \`<!--bookshop-live stack-->\` | safeHTML }}`,
71
+ `{{ (printf \`<!--bookshop-live context(.: (index (.columns) %d))-->\` $loop_index) | safeHTML }}`,
72
+ `<p>{{$element}}</p>`,
73
+ `{{ \`<!--bookshop-live unstack-->\` | safeHTML }}`,
74
+ `{{ end }}`
75
+ ].join('');
76
+ t.is(translateTextTemplate(input, {}), expected);
77
+ });
78
+
56
79
  test("add live markup to complex end structures", t => {
57
80
  const input = `
58
81
  {{ range .items }}
@@ -73,14 +96,14 @@ test("add live markup to complex end structures", t => {
73
96
  const expected = `
74
97
  {{ $bookshop__live__iterator := 0 }}{{ range .items }}{{ \`<!--bookshop-live stack-->\` | safeHTML }}{{ (printf \`<!--bookshop-live context(.: (index (.items) %d))-->\` $bookshop__live__iterator) | safeHTML }}{{ $bookshop__live__iterator = (add $bookshop__live__iterator 1) }}
75
98
 
76
- {{with .text}}{{ \`<!--bookshop-live stack-->\` | safeHTML }}{{ \`<!--bookshop-live context(.: .text)-->\` | safeHTML }}
99
+ {{with .text}}{{ \`<!--bookshop-live stack-->\` | safeHTML }}{{ \`<!--bookshop-live context(.: (.text))-->\` | safeHTML }}
77
100
  <p>{{ . }}</p>
78
101
  {{ \`<!--bookshop-live unstack-->\` | safeHTML }}{{ end }}
79
102
 
80
103
  {{ if .subtitle }}
81
104
  <h2>{{ .subtitle }}</h2>
82
105
  {{ else }}
83
- {{ with .excerpt }}{{ \`<!--bookshop-live stack-->\` | safeHTML }}{{ \`<!--bookshop-live context(.: .excerpt)-->\` | safeHTML }}
106
+ {{ with .excerpt }}{{ \`<!--bookshop-live stack-->\` | safeHTML }}{{ \`<!--bookshop-live context(.: (.excerpt))-->\` | safeHTML }}
84
107
  <p>{{ . }}</p>
85
108
  {{ \`<!--bookshop-live unstack-->\` | safeHTML }}{{end}}
86
109
  {{ end }}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bookshop/hugo-engine",
3
3
  "packageManager": "yarn@3.0.0",
4
- "version": "2.4.0-hugo.1",
4
+ "version": "2.4.0",
5
5
  "description": "Bookshop frontend Hugo renderer",
6
6
  "type": "module",
7
7
  "sideEffects": false,
@@ -29,7 +29,7 @@
29
29
  "nyc": "^15.1.0"
30
30
  },
31
31
  "dependencies": {
32
- "@bookshop/helpers": "2.4.0-hugo.1",
32
+ "@bookshop/helpers": "2.4.0",
33
33
  "esbuild": "^0.13.10",
34
34
  "liquidjs": "9.28.0"
35
35
  },
@@ -1 +0,0 @@
1
- {"parent":null,"pid":58164,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/cli.js","-v"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643508567891,"ppid":58151,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/0aba92b1-ff4b-4ce1-95dc-4c9309743616.json","externalId":"","uuid":"0aba92b1-ff4b-4ce1-95dc-4c9309743616","files":[]}