Code Monkey home page Code Monkey logo

eslint-plugin-jinja's Introduction

npm version

eslint-plugin-jinja

This plugin treats Jinja template expressions and statements as valid Javascript expressions, so that ESLint can check javascript code, ignoring any Jinja expression found.

As a note, it is possible that this best effort conversion yeilds false negatives or positives because it is impossible to know the right way to insert placeholders.

Example

Plugin will convert (internally) this code:

  (function() {
    'use strict';

    {# plain jinja variables are converted into strings
      (preferred quotes are getting from .eslintrc file) #}

    var a = 'this is' + {{ some_variable }};

    {# if it is already in string, it is wrapped with spaces #}

    var b = 'this is {{ other_variable }}';
    var c = 'and this is {{ another_one['field']}}';

    {# if-else statements are converted into ( ..., ... ) expression #}

    var d = {% if something %} 'this is something' {% else %} null {% endif %};

    {# any other statements become comments #}
    
    {% for i in [1, 2, 3] %}
      console.log(a, b, c, d);
    {% endfor %}
  })();

into this:

 (function() {
    'use strict';

    /* plain jinja variables are converted into strings
      (preferred quotes are getting from .eslintrc file) */

    var a = 'this is' + '  some_variable  ';

    /* if it is already in string, it is wrapped with spaces */

    var b = 'this is    other_variable   ';
    var c = 'and this is    another_one[ field ]  ';

    /* if-else statements are converted into ( ..., ... ) expression */

    var d = (/*if something */ 'this is something' ,/*else */ null /*endif */);

    /* any other statements become comments */

    /* for i in [1, 2, 3] */
      console.log(a, b, c, d);
    /* endfor */
  })();

eslint-plugin-jinja's People

Contributors

alexkuz avatar mlucool avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

eslint-plugin-jinja's Issues

Not compatible with ESLint 8.5.0

Trying to install normally gives

npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! 
npm ERR! While resolving: [email protected]
npm ERR! Found: [email protected]
npm ERR! node_modules/eslint
npm ERR!   dev eslint@"^8.5.0" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer eslint@"^0.23.0 || ^1.0.0 || ^2.0.0" from [email protected]
npm ERR! node_modules/eslint-plugin-jinja2
npm ERR!   dev eslint-plugin-jinja2@"*" from the root project
npm ERR! 
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.

And trying to install with --force - while it installs - just doesn't work.

Upgrade peerDependency for eslint

Any chance that we can add ^3.0.0 to

"eslint": "^0.23.0 || ^1.0.0 || ^2.0.0"
?

Version 3 of eslint was released back in July and many other plugin dependencies have since moved on to that version, which makes it difficult to use eslint-plugin-jinja in conjunction with anything else at this stage.

ES6 Export Not Compatible with ESLint 4.0?

Thanks for this library!

I tried using this with eslint 4.2.1 with this config:

{
    "env": {
        "browser": true,
        "commonjs": true
    },
    "extends": [
        "eslint:recommended"
    ],
    "plugins": [
        "eslint-plugin-jinja"
    ]
}

Eslint does not pick up the preprocessor because this line is assuming CommonJS exports. If I modify lib/index.js to export the preprocessors, then it is picked up.

Am I missing something? Happy to submit a PR with the change.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.