Skip to content

Commit 61581fe

Browse files
committed
[WIP] split native files and
1 parent defa426 commit 61581fe

File tree

2 files changed

+43
-22
lines changed

2 files changed

+43
-22
lines changed

lib/main.js

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const { execSync } = require('child_process')
22
const fs = require("fs")
3+
let rf = require("fs")
34
const path = require("path")
45
const yaml = require('js-yaml')
56
let Worker
@@ -99,27 +100,47 @@ function generateDartWithWorker(path, script) {
99100
worker.on("message", resolve);
100101
worker.on("error", reject);
101102
}
103+
}).then((msg) => {
104+
if (msg.error) {
105+
console.log('filePath:' + path + '\nerror:' + msg.error)
106+
}
107+
let result = msg.result
108+
if (!result) {
109+
return
110+
}
111+
writeOutputToFileByPath(result.dartCode, msg.path)
112+
113+
if (projectName) {
114+
result.packages.forEach(item => packageSet.add(item))
115+
}
102116
});
103117
};
104118

119+
function splitCodeFileIfNeed(separator, maxLength, path) {
120+
const content = rf.readFileSync(path, "utf-8")
121+
if (content.length > maxLength) {
122+
let components = content.split(separator)
123+
return components.map((c, i) => {
124+
if (i == components.length - 1) {
125+
return c
126+
}
127+
return c + separator
128+
})
129+
}
130+
return [content]
131+
}
132+
105133
async function runWorkItems(workItems) {
106134
const promises = Array.from(workItems.keys()).map((path) => {
107135
let script = workItems.get(path)
108-
return generateDartWithWorker(path, script).then((msg) => {
109-
if (msg.error) {
110-
console.log('filePath:' + msg.path + '\nerror:' + msg.error)
111-
}
112-
let result = msg.result
113-
if (!result) {
114-
return
115-
}
116-
writeOutputToFileByPath(result.dartCode, msg.path)
117-
118-
if (projectName) {
119-
result.packages.forEach(item => packageSet.add(item))
120-
}
136+
console.log('processing: ' + path)
137+
// TODO: change separator
138+
let contents = splitCodeFileIfNeed("@end\n", 5000, path)
139+
let ps = contents.map((content) => {
140+
return generateDartWithWorker(content, script)
121141
})
122-
})
142+
return ps
143+
}).reduce((acc, val) => acc.concat(val), []);
123144
await Promise.all(promises)
124145
}
125146

lib/objc/DNObjectiveCConverter.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
let antlr4 = require('antlr4')
2-
let rf = require("fs")
32
let ObjectiveCLexer = require('../../parser/objc/ObjectiveCLexer').ObjectiveCLexer
43
let ObjectiveCParser = require('../../parser/objc/ObjectiveCParser').ObjectiveCParser
54
let DNObjectiveCParserListener = require('./DNObjectiveCParserListener').DNObjectiveCParserListener
@@ -14,19 +13,20 @@ try {
1413
}
1514

1615

17-
function convert(path, cb) {
18-
if (!path) {
16+
function convert(content, cb) {
17+
if (!content) {
1918
if (!workerData) {
19+
if (cb) {
20+
cb(null, null, null)
21+
}
2022
return
2123
}
22-
path = workerData.path
24+
content = workerData.content
2325
}
2426
if (!cb) {
2527
cb = callback
2628
}
27-
console.log('processing: ' + path)
2829
try {
29-
const content = rf.readFileSync(path, "utf-8")
3030
const chars = new antlr4.InputStream(content)
3131
const lexer = new ObjectiveCLexer(chars)
3232
const errorListener = new ConsoleErrorListener()
@@ -36,10 +36,10 @@ function convert(path, cb) {
3636
const parser = new ObjectiveCParser(tokens)
3737
parser.addErrorListener(errorListener)
3838
const tree = parser.translationUnit()
39-
const listener = new DNObjectiveCParserListener(cb, path)
39+
const listener = new DNObjectiveCParserListener(cb, content)
4040
antlr4.tree.ParseTreeWalker.DEFAULT.walk(listener, tree)
4141
} catch (e) {
42-
cb(null, path, e)
42+
cb(null, content, e)
4343
}
4444
}
4545

0 commit comments

Comments
 (0)