html-nest-rule
Version:
nesting rule realization for HTML spec
142 lines (136 loc) • 4.18 kB
JavaScript
/**
* @file nest rules
* @author nighca<nighca@live.cn>
* @spec https://www.w3.org/TR/html5/single-page.html
*/
var rules = require('./lib/core');
[
require('./lib/tags/html'),
require('./lib/tags/head'),
require('./lib/tags/title'),
require('./lib/tags/base'),
require('./lib/tags/link'),
require('./lib/tags/meta'),
require('./lib/tags/style'),
require('./lib/tags/body'),
require('./lib/tags/article'),
require('./lib/tags/section'),
require('./lib/tags/nav'),
require('./lib/tags/aside'),
require('./lib/tags/h1'),
require('./lib/tags/h2'),
require('./lib/tags/h3'),
require('./lib/tags/h4'),
require('./lib/tags/h5'),
require('./lib/tags/h6'),
require('./lib/tags/header'),
require('./lib/tags/footer'),
require('./lib/tags/address'),
require('./lib/tags/p'),
require('./lib/tags/hr'),
require('./lib/tags/pre'),
require('./lib/tags/blockquote'),
require('./lib/tags/ol'),
require('./lib/tags/ul'),
require('./lib/tags/li'),
require('./lib/tags/dl'),
require('./lib/tags/dt'),
require('./lib/tags/dd'),
require('./lib/tags/figure'),
require('./lib/tags/figcaption'),
require('./lib/tags/div'),
require('./lib/tags/main'),
require('./lib/tags/a'),
require('./lib/tags/em'),
require('./lib/tags/strong'),
require('./lib/tags/small'),
require('./lib/tags/s'),
require('./lib/tags/cite'),
require('./lib/tags/q'),
require('./lib/tags/dfn'),
require('./lib/tags/abbr'),
require('./lib/tags/data'),
require('./lib/tags/time'),
require('./lib/tags/code'),
require('./lib/tags/var'),
require('./lib/tags/samp'),
require('./lib/tags/kbd'),
require('./lib/tags/sub'),
require('./lib/tags/sup'),
require('./lib/tags/i'),
require('./lib/tags/b'),
require('./lib/tags/u'),
require('./lib/tags/mark'),
require('./lib/tags/ruby'),
require('./lib/tags/rb'),
require('./lib/tags/rt'),
require('./lib/tags/rtc'),
require('./lib/tags/rp'),
require('./lib/tags/bdi'),
require('./lib/tags/bdo'),
require('./lib/tags/span'),
require('./lib/tags/br'),
require('./lib/tags/wbr'),
require('./lib/tags/ins'),
require('./lib/tags/del'),
require('./lib/tags/img'),
require('./lib/tags/iframe'),
require('./lib/tags/embed'),
require('./lib/tags/object'),
require('./lib/tags/param'),
require('./lib/tags/video'),
require('./lib/tags/audio'),
require('./lib/tags/source'),
require('./lib/tags/track'),
require('./lib/tags/map'),
require('./lib/tags/area'),
require('./lib/tags/table'),
require('./lib/tags/caption'),
require('./lib/tags/colgroup'),
require('./lib/tags/col'),
require('./lib/tags/tbody'),
require('./lib/tags/thead'),
require('./lib/tags/tfoot'),
require('./lib/tags/tr'),
require('./lib/tags/td'),
require('./lib/tags/th'),
require('./lib/tags/form'),
require('./lib/tags/label'),
require('./lib/tags/input'),
require('./lib/tags/button'),
require('./lib/tags/select'),
require('./lib/tags/datalist'),
require('./lib/tags/optgroup'),
require('./lib/tags/option'),
require('./lib/tags/textarea'),
require('./lib/tags/keygen'),
require('./lib/tags/output'),
require('./lib/tags/progress'),
require('./lib/tags/meter'),
require('./lib/tags/fieldset'),
require('./lib/tags/legend'),
require('./lib/tags/script'),
require('./lib/tags/noscript'),
require('./lib/tags/template'),
require('./lib/tags/canvas'),
require('./lib/tags/math'),
require('./lib/tags/svg')
].forEach(function (rule) {
rules[rule.tagName] = rule;
});
module.exports = {
rules: rules,
/**
* Get rule for given tagName / element.
*
* @param {string|Element} target - given tagName or element
* @return {Object|undefined} corresponding rule
*/
from: function (target) {
var tag = target && target.tagName
? target.tagName
: target;
tag = (tag + '').toLowerCase();
return rules[tag];
}
};