Skip to content

Commit

Permalink
feat(runtime): Add support for DOM variables
Browse files Browse the repository at this point in the history
fixes #62

BREAKING CHANGE: the response from the runtime template is no longer an object, but the generated string or document.
  • Loading branch information
tripodsan committed Jun 5, 2019
1 parent 5c735d0 commit d4bab4c
Show file tree
Hide file tree
Showing 88 changed files with 5,961 additions and 1,436 deletions.
3 changes: 2 additions & 1 deletion .eslintignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
src/parser/generated
test/generated
test/generated
examples
1 change: 1 addition & 0 deletions .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@ logs
greenkeeper.json
test
coverage
examples
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,11 @@ const js = await compiler.compileToString(code);
// the result can be saved as a file or eval'd
```

## examples

- see [HAST Example](./examples/hast/index.js) that uses a [hast](https://github.com/syntax-tree/hast) tree as resource document.
- see [JSDOM Example](./examples/jsdom/index.js) that uses a [jsdom](https://github.com/jsdom/jsdom) document as resource.

## test

The tests are more comprehensive. They validate if the the HTL expressions are parsed and re-created using the generated parse tree.
Expand Down
40 changes: 40 additions & 0 deletions examples/hast/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
* Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
* OF ANY KIND, either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
/* eslint-disable */

const fs = require('fs');
const path = require('path');

const unified = require('unified');
const stream = require('unified-stream');
const markdown = require('remark-parse');
const remark2rehype = require('remark-rehype');
const html = require('rehype-stringify');

const { resly } = require('@adobe/htlengine');

const code = '<!DOCTYPE html><html><head><title>${dom.children[0].children[0].value}</title></head>\n'
+ '<body>\n'
+ '<h1>Table of Contents</h1>\n'
+ '<ul data-sly-list="${dom.children}">'
+ '<li data-sly-test="${item.tagName==\'h1\' || item.tagName==\'h2\'}">${item}\n</li>'
+ '</ul>\n'
+ '</body>';

const processor = unified()
.use(markdown)
.use(remark2rehype)
.use(resly({ code }))
.use(html);

const readme = fs.createReadStream(path.resolve(__dirname, '../../', 'README.md'));
readme.pipe(stream(processor)).pipe(process.stdout);
Loading

0 comments on commit d4bab4c

Please sign in to comment.