An open API service indexing awesome lists of open source software.

https://github.com/flashios09/ember-extract-inline-templates

Search and extract ember inline templates from script file(js/ts) using the `import declarations`
https://github.com/flashios09/ember-extract-inline-templates

Last synced: 8 months ago
JSON representation

Search and extract ember inline templates from script file(js/ts) using the `import declarations`

Awesome Lists containing this project

README

          

Extract tagged template literals
==============================================================================

Search and extract **ember inline templates** from script file(js/ts) using the `import declarations`.

![The result](img/screenshot.jpg)

Installation
------------------------------------------------------------------------------

```bash
# not published yet
yarn add ember-extract-inline-templates
```

Usage
------------------------------------------------------------------------------

API:

```ts
searchAndExtractHbs(source: string, options?: ISearchAndExtractHbsOptions): string | never;

getTemplateNodes(source: string, options?: IGetTemplateNodesOptions): ITemplateNode[];
```

Options:

- `hbsTagSources` - [Optional] The **additional** hbs tag sources used in the import declaration(s), e.g.:
```js
{
"hbs-source-with-default-export": "default", // import hbs from 'hbs-source-with-default-export';
"hbs-source-with-named-export" : "handlebars", // import { handlebars } from 'hbs-source-wth-named-export';
"hbs-source-with-renamed-export": "hbs" // import { hbs as h } from 'hbs-source-with-renamed-export';
}
```

Default hbs tag sources:
```js
{
"ember-cli-htmlbars": "hbs",
"htmlbars-inline-precompile": "default",
"ember-cli-htmlbars-inline-precompile": "default",
"@glimmerx/component": "hbs",
}
```

- `babylonPlugins` - [Optional] The **additional** babylon plugins to use, e.g. `[ 'typescipt', 'jsx' ]`, see:
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/babylon/index.d.ts#L45.

Default used babylon plugins: `[ 'flow', 'classProperties' ]`

- `sortByStartKey` - [Optional] The extracted template nodes from the **ast** will not be ordered by their original
position in the source, so we can sort them using the `start` key, `false` by default.

### Example
```ts
import { searchAndExtractHbs } from 'ember-extract-inline-templates';

const source = `
import GlimmerComponent from '@glimmer/component';
// @ts-ignore
import hbs from 'ember-cli-htmlbars-inline-precompile';

const template = hbs\`


{{yield}}


\`;

interface IComponentArgs {
type: string;
value?: any;
}

class MyInputComponent extends GlimmerComponent {
type: string = 'text';
};

// @ts-ignore
export default Ember._setComponentTemplate(template, MyInputComponent);
`;

const hbs = searchAndExtractHbs(source);
console.log(hbs);
```
Output:
```hbs


{{yield}}

`
* `cd ember-extract-inline-templates`
* `yarn install`

### Linting

* `yarn lint`

### Running test

* `yarn test`