octo-deno/lib/utils/block.js

46 lines
1,023 B
JavaScript
Raw Normal View History

2017-04-22 22:49:49 +00:00
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
2018-03-19 04:54:40 +00:00
const random = require('../random')
const utils = require('../utils')
class block extends utils {
static block (list, optional) {
2017-04-25 15:22:15 +00:00
if (optional === true) {
2017-04-22 22:49:49 +00:00
if (random.chance(6)) {
return ''
2017-04-22 22:49:49 +00:00
}
}
function deeper (item) {
2017-04-25 15:22:15 +00:00
if (item === null || item === undefined) {
return ''
2017-04-22 22:49:49 +00:00
}
if (typeof (item) === 'function') {
return item()
2017-04-22 22:49:49 +00:00
}
if (typeof (item) === 'string') {
return item
2017-04-22 22:49:49 +00:00
}
if (Array.isArray(item)) {
let s = ''
2017-04-22 22:49:49 +00:00
for (let i = 0; i < item.length; i++) {
s += deeper(item[i])
2017-04-22 22:49:49 +00:00
}
return s
2017-04-22 22:49:49 +00:00
}
return item
2017-04-22 22:49:49 +00:00
}
let asString = ''
2017-04-22 22:49:49 +00:00
for (let i = 0; i < list.length; i++) {
asString += deeper(list[i])
2017-04-22 22:49:49 +00:00
}
return asString
2017-04-22 22:49:49 +00:00
}
}
module.exports = block