§ Quick Take

import { strict as assert } from "assert";
import { isJinjaSpecific } from "regex-jinja-specific";

assert.equal(
  isJinjaSpecific().test(
    `<div>{{ '%.2f'|format(3.1415926) }}</div>`
  ),
  true
);

// in case of ambiguous, Nunjucks-or-Jinja code
assert.equal(
  isJinjaSpecific().test(`<div>{{ value }}</div>`),
  false
);

§ Purpose

Nunjucks and Jinja templating languages' syntax is mostly the same. There are certain code patterns which are Jinja-specific, mostly coming from Python functionality. This program, a regex, matches those patterns.

  • Namespaces

    {% set x = namespace(blablabla) %}

  • Backwards pattern

    {{'oodles' if crambles else 'brambles'}}

  • Python digit formatting

    '%.2f'|format(...

Often Python-specific features can be patched to make code render in Nunjucks.

This is not a definite detection tool but rather a minimal, fun attempt to programmatically distinguish between the two languages.

§ API

isJinjaSpecific()

In other words, it's a function which returns a RegExp object.

§ Changelog

See it in the monorepo opens in a new tab, on GitHub.

§ Contributing

To report bugs or request features or assistance, raise an issue on GitHub opens in a new tab.

Any code contributions welcome! All Pull Requests will be dealt promptly.

§ Licence

MIT opens in a new tab

Copyright © 2010–2021 Roy Revelt and other contributors

Related packages:

📦 detect-templating-language 2.0.14
Detects various templating languages present in string
📦 stristri 3.1.6
Extracts or deletes HTML, CSS, text and/or templating tags from string
📦 regex-is-jinja-nunjucks 2.0.14
Regular expression for detecting Jinja or Nunjucks code
📦 regex-is-jsp 2.0.14
Regular expression for detecting JSP (Java Server Pages) code
📦 regex-empty-conditional-comments 1.10.14
Regular expression for matching HTML empty conditional comments