1 | const { isArr } = require('./util/tools');
|
2 |
|
3 |
|
4 | const HTML_TAGS = [
|
5 |
|
6 | 'html',
|
7 |
|
8 | 'link,meta,style,title',
|
9 |
|
10 | 'body',
|
11 |
|
12 | 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section',
|
13 |
|
14 | 'blockquote,dd,dir,div,dl,dt,figcaption,figure,hr,li,main,ol,p,pre,ul',
|
15 |
|
16 | 'a,abbr,b,bdi,bdo,br,cite,code,data,dfn,em,i,kdb,mark,nobr,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,tt,u,var,wbr',
|
17 |
|
18 | 'area,audio,img,map,track,video',
|
19 |
|
20 | 'applet,embed,iframe,noembed,object,param,picture,source',
|
21 |
|
22 | 'canvas,noscript,script',
|
23 |
|
24 | 'del,ins',
|
25 |
|
26 | 'caption,col,colgroup,table,tbody,td,tfoot,th,thead,tr',
|
27 |
|
28 | 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea',
|
29 |
|
30 | 'details,dialog,menu,menuitem,summary',
|
31 |
|
32 | 'content,element,shadow,slot,template',
|
33 |
|
34 | 'acronym,applet,basefont,bgsound,big,blink,center,command,content,dir,element,font,frame,frameset,image,isindex,keygen,listing,marquee,menuitem,multicol,nextid,nobr,noembed,noframes,plaintext,shadow,spacer,strike,tt,xmp'
|
35 | ].join(',').split(',');
|
36 |
|
37 |
|
38 | const WXML_TAGS = [
|
39 |
|
40 | 'block,view,scroll-view,swiper,movable-view,cover-view',
|
41 |
|
42 | 'icon,text,rich-text,progress',
|
43 |
|
44 | 'button,checkbox,form,input,label,picker,picker-view,radio,slider,switch,textarea',
|
45 |
|
46 | 'navigator',
|
47 |
|
48 | 'image,video,camera,live-player,live-pusher',
|
49 |
|
50 | 'map',
|
51 |
|
52 | 'canvas',
|
53 |
|
54 | 'slot',
|
55 |
|
56 | 'open-data,web-view,ad'
|
57 | ].join(',').split(',');
|
58 |
|
59 | const HTML2WXML_MAP = {
|
60 | 'select': 'picker',
|
61 | 'datalist': 'picker',
|
62 | 'img': 'image',
|
63 | 'source': 'audio',
|
64 | 'video': 'video',
|
65 | 'track': 'video',
|
66 | 'a': 'navigator',
|
67 | 'span': 'label',
|
68 | 'contact-button': 'contact-button',
|
69 |
|
70 | 'wx-template': 'template'
|
71 | };
|
72 |
|
73 |
|
74 |
|
75 |
|
76 |
|
77 |
|
78 |
|
79 | const combineTag = function (original, additional) {
|
80 | if (isArr(additional)) {
|
81 | return original.concat(additional);
|
82 | } else if (typeof additional === 'string') {
|
83 | return original.concat(additional.split(','));
|
84 | } else if (typeof additional !== 'object') {
|
85 | return [].concat(original);
|
86 | }
|
87 |
|
88 | let addTags = [];
|
89 | let removeTags = [];
|
90 | for (let k in additional) {
|
91 | if (addTags[k]) {
|
92 | addTags.push(k);
|
93 | } else {
|
94 | removeTags.push(k);
|
95 | }
|
96 | }
|
97 |
|
98 | let rst = original.concat(addTags);
|
99 | removeTags.forEach(k => {
|
100 | let index = rst.indexOf(k);
|
101 | while (index !== -1) {
|
102 | rst.splice(index, 1);
|
103 | index = rst.indexOf(k);
|
104 | }
|
105 | });
|
106 | };
|
107 |
|
108 | const combineTagMap = function (original, additional = {}) {
|
109 | return Object.assign({}, original, additional);
|
110 | };
|
111 |
|
112 | exports = module.exports = {
|
113 | HTML_TAGS,
|
114 | WXML_TAGS,
|
115 | HTML2WXML_MAP,
|
116 | combineTag,
|
117 | combineTagMap
|
118 | };
|