Extract values from structured strings

Downloads in past


1.0.05 years ago5 years agoMinified + gzip package size for reverse-string-template in KB


Reverse String Template

Extract values from structured strings. This module used regular expressions under the covers while providing a simpler template stile syntax for specifying patterns.
Pattern matching is a bit touchy 🤡. If the result is unexpectedly null, it means the string wasn't sufficiently matched.
This work was derived from laktek/extract-values 🙏.


var tmpl = require('reverse-string-template')

tmpl("/2012/08/12/test.html", "/{{year}}/{{month}}/{{day}}/{{title}}.html")
>> { "year": "2012", "month": "08", "day": "12", "title": "test" }

tmpl("John Doe <> (", "{}name}} <{}email}}> ({}url}})")
>> {"name": "John Doe", "email": "", "url": "" }

tmpl("from 4th October  to 10th  October", "from `from` to `to`", { whitespace: 1, delimiters: ["`", "`"] })
>> {"from": "4th October", "to": "10th October" }

tmpl("Convert 1500 Grams to Kilograms", "convert {{quantity}} {{from_unit}} to {{to_unit}}", { lowercase: true })
>> {"quantity": "1500", "from_unit": "grams", "to_unit": "kilograms" }]

How to Use

Install as a NPM package

npm install reverse-string-template

  • Then require in your project.

Unit Tests

Run npm test.
  ✓ lakteks original test cases should pass
  ✓ should output expected values

2 passing (19ms)


whitespace - normalizes the whitespace in the input string, so it can be aligned with the given pattern. You can define the number of continous whitespaces to contain in the string. Making it zero (0) will remove all whitespaces.
lowercase - converts the input string to lowercase before matching.
delimiters - If specify the delimiters used in the pattern to define the values. Default delimiters are {{ and }}.
lazydelimiters - If specify the lazy delimiters used in the pattern to define the values. Default delimiters are {% and %}. Lazy delimiator produce matchers using lazy matching (instead of greedy).