nihilpossimus
Version:
A simple, maximally extensible, dependency minimized framework for building modern Ethereum dApps
56 lines (43 loc) • 991 B
JavaScript
// */x
import types from '../types'
const { EveryColumn } = types
let re = /^\*\/\d+$/
function strToArray(str, {min, max}){
if(!re.test(str)){
return null
}
let [, everyStr] = str.split('/')
let every = parseInt(everyStr)
let start = every * parseInt(min/every)
let res = []
for(let i = start; i <= max; i+=every){
if(i >= min){
res.push(i)
}
}
return res.length > 0 ? res : null
}
function arrayToStr(arr, field){
let {min, max} = field
if(arr.length < 3){
return null
}
let step = arr[1] - arr[0]
if(step <= 1){
return null
}
let first = (min%step == 0) ? min : (parseInt(min/step)+1)*step
if(arr.length != parseInt((max-first)/step)+1){
return null
}
for(let value of arr){
if(value%step != 0){
return null
}
}
return new EveryColumn(field, step)
}
export default {
strToArray,
arrayToStr
}