@makano/rew 1.3.8 → 1.3.9
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.
package/lib/rew/const/usage.js
CHANGED
@@ -22,9 +22,9 @@ class Usage {
|
|
22
22
|
save = true;
|
23
23
|
|
24
24
|
constructor(name, trigger, save){
|
25
|
-
this.name = name;
|
25
|
+
this.name = name || '';
|
26
26
|
this.trigger = trigger;
|
27
|
-
this.save = name == '' ? false : save;
|
27
|
+
this.save = name == '' || name == null ? false : save;
|
28
28
|
}
|
29
29
|
|
30
30
|
create(name, trigger, save = true){
|
@@ -117,9 +117,9 @@ module.exports.usingFunction = (context, runtime) => {
|
|
117
117
|
if(name.onAfterUse) name.onAfterUse();
|
118
118
|
return r;
|
119
119
|
} else if(name instanceof Usage) {
|
120
|
-
const v = name.trigger(...params)
|
121
|
-
if(name.save !== false) context.__using__[name.name] = v;
|
122
|
-
return v;
|
120
|
+
const v = name.trigger(...params);
|
121
|
+
if(name.save !== false) context.__using__[name.name] = v ?? true;
|
122
|
+
return v || (typeof name.result === "function" ? name.result(v) : name.result || true);
|
123
123
|
} else {
|
124
124
|
context.__using__[name] = params.length ? params.length > 1 ? [...params] : params : true;
|
125
125
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
const { spawnSync } = require('child_process');
|
2
2
|
|
3
|
-
|
3
|
+
(module.exports.print = function print(...args) {
|
4
4
|
return console.log(...args);
|
5
5
|
});
|
6
6
|
|
@@ -8,9 +8,6 @@ module.exports.printf = function printf(buffer, cb) {
|
|
8
8
|
return process.stdout.write(buffer, cb);
|
9
9
|
};
|
10
10
|
|
11
|
-
print.stdout = process.stdout;
|
12
|
-
print.stdin = process.stdin;
|
13
|
-
|
14
11
|
module.exports.input = function input(prompt) {
|
15
12
|
process.stdout.write(prompt);
|
16
13
|
|
@@ -154,11 +154,15 @@ function declareAlias(aliases, token) {
|
|
154
154
|
|
155
155
|
if(name.startsWith('=')){
|
156
156
|
name = name.slice(1);
|
157
|
-
let isDecOnly = false;
|
157
|
+
let isDecOnly = false, isConstructor = false;
|
158
158
|
if(name.endsWith('*')) {
|
159
159
|
name = name.slice(0, -1);
|
160
160
|
isDecOnly = true;
|
161
161
|
}
|
162
|
+
if(name.endsWith('!')) {
|
163
|
+
name = name.slice(0, -1);
|
164
|
+
isConstructor = true;
|
165
|
+
}
|
162
166
|
aliasValue = (token, tokens, code, hooks, index, setIndex) => {
|
163
167
|
const nextToken = tokens[index+1]
|
164
168
|
let nextToken2 = gnextToken(index, 3, tokens);
|
@@ -181,7 +185,7 @@ function declareAlias(aliases, token) {
|
|
181
185
|
let nextToken = gnextToken(index, offset+1, tokens);
|
182
186
|
const args = nextToken.token.value;
|
183
187
|
setIndex(ti + offset);
|
184
|
-
return `${nextToken2.value} = ${token.value} ${args && args !== '(' && args !== '{' && args !== '[' && args !== '-' && args !== '=' ? `${args},` : ''} ${params.trim() ? params.trim() + ', ' : ''}${args == '(' || args == '[' || args == '{' || args == '=' || args == '-' ? args : ''}`.replace(/,(| )$/, '');
|
188
|
+
return `${nextToken2.value} = ${isConstructor?'new ':''}${token.value} ${args && args !== '(' && args !== '{' && args !== '[' && args !== '-' && args !== '=' ? `${args},` : ''} ${params.trim() ? params.trim() + ', ' : ''}${args == '(' || args == '[' || args == '{' || args == '=' || args == '-' ? args : ''}`.replace(/,(| )$/, '');
|
185
189
|
} else if(nextToken?.value == ' ' && (isDecOnly || nextToken2?.token.value == '=' || nextToken2?.token.value == ':')){
|
186
190
|
nextToken.value = '';
|
187
191
|
if(isDecOnly){
|
@@ -194,7 +198,7 @@ function declareAlias(aliases, token) {
|
|
194
198
|
if(nextToken2.token.value == ':') nextToken2.token.value = '=';
|
195
199
|
hooks.push({
|
196
200
|
index: nextToken2.ti,
|
197
|
-
value: ' ' + value
|
201
|
+
value: ' ' + (isConstructor?'new ':'') + value
|
198
202
|
})
|
199
203
|
return "";
|
200
204
|
}
|
@@ -215,8 +219,8 @@ function declareAlias(aliases, token) {
|
|
215
219
|
|
216
220
|
const stdTypes = (isPublic) => {
|
217
221
|
let r = '';
|
218
|
-
const dec = (name, fn) => {
|
219
|
-
r += `#declare${isPublic?'*':''} key "=${name}" = ${fn || name};\n`
|
222
|
+
const dec = (name, fn, cons = 0) => {
|
223
|
+
r += `#declare${isPublic?'*':''} key "=${name}${cons ? '!' : ''}" = ${fn || name};\n`
|
220
224
|
}
|
221
225
|
dec('int');
|
222
226
|
dec('str');
|
@@ -226,6 +230,7 @@ const stdTypes = (isPublic) => {
|
|
226
230
|
dec('typedef');
|
227
231
|
dec('typef');
|
228
232
|
dec('struct');
|
233
|
+
dec('Usage', null, 1);
|
229
234
|
return r;
|
230
235
|
};
|
231
236
|
const includeFile = (includeContent, options) => {
|
@@ -461,7 +466,7 @@ function compileRewStuff(content, options) {
|
|
461
466
|
|
462
467
|
if (tokens[i-1]?.value !== '.' && token.type === 'IDENTIFIER' && token.value === 'using' && !options.disableUse) {
|
463
468
|
straceLog('USING()');
|
464
|
-
const next = nextToken
|
469
|
+
const next = nextToken?.value;
|
465
470
|
if(next in USING_DEFAULT) {
|
466
471
|
const { use } = USING_DEFAULT[next];
|
467
472
|
use?.(options);
|
@@ -694,7 +699,15 @@ const compileCivetStuff = (file, options) => {
|
|
694
699
|
filename: file.path,
|
695
700
|
...options
|
696
701
|
};
|
697
|
-
straceLog('OPTION_PREPARE() for CURRENTFILE as', preCompileOptions);
|
702
|
+
straceLog('OPTION_PREPARE() for CURRENTFILE as', JSON.stringify(preCompileOptions));
|
703
|
+
|
704
|
+
if(options?.type == 'js' || file?.path?.endsWith('.js')){
|
705
|
+
return {
|
706
|
+
compiled: file?.content || "",
|
707
|
+
options: preCompileOptions
|
708
|
+
}
|
709
|
+
}
|
710
|
+
|
698
711
|
const prepared = compileRewStuff(file.content, preCompileOptions);
|
699
712
|
|
700
713
|
// console.log(prepared);
|
@@ -65,10 +65,13 @@ module.exports.prepareContext = function (
|
|
65
65
|
}
|
66
66
|
this.define = std.prototype.define;
|
67
67
|
this.Main = std.prototype.Main;
|
68
|
+
this.attach = std.prototype.attach;
|
69
|
+
this.out = std.prototype.out;
|
70
|
+
this.inp = std.prototype.in;
|
68
71
|
this['@cb'] = cb;
|
69
72
|
}
|
70
73
|
});
|
71
|
-
}, define: (name, object) => {
|
74
|
+
}, out: {...process.stdout, put: (...logs) => context.print(...logs), strace: (...logs) => straceLog('==> STRACE_OUT():', ...logs ), write: (logs) => context.printf(logs+'\n') }, in: {...process.stdin, read: (...args) => context.input(...args)}, define: (name, object) => {
|
72
75
|
if(Array.isArray(name) && name.length == 2 && typeof name[0] == 'string'){
|
73
76
|
object = name[1];
|
74
77
|
name = name[0];
|
@@ -127,6 +130,26 @@ module.exports.prepareContext = function (
|
|
127
130
|
}
|
128
131
|
};
|
129
132
|
|
133
|
+
context.std.prototype.__ = {
|
134
|
+
get prototype(){
|
135
|
+
const globals = context.app?.config?.assets?.globals ?? '_';
|
136
|
+
const p = context.pjoin(context.app ? context.app.path : context.dirname(context.module.filename), globals);
|
137
|
+
if(!context.exists(p)) return {};
|
138
|
+
const files = context.ls(p);
|
139
|
+
const pr = {};
|
140
|
+
files.forEach(file => {
|
141
|
+
if(!file.endsWith('.coffee')) return;
|
142
|
+
const e = runPath(context.pjoin(p, file));
|
143
|
+
let name = e.context.module.modset || file.split('.').shift();
|
144
|
+
pr[name] = e.context.module.exports || {};
|
145
|
+
if(typeof pr[name] == "object" && pr[name].default && Object.keys(pr[name]).length == 1){
|
146
|
+
pr[name] = pr[name].default;
|
147
|
+
}
|
148
|
+
});
|
149
|
+
return pr;
|
150
|
+
}
|
151
|
+
}
|
152
|
+
|
130
153
|
context.global = context;
|
131
154
|
context.imports.assert = options.import ?? {};
|
132
155
|
context.imp = imp(runPath, context);
|
@@ -185,6 +208,8 @@ module.exports.prepareContext = function (
|
|
185
208
|
if(!context.app){
|
186
209
|
straceLog('==> APP NOT FOUND');
|
187
210
|
context.appPackage = (packageName) => context.app = { config: { manifest: { package: packageName } } }
|
211
|
+
} else {
|
212
|
+
context.appPackage = context.mod = (packageName) => context.module.modset = packageName;
|
188
213
|
}
|
189
214
|
|
190
215
|
Object.defineProperty(context, 'packageName', {
|