mirror of
https://github.com/postlight/mercury-parser
synced 2024-11-18 21:28:22 +00:00
8f42e119e8
Squashed commit of the following: commit deaf9e60d031d9ee06e74b8c0895495b187032a5 Author: Adam Pash <adam.pash@gmail.com> Date: Tue Sep 20 10:31:09 2016 -0400 chore: README for custom parsers commit a8e8ad633e0d1576a52dbc90ce31b98fb2ec21ee Author: Adam Pash <adam.pash@gmail.com> Date: Mon Sep 19 23:36:09 2016 -0400 draft of readme commit 4f0f463f821465c282ce006378e5d55f8f41df5f Author: Adam Pash <adam.pash@gmail.com> Date: Mon Sep 19 17:56:34 2016 -0400 custom extractor used to build basic parser for theatlantic commit c5562a3cede41f56c4e723dcfa1181b49dcaae4d Author: Adam Pash <adam.pash@gmail.com> Date: Mon Sep 19 17:20:13 2016 -0400 pre-commit to test custom parser generator commit 7d50d5b7ab780b79fae38afcb87a7d1da5d139b2 Author: Adam Pash <adam.pash@gmail.com> Date: Mon Sep 19 17:19:55 2016 -0400 feat: added nytimes parser commit 58b8d83a56927177984ddfdf70830bc4f328f200 Author: Adam Pash <adam.pash@gmail.com> Date: Mon Sep 19 17:17:28 2016 -0400 feat: can do fuzzy search or go straight to file commit c99add753723a8e2ac64d51d7379ac8e23125526 Author: Adam Pash <adam.pash@gmail.com> Date: Mon Sep 19 10:52:26 2016 -0400 refactored export for custom extractors for easier renames commit 22563413669651bb497f1bb2a92085b71f2ae324 Author: Adam Pash <adam.pash@gmail.com> Date: Fri Sep 16 17:36:13 2016 -0400 feat: custom extractor generation in place commit 2285a29908a7f82a5de3c81f6b2b902ddec9bdaa Author: Adam Pash <adam.pash@gmail.com> Date: Fri Sep 16 16:42:20 2016 -0400 good progress
29 lines
656 B
JavaScript
29 lines
656 B
JavaScript
import insertValues from './insert-values'
|
|
|
|
const bodyPattern = /^\n([\s\S]+)\s{2}$/gm;
|
|
const trailingWhitespace = /\s+$/;
|
|
|
|
export default function template(strings, ...values) {
|
|
const compiled = insertValues(strings, ...values);
|
|
let [body] = compiled.match(bodyPattern) || [];
|
|
let indentLevel = /^\s{0,4}(.+)$/g;
|
|
|
|
if (!body) {
|
|
body = compiled;
|
|
indentLevel = /^\s{0,2}(.+)$/g;
|
|
}
|
|
|
|
return body.split('\n')
|
|
.slice(1)
|
|
.map((line) => {
|
|
line = line.replace(indentLevel, '$1');
|
|
|
|
if (trailingWhitespace.test(line)) {
|
|
line = line.replace(trailingWhitespace, '');
|
|
}
|
|
|
|
return line;
|
|
})
|
|
.join('\n');
|
|
}
|