@canboat/canboatjs 2.1.0 → 2.1.1
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/pgns.js +31 -23
- package/package.json +1 -1
package/lib/pgns.js
CHANGED
|
@@ -35,38 +35,36 @@ function organizePGNs() {
|
|
|
35
35
|
return res
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
/** doing this for now, when we move to the new canboat.json, we'll get from there*/
|
|
39
|
-
const enumMappings = {
|
|
40
|
-
SHIP_TYPE: {
|
|
41
|
-
pgn: 129040,
|
|
42
|
-
field: 'Type of ship'
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
38
|
function getField(pgn, name) {
|
|
47
39
|
return pgn.Fields.find(f => f.Name === name)
|
|
48
40
|
}
|
|
49
41
|
|
|
50
|
-
function
|
|
51
|
-
|
|
52
|
-
if (
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
42
|
+
function getEnumeration(name) {
|
|
43
|
+
const enumeration = lookupEnumerations[name]
|
|
44
|
+
if ( enumeration ) {
|
|
45
|
+
if ( !enumeration.value2name ) {
|
|
46
|
+
enumeration.value2name = {}
|
|
47
|
+
enumeration.EnumValues.forEach((enumPair) => {
|
|
48
|
+
enumeration.value2name[Number(enumPair.Value)] = enumPair.Name
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
enumeration.name2value = {}
|
|
52
|
+
enumeration.EnumValues.forEach((enumPair) => {
|
|
53
|
+
enumeration.name2value[enumPair.Name] = Number(enumPair.Value)
|
|
54
|
+
})
|
|
57
55
|
}
|
|
58
56
|
}
|
|
57
|
+
return enumeration
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function lookupEnumerationName(enumName, value) {
|
|
61
|
+
const enumeration = getEnumeration(enumName)
|
|
62
|
+
return enumeration.value2name[value]
|
|
59
63
|
}
|
|
60
64
|
|
|
61
65
|
function lookupEnumerationValue(enumName, name) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
let pgn = getPgn0(mapping.pgn)
|
|
65
|
-
if ( pgn ) {
|
|
66
|
-
let field = getField(pgn, mapping.field)
|
|
67
|
-
return field && lookupEnumValueForField(field, name)
|
|
68
|
-
}
|
|
69
|
-
}
|
|
66
|
+
const enumeration = getEnumeration(enumName)
|
|
67
|
+
return enumeration.name2value[name]
|
|
70
68
|
}
|
|
71
69
|
|
|
72
70
|
function getValue2Name(field) {
|
|
@@ -99,6 +97,16 @@ function lookupEnumValueForField(field, stringValue) {
|
|
|
99
97
|
return name2value && name2value[stringValue]
|
|
100
98
|
}
|
|
101
99
|
|
|
100
|
+
function organizeEnumerations() {
|
|
101
|
+
let enums = require('@canboat/pgns/canboat').LookupEnumerations
|
|
102
|
+
let map = {}
|
|
103
|
+
enums.forEach(e => {
|
|
104
|
+
map[e.Name] = e
|
|
105
|
+
})
|
|
106
|
+
return map
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const lookupEnumerations = organizeEnumerations()
|
|
102
110
|
const organizedPGNs = organizePGNs()
|
|
103
111
|
const getPgn = pgn => organizedPGNs[pgn]
|
|
104
112
|
const getPgn0 = flow(getPgn, first)
|