diff options
author | Aaron O'Mullan <aaron.omullan@friendco.de> | 2014-07-10 14:27:34 +0200 |
---|---|---|
committer | Aaron O'Mullan <aaron.omullan@friendco.de> | 2014-07-11 01:22:07 +0200 |
commit | 925a9b1388dbe0f3495ddfca228bfd8508ef54ef (patch) | |
tree | 7a0b89da98b6e85e9eeb3fe114560e6a2bce2235 /lib/parse/code_include.js | |
parent | 520045441b9401fadfba2b1b03696bd15b60027d (diff) | |
download | gitbook-925a9b1388dbe0f3495ddfca228bfd8508ef54ef.zip gitbook-925a9b1388dbe0f3495ddfca228bfd8508ef54ef.tar.gz gitbook-925a9b1388dbe0f3495ddfca228bfd8508ef54ef.tar.bz2 |
Support importing code snippets
Allowing to keep code in separate files, which can be cleaner in a
quite a few scenarios
Diffstat (limited to 'lib/parse/code_include.js')
-rw-r--r-- | lib/parse/code_include.js | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/parse/code_include.js b/lib/parse/code_include.js new file mode 100644 index 0000000..f4656f1 --- /dev/null +++ b/lib/parse/code_include.js @@ -0,0 +1,20 @@ +var fs = require('fs'); +var path = require('path'); + +module.exports = function(code, folder) { + folder = folder || ''; + + return code.replace(/{{([\s\S]+?)}}/g, function(match, filename) { + // Normalize filename + var fname = path.join(folder, filename.trim()); + + // Try including snippet from FS + try { + // Trim trailing newlines/space of imported snippets + return fs.readFileSync(fname, 'utf8').trimRight(); + } catch(err) {} + + // If fails leave content as is + return match; + }); +}; |