JSPM

lodash-template-js-parser

1.1.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3624
  • Score
    100M100P100Q121418F
  • License MIT

A JavaScript parser for lodash.template

Package Exports

  • lodash-template-js-parser

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (lodash-template-js-parser) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

lodash-template-js-parser Build Status

A JavaScript parser/splitter for lodash.template

Features

  • It separate JavaScript Code and Template String from lodash.template content
    • Preserve same position of JavaScript code as possible

Lodash template -> JavaScript Code and Template Content.

It help to implement lint tools for JavaScript code in lodash template.

This idea and implementation is based on ota-meshi/eslint-plugin-lodash-template.

Motivation

ota-meshi/eslint-plugin-lodash-template focus on linting by ESLint, so It includes many features.

I want to get simple parser/splitter for lodash template. lodash-template-js-parser just includes a parser for lodash template, So lodash-template-js-parser does not includes JavaScript Parser like espree, babel/parser.

Install

Install with npm:

npm install lodash-template-js-parser

Usage

export interface parseTemplateOptions {
    templateSettings?: {
        escape?: [string, string];
        evaluate?: [string, string];
        interpolate?: [string, string];
    };
}
/**
 * Parse the template and return { script, template } object.
 * @param code The template to parse.
 * @param parserOptions The parser options.
 * @returns The parsing result object.
 */
export declare function parseTemplate(template: string, parserOptions: parseTemplateOptions): {
    script: string;
    template: string;
};

Example:

import { parseTemplate } from "lodash-template-js-parser";
const content = `
const age = 18;
<% if (age < 18) { %>
    <li><%= name %> (age: <%= age %>)</li>
<% } else { %>
    <li>over the age limit!</li>
<% }%>
`;
const { script, template } = parseTemplate(content, {
    templateSettings: {
        interpolate: ["#{", "}"]
    }
});
assert.strictEqual(script, `
               
   if (age < 18) {   
            name ;            age ;   
   } else {   
                                
   }  
`);
assert.strictEqual(template, `
const age = 18;
                     
    <li>            (age:           )</li>
              
    <li>over the age limit!</li>
      
`);

Changelog

See Releases page.

Running tests

Install devDependencies and Run npm test:

npm test

Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

License

MIT © azu

This project is based on eslint-plugin-lodash-template.

MIT License
Copyright (c) 2018 Yosuke Ota