123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434 |
- ///import editor.js
- ///import core/dom/dom.js
- ///import core/utils.js
- /**
- * dtd html语义化的体现类
- * @constructor
- * @namespace dtd
- */
- var dtd = (dom.dtd = (function() {
- function _(s) {
- for (var k in s) {
- s[k.toUpperCase()] = s[k];
- }
- return s;
- }
- var X = utils.extend2;
- var A = _({ isindex: 1, fieldset: 1 }),
- B = _({ input: 1, button: 1, select: 1, textarea: 1, label: 1 }),
- C = X(_({ a: 1 }), B),
- D = X({ iframe: 1 }, C),
- E = _({
- hr: 1,
- ul: 1,
- menu: 1,
- div: 1,
- blockquote: 1,
- noscript: 1,
- table: 1,
- center: 1,
- address: 1,
- dir: 1,
- pre: 1,
- h5: 1,
- dl: 1,
- h4: 1,
- noframes: 1,
- h6: 1,
- ol: 1,
- h1: 1,
- h3: 1,
- h2: 1
- }),
- F = _({ ins: 1, del: 1, script: 1, style: 1 }),
- G = X(
- _({
- mark: 1,
- b: 1,
- acronym: 1,
- bdo: 1,
- var: 1,
- "#": 1,
- abbr: 1,
- code: 1,
- br: 1,
- i: 1,
- cite: 1,
- kbd: 1,
- u: 1,
- strike: 1,
- s: 1,
- tt: 1,
- strong: 1,
- q: 1,
- samp: 1,
- em: 1,
- dfn: 1,
- span: 1
- }),
- F
- ),
- H = X(
- _({
- sub: 1,
- img: 1,
- embed: 1,
- object: 1,
- sup: 1,
- basefont: 1,
- map: 1,
- applet: 1,
- font: 1,
- big: 1,
- small: 1
- }),
- G
- ),
- I = X(_({ p: 1 }), H),
- J = X(_({ iframe: 1 }), H, B),
- K = _({
- img: 1,
- embed: 1,
- noscript: 1,
- br: 1,
- kbd: 1,
- center: 1,
- button: 1,
- basefont: 1,
- h5: 1,
- h4: 1,
- samp: 1,
- h6: 1,
- ol: 1,
- h1: 1,
- h3: 1,
- h2: 1,
- form: 1,
- font: 1,
- "#": 1,
- select: 1,
- menu: 1,
- ins: 1,
- abbr: 1,
- label: 1,
- code: 1,
- table: 1,
- script: 1,
- cite: 1,
- input: 1,
- iframe: 1,
- strong: 1,
- textarea: 1,
- noframes: 1,
- big: 1,
- small: 1,
- span: 1,
- hr: 1,
- sub: 1,
- bdo: 1,
- var: 1,
- div: 1,
- object: 1,
- sup: 1,
- strike: 1,
- dir: 1,
- map: 1,
- dl: 1,
- applet: 1,
- del: 1,
- isindex: 1,
- fieldset: 1,
- ul: 1,
- b: 1,
- acronym: 1,
- a: 1,
- blockquote: 1,
- i: 1,
- u: 1,
- s: 1,
- tt: 1,
- address: 1,
- q: 1,
- pre: 1,
- p: 1,
- em: 1,
- dfn: 1
- }),
- L = X(_({ a: 0 }), J), //a不能被切开,所以把他
- M = _({ tr: 1 }),
- N = _({ "#": 1 }),
- O = X(_({ param: 1 }), K),
- P = X(_({ form: 1 }), A, D, E, I),
- Q = _({ li: 1, ol: 1, ul: 1 }),
- R = _({ style: 1, script: 1 }),
- S = _({ base: 1, link: 1, meta: 1, title: 1 }),
- T = X(S, R),
- U = _({ head: 1, body: 1 }),
- V = _({ html: 1 });
- var block = _({
- address: 1,
- blockquote: 1,
- center: 1,
- dir: 1,
- div: 1,
- dl: 1,
- fieldset: 1,
- form: 1,
- h1: 1,
- h2: 1,
- h3: 1,
- h4: 1,
- h5: 1,
- h6: 1,
- hr: 1,
- isindex: 1,
- menu: 1,
- noframes: 1,
- ol: 1,
- p: 1,
- pre: 1,
- table: 1,
- ul: 1
- }),
- empty = _({
- area: 1,
- base: 1,
- basefont: 1,
- br: 1,
- col: 1,
- command: 1,
- dialog: 1,
- embed: 1,
- hr: 1,
- img: 1,
- input: 1,
- isindex: 1,
- keygen: 1,
- link: 1,
- meta: 1,
- param: 1,
- source: 1,
- track: 1,
- wbr: 1
- });
- return _({
- // $ 表示自定的属性
- // body外的元素列表.
- $nonBodyContent: X(V, U, S),
- //块结构元素列表
- $block: block,
- //内联元素列表
- $inline: L,
- $inlineWithA: X(_({ a: 1 }), L),
- $body: X(_({ script: 1, style: 1 }), block),
- $cdata: _({ script: 1, style: 1 }),
- //自闭和元素
- $empty: empty,
- //不是自闭合,但不能让range选中里边
- $nonChild: _({ iframe: 1, textarea: 1 }),
- //列表元素列表
- $listItem: _({ dd: 1, dt: 1, li: 1 }),
- //列表根元素列表
- $list: _({ ul: 1, ol: 1, dl: 1 }),
- //不能认为是空的元素
- $isNotEmpty: _({
- table: 1,
- ul: 1,
- ol: 1,
- dl: 1,
- iframe: 1,
- area: 1,
- base: 1,
- col: 1,
- hr: 1,
- img: 1,
- embed: 1,
- input: 1,
- textarea: 1,
- link: 1,
- meta: 1,
- param: 1,
- h1: 1,
- h2: 1,
- h3: 1,
- h4: 1,
- h5: 1,
- h6: 1
- }),
- //如果没有子节点就可以删除的元素列表,像span,a
- $removeEmpty: _({
- a: 1,
- abbr: 1,
- acronym: 1,
- address: 1,
- b: 1,
- bdo: 1,
- big: 1,
- cite: 1,
- code: 1,
- del: 1,
- dfn: 1,
- em: 1,
- font: 1,
- i: 1,
- ins: 1,
- label: 1,
- kbd: 1,
- q: 1,
- s: 1,
- samp: 1,
- small: 1,
- span: 1,
- strike: 1,
- strong: 1,
- sub: 1,
- sup: 1,
- tt: 1,
- u: 1,
- var: 1
- }),
- $removeEmptyBlock: _({ p: 1, div: 1 }),
- //在table元素里的元素列表
- $tableContent: _({
- caption: 1,
- col: 1,
- colgroup: 1,
- tbody: 1,
- td: 1,
- tfoot: 1,
- th: 1,
- thead: 1,
- tr: 1,
- table: 1
- }),
- //不转换的标签
- $notTransContent: _({ pre: 1, script: 1, style: 1, textarea: 1 }),
- html: U,
- head: T,
- style: N,
- script: N,
- body: P,
- base: {},
- link: {},
- meta: {},
- title: N,
- col: {},
- tr: _({ td: 1, th: 1 }),
- img: {},
- embed: {},
- colgroup: _({ thead: 1, col: 1, tbody: 1, tr: 1, tfoot: 1 }),
- noscript: P,
- td: P,
- br: {},
- th: P,
- center: P,
- kbd: L,
- button: X(I, E),
- basefont: {},
- h5: L,
- h4: L,
- samp: L,
- h6: L,
- ol: Q,
- h1: L,
- h3: L,
- option: N,
- h2: L,
- form: X(A, D, E, I),
- select: _({ optgroup: 1, option: 1 }),
- font: L,
- ins: L,
- menu: Q,
- abbr: L,
- label: L,
- table: _({
- thead: 1,
- col: 1,
- tbody: 1,
- tr: 1,
- colgroup: 1,
- caption: 1,
- tfoot: 1
- }),
- code: L,
- tfoot: M,
- cite: L,
- li: P,
- input: {},
- iframe: P,
- strong: L,
- textarea: N,
- noframes: P,
- big: L,
- small: L,
- //trace:
- span: _({
- "#": 1,
- br: 1,
- b: 1,
- strong: 1,
- u: 1,
- i: 1,
- em: 1,
- sub: 1,
- sup: 1,
- strike: 1,
- span: 1
- }),
- hr: L,
- dt: L,
- sub: L,
- optgroup: _({ option: 1 }),
- param: {},
- bdo: L,
- var: L,
- div: P,
- object: O,
- sup: L,
- dd: P,
- strike: L,
- area: {},
- dir: Q,
- map: X(_({ area: 1, form: 1, p: 1 }), A, F, E),
- applet: O,
- dl: _({ dt: 1, dd: 1 }),
- del: L,
- isindex: {},
- fieldset: X(_({ legend: 1 }), K),
- thead: M,
- ul: Q,
- acronym: L,
- b: L,
- a: X(_({ a: 1 }), J),
- blockquote: X(_({ td: 1, tr: 1, tbody: 1, li: 1 }), P),
- caption: L,
- i: L,
- u: L,
- tbody: M,
- s: L,
- address: X(D, I),
- tt: L,
- legend: L,
- q: L,
- pre: X(G, C),
- p: X(_({ a: 1 }), L),
- em: L,
- dfn: L,
- mark: L
- });
- })());
|