@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.
Files changed (2) hide show
  1. package/lib/pgns.js +31 -23
  2. 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 lookupEnumerationName(enumName, value) {
51
- let mapping = enumMappings[enumName]
52
- if ( mapping ) {
53
- let pgn = getPgn0(mapping.pgn)
54
- if ( pgn ) {
55
- let field = getField(pgn, mapping.field)
56
- return field && lookupEnumNameForField(field, value)
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
- let mapping = enumMappings[enumName]
63
- if ( mapping ) {
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)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canboat/canboatjs",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "Native javascript version of canboat",
5
5
  "main": "index.js",
6
6
  "scripts": {