1 | # preserve [![NPM version](https://badge.fury.io/js/preserve.svg)](http://badge.fury.io/js/preserve)
|
2 |
|
3 | > Temporarily substitute tokens in the given `string` with placeholders, then put them back after transforming the string.
|
4 |
|
5 | Useful for protecting tokens, like templates in HTML, from being mutated when the string is transformed in some way, like from a formatter/beautifier.
|
6 |
|
7 | **Example without `preserve`**
|
8 |
|
9 | Let's say you want to use [js-beautify] on a string of html with Lo-Dash/Underscore templates, such as: `<ul><li><%= name %></li></ul>`:
|
10 |
|
11 | js-beautify will render the template unusable (and apply incorrect formatting because of the unfamiliar syntax from the Lo-Dash template):
|
12 |
|
13 | ```html
|
14 | <ul>
|
15 | <li>
|
16 | <%=n ame %>
|
17 | </li>
|
18 | </ul>
|
19 | ```
|
20 |
|
21 | **Example with `preserve`**
|
22 |
|
23 | Correct.
|
24 |
|
25 | ```html
|
26 | <ul>
|
27 | <li><%= name %></li>
|
28 | </ul>
|
29 | ```
|
30 |
|
31 | For the record, this is just a random example, I've had very few issues with js-beautify in general. But with or without js-beautify, this kind of token mangling does happen sometimes when you use formatters, beautifiers or similar tools.
|
32 |
|
33 | ## Install
|
34 | ## Install with [npm](npmjs.org)
|
35 |
|
36 | ```bash
|
37 | npm i preserve --save
|
38 | ```
|
39 |
|
40 | ## Run tests
|
41 |
|
42 | ```bash
|
43 | npm test
|
44 | ```
|
45 |
|
46 | ## API
|
47 | ### [.before](index.js#L23)
|
48 |
|
49 | Replace tokens in `str` with a temporary, heuristic placeholder.
|
50 |
|
51 | * `str` **{String}**
|
52 | * `returns` **{String}**: String with placeholders.
|
53 |
|
54 | ```js
|
55 | tokens.before('{a\\,b}');
|
56 | //=> '{__ID1__}'
|
57 | ```
|
58 |
|
59 | ### [.after](index.js#L44)
|
60 |
|
61 | Replace placeholders in `str` with original tokens.
|
62 |
|
63 | * `str` **{String}**: String with placeholders
|
64 | * `returns` **{String}** `str`: String with original tokens.
|
65 |
|
66 | ```js
|
67 | tokens.after('{__ID1__}');
|
68 | //=> '{a\\,b}'
|
69 | ```
|
70 |
|
71 |
|
72 | ## Contributing
|
73 | Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/preserve/issues)
|
74 |
|
75 | ## Author
|
76 |
|
77 | **Jon Schlinkert**
|
78 |
|
79 | + [github/jonschlinkert](https://github.com/jonschlinkert)
|
80 | + [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
|
81 |
|
82 | ## License
|
83 | Copyright (c) 2015-2015, Jon Schlinkert.
|
84 | Released under the MIT license
|
85 |
|
86 | ***
|
87 |
|
88 | _This file was generated by [verb](https://github.com/assemble/verb) on January 10, 2015._
|
89 |
|
90 | [js-beautify]: https://github.com/beautify-web/js-beautify |
\ | No newline at end of file |