caffeine-mc
Version:
Select, configure and extend your to-JavaScript compiler, with arbitrary code, on a per file bases from within the file.
31 lines (27 loc) • 897 B
text/coffeescript
{
present, isFunction, log, isString, lowerCamelCase, upperCamelCase, merge
} = require 'art-standard-lib'
CaffeineEight = require 'caffeine-eight'
module.exports = class CaffeineMcParser extends CaffeineEight.Parser
root: "!oneLinerWithoutColon meta? toEof"
,
getter:
compilerName: -> ?.compilerName?.text
metaCode: -> ?.metaCode?.text
code: -> ?.text || ""
meta: [
"'|' compilerName /\: */ metaCode:toEol end"
"'|' / +/ metaCode:toEol end"
"'|' compilerName /\: */? metaCode:block end"
"'|' metaCode:block end"
"'|' compilerName end"
"'|'"
]
oneLinerWithoutColon: "'|' compilerName / *[^:\n]/"
compilerName: /[^:\s]+/i
toEof: /(.|\n)*$/
toEol: /\S[^\n]*/
end: /\n|$/
block: CaffeineEight.Extensions.IndentBlocks.getPropsToSubparseBlock rule: "toEof"