oipage 0.3.0 → 0.3.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/.github/FUNDING.yml +11 -11
  2. package/AUTHORS.txt +6 -6
  3. package/CHANGELOG +62 -56
  4. package/LICENSE +20 -20
  5. package/README.md +122 -122
  6. package/bin/options.js +73 -73
  7. package/bin/run +208 -208
  8. package/browserjs/getStyle/index.d.ts +10 -10
  9. package/browserjs/getStyle/index.js +12 -12
  10. package/browserjs/index.d.ts +12 -12
  11. package/browserjs/index.js +8 -8
  12. package/browserjs/onReady/index.d.ts +7 -7
  13. package/browserjs/onReady/index.js +7 -7
  14. package/browserjs/setStyle/index.d.ts +9 -9
  15. package/browserjs/setStyle/index.js +4 -4
  16. package/corejs/animation/index.d.ts +11 -11
  17. package/corejs/animation/index.js +101 -101
  18. package/corejs/index.d.ts +9 -9
  19. package/corejs/index.js +6 -6
  20. package/corejs/throttle/index.d.ts +30 -30
  21. package/corejs/throttle/index.js +49 -49
  22. package/nodejs/core/file.js +162 -162
  23. package/nodejs/core/image.js +4 -4
  24. package/nodejs/core/log.js +89 -89
  25. package/nodejs/core/network.js +39 -39
  26. package/nodejs/core/options.js +48 -48
  27. package/nodejs/core/remote.js +60 -60
  28. package/nodejs/core/responseFileList.js +27 -27
  29. package/nodejs/core/server.js +198 -189
  30. package/nodejs/data/404.js +51 -51
  31. package/nodejs/data/mime.types.js +111 -111
  32. package/nodejs/form/common.js +2 -2
  33. package/nodejs/form/index.js +79 -79
  34. package/nodejs/form/select.js +9 -9
  35. package/nodejs/index.js +57 -57
  36. package/nodejs/loader/simpleScss.js +247 -247
  37. package/nodejs/loader/xhtml.js +520 -520
  38. package/nodejs/reader/plain.js +20 -20
  39. package/package.json +33 -33
  40. package/stylecss/index.css +3 -3
  41. package/stylecss/normalize.css +93 -93
  42. package/stylecss/rasterize.css +317 -317
  43. package/stylecss/skeleton.css +16 -16
  44. package/types/get-options.d.ts +5 -5
  45. package/types/index.d.ts +186 -186
@@ -1,248 +1,248 @@
1
- let toSelector = function (preSelectorArray, deep) {
2
-
3
- let selectors = preSelectorArray[0], i, j, k;
4
-
5
- // 一层层深入
6
- for (i = 1; i < deep; i++) {
7
-
8
- let temp = [];
9
- // 前置循环
10
- for (j = 0; j < selectors.length; j++) {
11
-
12
- // 预选循环
13
- for (k = 0; k < preSelectorArray[i].length; k++) {
14
-
15
- temp.push(selectors[j] + preSelectorArray[i][k]);
16
-
17
- }
18
-
19
- }
20
-
21
- selectors = temp;
22
- }
23
-
24
- // 最后补充 {
25
- return "\n" + (selectors.join(',')) + "{\n";
26
- };
27
-
28
- // 把代码变成代码块
29
- // 比如一个注释就是一块,无论注释的内容有多少
30
- let analyseBlock = function (source) {
31
-
32
- let i = -1,
33
-
34
- // 当前面对的字符
35
- currentChar = null;
36
-
37
- // 获取下一个字符
38
- let next = function () {
39
- currentChar = i++ < source.length - 1 ? source[i] : null;
40
- return currentChar;
41
- };
42
-
43
- // 获取往后n个值
44
- let nextNValue = function (n) {
45
- return source.substring(i, n + i > source.length ? source.length : n + i);
46
- };
47
-
48
- let blocks = [];
49
- let currentBlock = "";
50
-
51
- next();
52
-
53
- while (true) {
54
-
55
- // 先剔除空白字符
56
- // 保证正式开始的时候匹配的是有效的
57
- while (new RegExp("[\\x20\\t\\r\\n\\f]").test(currentChar)) {
58
- next();
59
- }
60
-
61
- // 如果匹配的字符没有了
62
- if (currentChar == null) break;
63
-
64
- // 如果是注释
65
- // /* 类型一 */
66
- if (nextNValue(2) == '/*') {
67
-
68
- next(); next();
69
- currentBlock = "/*";
70
-
71
- while (nextNValue(2) != '*/' && currentChar != null) {
72
- currentBlock += currentChar;
73
- next();
74
- }
75
-
76
- // 对于注释 /* */
77
- // 如果到结尾都没有闭合,应该提示语法错误
78
- if (currentChar == null) {
79
- throw new Error('The comment is not closed.');
80
- }
81
-
82
- currentBlock += "*/";
83
- next(); next();
84
-
85
- blocks.push({
86
- value: currentBlock,
87
- type: "comment-double"
88
- });
89
- }
90
-
91
- // 如果是注释
92
- // // 类型二
93
- else if (nextNValue(2) == '//') {
94
- currentBlock = '';
95
-
96
- while (currentChar != '\n' && currentChar != null) {
97
- currentBlock += currentChar;
98
- next();
99
- }
100
-
101
- blocks.push({
102
- value: currentBlock,
103
- type: "comment-single"
104
- });
105
-
106
- }
107
-
108
- // 如果是结束
109
- // }
110
- else if (currentChar == '}') {
111
-
112
- blocks.push({
113
- value: "}",
114
- type: "end"
115
- });
116
-
117
- next();
118
-
119
- }
120
-
121
- // 余下,只有两种情况:
122
- // 1.如是是开始
123
- // xxx {
124
- // 2.可能是一个语句
125
- // xxx : xxx ;
126
- // 这两种都需要进一步匹配
127
- else {
128
-
129
- currentBlock = '';
130
-
131
- // 目前先没有考虑下列情况:
132
- // 语句 content:";"
133
- while (currentChar != '{' && currentChar != ';' && currentChar != null) {
134
- currentBlock += currentChar;
135
- next();
136
- }
137
-
138
- if (currentChar == null) {
139
- throw new Error('Statement or code block missing closure.');
140
- }
141
-
142
- blocks.push({
143
- value: currentBlock + currentChar,
144
- type: {
145
- '{': "begin",
146
- ';': 'statement'
147
- }[currentChar]
148
- });
149
-
150
- next();
151
-
152
- }
153
-
154
- }
155
-
156
- return blocks;
157
- };
158
-
159
-
160
- module.exports = function (source) {
161
-
162
- // 分析出代码块
163
-
164
- let blocks = analyseBlock(source);
165
-
166
- // 根据代码块获得最终代码
167
-
168
- let i, j, cssCode = "", preSelectorArray = [], deep = 0;
169
- for (i = 0; i < blocks.length; i++) {
170
-
171
- // 注释 double
172
- if (blocks[i].type == 'comment-double') {
173
-
174
- cssCode += blocks[i].value;
175
-
176
- }
177
-
178
- // 注释 single
179
- else if (blocks[i].type == 'comment-single') {
180
-
181
- cssCode += "\n/* " + blocks[i].value + " */\n";
182
-
183
- }
184
-
185
- // 开始
186
- else if (blocks[i].type == 'begin') {
187
-
188
- let preSplit = blocks[i].value.split(',');
189
- let preSelect = [];
190
- for (j = 0; j < preSplit.length; j++) {
191
-
192
- // 去掉两端的空格
193
- preSelect[j] = preSplit[j].replace(/\{$/, '').trim();
194
-
195
- // 判断拼接方式
196
- if (/^&/.test(preSelect[j])) {
197
- preSelect[j] = preSelect[j].replace(/^&/, '');
198
- } else {
199
- preSelect[j] = " " + preSelect[j];
200
- }
201
-
202
- }
203
-
204
- // 登记到前缀数组
205
- preSelectorArray[deep] = preSelect;
206
- deep += 1;
207
- }
208
-
209
- // 结束
210
- else if (blocks[i].type == 'end') {
211
-
212
- deep -= 1;
213
-
214
- }
215
-
216
- // 语句
217
- else if (blocks[i].type == 'statement') {
218
-
219
- // 如果是第一个
220
- j = 1;
221
- let preType = blocks[i - j].type;
222
- while (['comment-double', 'comment-single'].indexOf(preType) > -1) {
223
- j += 1;
224
- preType = blocks[i - j].type;
225
- }
226
- if (['end', 'begin'].indexOf(preType) > -1) {
227
- cssCode += toSelector(preSelectorArray, deep);
228
- }
229
-
230
- cssCode += "\n" + blocks[i].value + "\n";
231
-
232
- // 如果是最后一个
233
- j = 1;
234
- let nextType = blocks[i + j].type;
235
- while (['comment-double', 'comment-single'].indexOf(nextType) > -1) {
236
- j += 1;
237
- nextType = blocks[i + j].type;
238
- }
239
- if (['end', 'begin'].indexOf(nextType) > -1) {
240
- cssCode += "\n}\n";
241
- }
242
-
243
- }
244
-
245
- }
246
-
247
- return cssCode;
1
+ let toSelector = function (preSelectorArray, deep) {
2
+
3
+ let selectors = preSelectorArray[0], i, j, k;
4
+
5
+ // 一层层深入
6
+ for (i = 1; i < deep; i++) {
7
+
8
+ let temp = [];
9
+ // 前置循环
10
+ for (j = 0; j < selectors.length; j++) {
11
+
12
+ // 预选循环
13
+ for (k = 0; k < preSelectorArray[i].length; k++) {
14
+
15
+ temp.push(selectors[j] + preSelectorArray[i][k]);
16
+
17
+ }
18
+
19
+ }
20
+
21
+ selectors = temp;
22
+ }
23
+
24
+ // 最后补充 {
25
+ return "\n" + (selectors.join(',')) + "{\n";
26
+ };
27
+
28
+ // 把代码变成代码块
29
+ // 比如一个注释就是一块,无论注释的内容有多少
30
+ let analyseBlock = function (source) {
31
+
32
+ let i = -1,
33
+
34
+ // 当前面对的字符
35
+ currentChar = null;
36
+
37
+ // 获取下一个字符
38
+ let next = function () {
39
+ currentChar = i++ < source.length - 1 ? source[i] : null;
40
+ return currentChar;
41
+ };
42
+
43
+ // 获取往后n个值
44
+ let nextNValue = function (n) {
45
+ return source.substring(i, n + i > source.length ? source.length : n + i);
46
+ };
47
+
48
+ let blocks = [];
49
+ let currentBlock = "";
50
+
51
+ next();
52
+
53
+ while (true) {
54
+
55
+ // 先剔除空白字符
56
+ // 保证正式开始的时候匹配的是有效的
57
+ while (new RegExp("[\\x20\\t\\r\\n\\f]").test(currentChar)) {
58
+ next();
59
+ }
60
+
61
+ // 如果匹配的字符没有了
62
+ if (currentChar == null) break;
63
+
64
+ // 如果是注释
65
+ // /* 类型一 */
66
+ if (nextNValue(2) == '/*') {
67
+
68
+ next(); next();
69
+ currentBlock = "/*";
70
+
71
+ while (nextNValue(2) != '*/' && currentChar != null) {
72
+ currentBlock += currentChar;
73
+ next();
74
+ }
75
+
76
+ // 对于注释 /* */
77
+ // 如果到结尾都没有闭合,应该提示语法错误
78
+ if (currentChar == null) {
79
+ throw new Error('The comment is not closed.');
80
+ }
81
+
82
+ currentBlock += "*/";
83
+ next(); next();
84
+
85
+ blocks.push({
86
+ value: currentBlock,
87
+ type: "comment-double"
88
+ });
89
+ }
90
+
91
+ // 如果是注释
92
+ // // 类型二
93
+ else if (nextNValue(2) == '//') {
94
+ currentBlock = '';
95
+
96
+ while (currentChar != '\n' && currentChar != null) {
97
+ currentBlock += currentChar;
98
+ next();
99
+ }
100
+
101
+ blocks.push({
102
+ value: currentBlock,
103
+ type: "comment-single"
104
+ });
105
+
106
+ }
107
+
108
+ // 如果是结束
109
+ // }
110
+ else if (currentChar == '}') {
111
+
112
+ blocks.push({
113
+ value: "}",
114
+ type: "end"
115
+ });
116
+
117
+ next();
118
+
119
+ }
120
+
121
+ // 余下,只有两种情况:
122
+ // 1.如是是开始
123
+ // xxx {
124
+ // 2.可能是一个语句
125
+ // xxx : xxx ;
126
+ // 这两种都需要进一步匹配
127
+ else {
128
+
129
+ currentBlock = '';
130
+
131
+ // 目前先没有考虑下列情况:
132
+ // 语句 content:";"
133
+ while (currentChar != '{' && currentChar != ';' && currentChar != null) {
134
+ currentBlock += currentChar;
135
+ next();
136
+ }
137
+
138
+ if (currentChar == null) {
139
+ throw new Error('Statement or code block missing closure.');
140
+ }
141
+
142
+ blocks.push({
143
+ value: currentBlock + currentChar,
144
+ type: {
145
+ '{': "begin",
146
+ ';': 'statement'
147
+ }[currentChar]
148
+ });
149
+
150
+ next();
151
+
152
+ }
153
+
154
+ }
155
+
156
+ return blocks;
157
+ };
158
+
159
+
160
+ module.exports = function (source) {
161
+
162
+ // 分析出代码块
163
+
164
+ let blocks = analyseBlock(source);
165
+
166
+ // 根据代码块获得最终代码
167
+
168
+ let i, j, cssCode = "", preSelectorArray = [], deep = 0;
169
+ for (i = 0; i < blocks.length; i++) {
170
+
171
+ // 注释 double
172
+ if (blocks[i].type == 'comment-double') {
173
+
174
+ cssCode += blocks[i].value;
175
+
176
+ }
177
+
178
+ // 注释 single
179
+ else if (blocks[i].type == 'comment-single') {
180
+
181
+ cssCode += "\n/* " + blocks[i].value + " */\n";
182
+
183
+ }
184
+
185
+ // 开始
186
+ else if (blocks[i].type == 'begin') {
187
+
188
+ let preSplit = blocks[i].value.split(',');
189
+ let preSelect = [];
190
+ for (j = 0; j < preSplit.length; j++) {
191
+
192
+ // 去掉两端的空格
193
+ preSelect[j] = preSplit[j].replace(/\{$/, '').trim();
194
+
195
+ // 判断拼接方式
196
+ if (/^&/.test(preSelect[j])) {
197
+ preSelect[j] = preSelect[j].replace(/^&/, '');
198
+ } else {
199
+ preSelect[j] = " " + preSelect[j];
200
+ }
201
+
202
+ }
203
+
204
+ // 登记到前缀数组
205
+ preSelectorArray[deep] = preSelect;
206
+ deep += 1;
207
+ }
208
+
209
+ // 结束
210
+ else if (blocks[i].type == 'end') {
211
+
212
+ deep -= 1;
213
+
214
+ }
215
+
216
+ // 语句
217
+ else if (blocks[i].type == 'statement') {
218
+
219
+ // 如果是第一个
220
+ j = 1;
221
+ let preType = blocks[i - j].type;
222
+ while (['comment-double', 'comment-single'].indexOf(preType) > -1) {
223
+ j += 1;
224
+ preType = blocks[i - j].type;
225
+ }
226
+ if (['end', 'begin'].indexOf(preType) > -1) {
227
+ cssCode += toSelector(preSelectorArray, deep);
228
+ }
229
+
230
+ cssCode += "\n" + blocks[i].value + "\n";
231
+
232
+ // 如果是最后一个
233
+ j = 1;
234
+ let nextType = blocks[i + j].type;
235
+ while (['comment-double', 'comment-single'].indexOf(nextType) > -1) {
236
+ j += 1;
237
+ nextType = blocks[i + j].type;
238
+ }
239
+ if (['end', 'begin'].indexOf(nextType) > -1) {
240
+ cssCode += "\n}\n";
241
+ }
242
+
243
+ }
244
+
245
+ }
246
+
247
+ return cssCode;
248
248
  };