UNPKG

nhz.lib

Version:
53 lines (46 loc) 1.25 kB
var AbstractMapper, declarations, property, rule, rules; AbstractMapper = require('abstract-mapper'); property = /([-_a-z][-_a-z0-9]*)\s*:\s*(.*\)|.*?)\s*(?=;|\s*$)/gmi; rule = /([-._@a-z][-_a-z0-9]*[^{}]*?)\s*\{([^{}]+|([^{}]+\{[^{}]+\}\s*)+)\}/gmi; declarations = new AbstractMapper([ function($, result) { if (result == null) { result = {}; } return { result: result }; }, function($) { return $.replace(property, (function(_this) { return function($0, name, value) { return _this.result[name] = value; }; })(this)); }, function() { return this.result; } ]); rules = new AbstractMapper([ function($, result) { if (result == null) { result = {}; } return { result: result }; }, function($) { return $.replace(rule, (function(_this) { return function($0, name, block) { var base, base1; if ((name.substr(0, 1)) === '@') { return rules(block, ((base = _this.result)[name] || (base[name] = {}))); } else { return declarations(block, ((base1 = _this.result)[name] || (base1[name] = {}))); } }; })(this)); }, function() { return this.result; } ]); module.exports = rules;