'use strict' const fs = require('fs') const path = require('path') const mimeType = require('mime-types') const sizeOf = require('image-size') const themePath = path.resolve(__dirname, '../assets/theme') const themeList = {} fs.readdirSync(themePath).forEach(theme => { if(!(theme in themeList)) themeList[theme] = {} const imgList = fs.readdirSync(path.resolve(themePath, theme)) imgList.forEach(img => { const imgPath = path.resolve(themePath, theme, img) const name = path.parse(img).name const { width, height } = sizeOf(imgPath) themeList[theme][name] = { width, height, data: convertToDatauri(imgPath) } }) }) function convertToDatauri(path){ const mime = mimeType.lookup(path) const base64 = fs.readFileSync(path).toString('base64') return `data:${mime};base64,${base64}` } function getCountImage({ count, theme='moebooru', length=7 }) { if(!(theme in themeList)) theme = 'moebooru' // This is not the greatest way for generating an SVG but it'll do for now const countArray = count.toString().padStart(length, '0').split('') let x = 0, y = 0 const parts = countArray.reduce((acc, next, index) => { const { width, height, data } = themeList[theme][next] const image = `${acc} ` x += width if(height > y) y = height return image }, '') return ` Moe Count ${parts} ` } module.exports = { getCountImage }