forked from kiecodes/nft
-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.js
62 lines (53 loc) · 1.55 KB
/
utils.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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
const { format } = require('date-fns')
function dec2bin(dec) {
return (dec >>> 0).toString(2);
}
function stringToBinary(input) {
var characters = input.split('');
return characters.map(function(char) {
const binary = char.charCodeAt(0).toString(2)
const pad = Math.max(8 - binary.length, 0);
// Just to make sure it is 8 bits long.
return '0'.repeat(pad) + binary;
}).join('');
}
function isNumeric(str) {
if (typeof str != "string") return false // we only process strings!
return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
!isNaN(parseFloat(str)) // ...and ensure strings of whitespace fail
}
function toDate(year, month, day) {
let date = new Date()
date.setUTCDate(day)
date.setUTCMonth(month-1)
date.setUTCFullYear(year)
return date
}
function dateString(year, month, day) {
return format(toDate(year, month, day), "eee dd MMM yyyy").toUpperCase()
}
function colorToMaterialName(color) {
switch(color) {
case 0: return "Blue"
case 1: return "Red"
case 2: return "Green"
case 3: return "Black"
case 4: return "Silver"
case 5: return "Gold"
case 6: return "Neon"
case 7: return "Pearl"
}
return ""
}
function isLeapYear(year) {
return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);
}
module.exports = {
dec2bin,
stringToBinary,
isNumeric,
dateString,
colorToMaterialName,
isLeapYear,
toDate
}