forked from node-opcua/node-opcua
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenerate_node_ids.js
More file actions
86 lines (67 loc) · 2.36 KB
/
generate_node_ids.js
File metadata and controls
86 lines (67 loc) · 2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
"use strict";
const fs = require("fs");
const path = require("path");
const csv = require("csv");
const sprintf = require("sprintf-js").sprintf;
const datafolder = path.join(__dirname, "1.04");
// see OPC-UA Part 6 , A2
const codeMap = {};
const parser = csv.parse({ delimiter: "," }, function (err, data) {
convert(data);
});
fs.createReadStream(path.join(datafolder, "/NodeIds.csv")).pipe(parser);
function convert(data) {
let name, id, type, codeName, value, typeName;
const metaMap = {};
data.forEach(function (row) {
codeName = row[0];
value = row[1];
type = row[2];
if (!metaMap.hasOwnProperty(type)) {
metaMap[type] = {};
}
codeMap[codeName] = row;
metaMap[type][codeName] = row;
});
const outFile = fs.createWriteStream(path.join("../packages/node-opcua-constants/source", "opcua_node_ids.ts"));
outFile.write("// this file has been automatically generated\n");
outFile.write("// using code_gen/generate_node_ids.js\n");
let e;
if (false) {
outFile.write(" exports.NodeIds = { \n");
for (let name in codeMap) {
if (codeMap.hasOwnProperty(name)) {
e = codeMap[name];
name = e[0];
id = parseInt(e[1], 10);
typeName = e[2];
outFile.write(sprintf(" %40s: { name: %40s , value: %6d },\n", name, "'" + name + "'", id));
}
}
outFile.write("};\n");
}
let typeMap;
for (typeName in metaMap) {
if (metaMap.hasOwnProperty(typeName)) {
typeMap = metaMap[typeName];
outFile.write(" export enum " + typeName + "Ids {\n");
const names = Object.keys(typeMap);
for (let i = 0; i < names.length; i++) {
name = names[i];
if (typeMap.hasOwnProperty(name)) {
e = typeMap[name];
name = e[0];
id = parseInt(e[1], 10);
type = e[2];
if (i + 1 < names.length) {
outFile.write(sprintf(" %80s= %6d ,\n", name, id));
} else {
outFile.write(sprintf(" %80s= %6d\n", name, id));
}
}
}
outFile.write("}\n");
}
}
console.log("done");
}