diff options
author | Aaron O'Mullan <aaron.omullan@gmail.com> | 2015-03-12 19:33:49 +0100 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-12-22 15:00:39 +0100 |
commit | 2196afddd60f6a9e050cad7baf4bf6d6935f6769 (patch) | |
tree | c434bf9bb0b5d0e2e80f490e13743ba03bc8af17 /packages/gitbook-markdown/lib/annotate.js | |
parent | 46fd9f8a53a680a3d1ce156c71d061d057ea4e67 (diff) | |
download | gitbook-2196afddd60f6a9e050cad7baf4bf6d6935f6769.zip gitbook-2196afddd60f6a9e050cad7baf4bf6d6935f6769.tar.gz gitbook-2196afddd60f6a9e050cad7baf4bf6d6935f6769.tar.bz2 |
Add lib/annotate_engine.js
Decouple rules and annotation execution
Diffstat (limited to 'packages/gitbook-markdown/lib/annotate.js')
-rw-r--r-- | packages/gitbook-markdown/lib/annotate.js | 42 |
1 files changed, 3 insertions, 39 deletions
diff --git a/packages/gitbook-markdown/lib/annotate.js b/packages/gitbook-markdown/lib/annotate.js index dab3d0e..34e5d90 100644 --- a/packages/gitbook-markdown/lib/annotate.js +++ b/packages/gitbook-markdown/lib/annotate.js @@ -1,3 +1,5 @@ +var engine = require('./annotate_engine'); + // Pulled from "kramed.Lexer.rules.tables" var rules = { newline: /^\n+/, code: /^( {4}[^\n]+\n*)+/, @@ -36,45 +38,7 @@ var ruleMap = { } function annotate(src) { - var tokens = []; - - while(src) { - // Pick rule - var rule = ruleTypes.filter(function(ruleName, idx) { - var regex = rules[ruleName]; - return regex.exec(src); - })[0]; - - // No matching rules - if(!rule) { - throw new Error('No rule found for: ' + src); - } - - // Use rule to extract block - var ruleRegex = rules[rule]; - var block = ruleRegex.exec(src); - - // Get rule type - var type = ruleMap[rule] || rule; - - // Get raw text - var raw = block[0]; - - // Break out here to avoid infinite loops - if(raw.length === 0) { - break; - } - - tokens.push({ - type: ruleMap[rule] || rule, - raw: raw, - }); - - // Update source - src = src.substring(raw.length); - } - - return tokens + return engine(src, rules, ruleTypes, ruleMap); } module.exports = annotate; |