-
Notifications
You must be signed in to change notification settings - Fork 0
/
parse.js
43 lines (36 loc) · 803 Bytes
/
parse.js
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
module.exports = function parse(networksText) {
return networksText
.toString()
.trim()
.split(/\n\r?\n/)
.slice(1)
.map(parseNetwork)
}
function parseNetwork(networkText) {
return networkText
.split('\n')
.reduce(getProperty, {})
}
function getProperty(object, line) {
if (!line) return object
var parts = line.split(' : ')
var key = formatKey(parts[0])
if (!object[key]) {
object[key] = formatValue(key, parts[1])
}
return object
}
function formatKey(key) {
return key
.trim()
.toLowerCase()
.replace(/[^a-z]+([a-z]?)/g, function (_, match1) {
return match1.toUpperCase()
})
}
function formatValue(key, value) {
value = value.trim()
if (key === 'signal') return Number(value.slice(0, -1)) / 100
if (key === 'channel') return Number(value)
return value
}