UNPKG

nihilpossimus

Version:

A simple, maximally extensible, dependency minimized framework for building modern Ethereum dApps

85 lines (75 loc) 1.96 kB
function range(start, end, step=1) { let r = [] for(let i = start; i <= end; i+=step){ r.push(i) } return r } class Range { constructor(start, end, step=1){ this.start = start this.end = end this.step = step return new Proxy(this, { get: function (target, prop) { let i = (typeof prop === 'string') ? parseInt(prop) : prop if(typeof i == 'number' && i >= 0 && i <= target.length){ return target.start+target.step*i } return Reflect.get(...arguments) } }) } get length(){ return parseInt((this.end-this.start)/this.step)+1 } [Symbol.iterator]() { var index = -1 return { next: () => { return { value: this[++index], done: !(this[index+1] !== undefined) } } } } } function getValue(params, key){ let keys = key.split('.') let value = params for(let k of keys){ value = value[k] } return value } function format(str, params){ let re = /\{\{\S+\}\}/gm let m while((m = re.exec(str)) !== null){ let key = m[0].substring(2, m[0].length-2) let value = getValue(params, key) str = str.substr(0, m.index) + value + str.substr(m.index+m[0].length) re.lastIndex = m.index } return str } function genItems(min, max, genText=(value) => {return value+''}, genAltText=(value) => {return value+''}){ let res = [] for(let i of new Range(min, max)){ let item = {} item.text = genText(i) item.alt = genAltText(i) item.value = i res.push(item) } return res } function pad(n, width){ n = n+'' return (n.length < width) ? new Array(width - n.length).fill('0').join('') + n : n; } export default { range, Range, format, genItems, pad }