mirror of
https://github.com/msojocs/wx-compiler.git
synced 2025-07-19 00:00:04 +08:00
feat: simple compiler for wcsc module
This commit is contained in:
parent
194d0151f6
commit
685d6e10c0
@ -17,6 +17,11 @@ namespace wcc_options
|
|||||||
isolate->ThrowException(v8::String::NewFromUtf8(isolate, ("Failed to get '" + std::string(property_name) + "' property").c_str(), v8::NewStringType::kNormal).ToLocalChecked());
|
isolate->ThrowException(v8::String::NewFromUtf8(isolate, ("Failed to get '" + std::string(property_name) + "' property").c_str(), v8::NewStringType::kNormal).ToLocalChecked());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (value->IsUndefined())
|
||||||
|
{
|
||||||
|
out_value = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (!value->IsBoolean())
|
if (!value->IsBoolean())
|
||||||
{
|
{
|
||||||
isolate->ThrowException(v8::String::NewFromUtf8(isolate, ("The '" + std::string(property_name) + "' property must be a boolean").c_str(), v8::NewStringType::kNormal).ToLocalChecked());
|
isolate->ThrowException(v8::String::NewFromUtf8(isolate, ("The '" + std::string(property_name) + "' property must be a boolean").c_str(), v8::NewStringType::kNormal).ToLocalChecked());
|
||||||
|
@ -36,13 +36,18 @@ int compile(Isolate *isolate, WCSCOptions &options, Local<Value> &result,
|
|||||||
v77[options.files[i]] = options.contents[i];
|
v77[options.files[i]] = options.contents[i];
|
||||||
}
|
}
|
||||||
std::string v76 = "./app.wxss";
|
std::string v76 = "./app.wxss";
|
||||||
|
std::vector<std::string> v72;
|
||||||
|
std::string v75;
|
||||||
|
for (int i=0; i<options.pageCount; i++) {
|
||||||
|
v72.push_back(options.files[i]);
|
||||||
|
}
|
||||||
|
|
||||||
if (options.lazyload) {
|
if (options.lazyload) {
|
||||||
// 懒加载
|
// 懒加载
|
||||||
|
|
||||||
std::string v96;
|
std::string v96;
|
||||||
|
|
||||||
std::string v94, v75;
|
std::string v94;
|
||||||
WXSS::XCompiler lt(v77, options.debug, v75);
|
WXSS::XCompiler lt(v77, options.debug, v75);
|
||||||
// lt.offset_136.erase()
|
// lt.offset_136.erase()
|
||||||
// lt.offset_136.erase()
|
// lt.offset_136.erase()
|
||||||
@ -50,10 +55,6 @@ int compile(Isolate *isolate, WCSCOptions &options, Local<Value> &result,
|
|||||||
v96.assign(lt.offset_8);
|
v96.assign(lt.offset_8);
|
||||||
std::map<std::string, std::string> v92;
|
std::map<std::string, std::string> v92;
|
||||||
if (!lt.offset_0) {
|
if (!lt.offset_0) {
|
||||||
std::vector<std::string> v72;
|
|
||||||
for (int i=0; i<options.pageCount; i++) {
|
|
||||||
v72.push_back(options.files[i]);
|
|
||||||
}
|
|
||||||
int ret = lt.GetCommHead(v72, v94, true, v76);
|
int ret = lt.GetCommHead(v72, v94, true, v76);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
fprintf(stderr, "ERR: GetCommHead ret %d", ret);
|
fprintf(stderr, "ERR: GetCommHead ret %d", ret);
|
||||||
@ -113,6 +114,13 @@ int compile(Isolate *isolate, WCSCOptions &options, Local<Value> &result,
|
|||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
// 普通
|
// 普通
|
||||||
|
std::string v88;
|
||||||
|
int ret = WXSS::NewLintAndParseCSSList(v77, v72, v88, errMsg, 0, options.debug, v75, v76);
|
||||||
|
if (ret)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
result = String::NewFromUtf8(isolate, v88.c_str(), NewStringType::kNormal).ToLocalChecked();
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -295,6 +295,7 @@ int main(int argc, const char **argv) {
|
|||||||
// main - 40
|
// main - 40
|
||||||
if (v36)
|
if (v36)
|
||||||
{
|
{
|
||||||
|
// lazyload
|
||||||
goto LABEL_102;
|
goto LABEL_102;
|
||||||
}
|
}
|
||||||
int v25 = WXSS::NewLintAndParseCSSList(v77, v72, v88, errMsg, 0, v37, v75, v76);
|
int v25 = WXSS::NewLintAndParseCSSList(v77, v72, v88, errMsg, 0, v37, v75, v76);
|
||||||
|
@ -34,7 +34,8 @@ const wcscNative = (optionsPath: string, projectPath: string, outputPath: string
|
|||||||
if (0 === n) {
|
if (0 === n) {
|
||||||
let result = Buffer.concat(spwanData).toString();
|
let result = Buffer.concat(spwanData).toString();
|
||||||
result = result.split('---------------result------------------\n')[1]
|
result = result.split('---------------result------------------\n')[1]
|
||||||
if (result[0] === '{')
|
const options = JSON.parse(fs.readFileSync(optionsPath).toString())
|
||||||
|
if (options.lazyloadConfig || options.lazyload)
|
||||||
result = JSON.parse(result);
|
result = JSON.parse(result);
|
||||||
resolve(result);
|
resolve(result);
|
||||||
} else {
|
} else {
|
||||||
|
@ -25,8 +25,8 @@ describe("wcc - module", function () {
|
|||||||
|
|
||||||
const w = await windows.wcc(p);
|
const w = await windows.wcc(p);
|
||||||
const n = await linux.wcc(p, '');
|
const n = await linux.wcc(p, '');
|
||||||
console.log('windows:', typeof w)
|
// console.log('windows:', typeof w)
|
||||||
console.log('linux:', typeof n)
|
// console.log('linux:', typeof n)
|
||||||
|
|
||||||
assert.equal(typeof n, typeof w);
|
assert.equal(typeof n, typeof w);
|
||||||
if (typeof w == 'string')
|
if (typeof w == 'string')
|
||||||
|
498
test/spec/wcsc/module/data/1720337273873-wcsc-options.json
Normal file
498
test/spec/wcsc/module/data/1720337273873-wcsc-options.json
Normal file
File diff suppressed because one or more lines are too long
@ -24,9 +24,49 @@ describe("wcsc - module", function () {
|
|||||||
} catch (error) {}
|
} catch (error) {}
|
||||||
|
|
||||||
const w = await windows.wcsc(p);
|
const w = await windows.wcsc(p);
|
||||||
console.log('windows:', typeof w)
|
// console.log('windows:', typeof w)
|
||||||
|
const n = await linux.wcsc(p, storagePath);
|
||||||
|
// console.log('linux:', typeof n)
|
||||||
|
assert.equal(typeof n, typeof w);
|
||||||
|
if (typeof w == 'string')
|
||||||
|
{
|
||||||
|
fs.writeFileSync(
|
||||||
|
`${storagePath}/wine-output.json`,
|
||||||
|
w
|
||||||
|
);
|
||||||
|
fs.writeFileSync(
|
||||||
|
`${storagePath}/node-output.json`,
|
||||||
|
n as string
|
||||||
|
);
|
||||||
|
assert.equal(n, w);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fs.writeFileSync(
|
||||||
|
`${storagePath}/wine-output.json`,
|
||||||
|
JSON.stringify(w, null, 4)
|
||||||
|
);
|
||||||
|
fs.writeFileSync(
|
||||||
|
`${storagePath}/node-output.json`,
|
||||||
|
JSON.stringify(n, null, 4)
|
||||||
|
);
|
||||||
|
assert.deepEqual(n, w);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
it("初次加载2", async function () {
|
||||||
|
const p = path.resolve(__dirname, './data/1720337273873-wcsc-options.json')
|
||||||
|
const storagePath = path.resolve(
|
||||||
|
__dirname,
|
||||||
|
`miniprogram-demo/${this.test?.title}`
|
||||||
|
);
|
||||||
|
try {
|
||||||
|
fs.mkdirSync(storagePath, { recursive: true });
|
||||||
|
} catch (error) {}
|
||||||
|
|
||||||
|
const w = await windows.wcsc(p);
|
||||||
|
// console.log('windows:', typeof w)
|
||||||
const n = await linux.wcsc(p, '');
|
const n = await linux.wcsc(p, '');
|
||||||
console.log('linux:', typeof n)
|
// console.log('linux:', typeof n)
|
||||||
|
|
||||||
assert.equal(typeof n, typeof w);
|
assert.equal(typeof n, typeof w);
|
||||||
if (typeof w == 'string')
|
if (typeof w == 'string')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user