const fs = require('fs'); function formatEmoji(emoji) { return ('{ name = "' + emoji.name + '", unicode = "' + emoji.unicode + '" }'); } let text = fs.readFileSync('js/emoji.txt', 'utf-8'); let emojis = {}; let currentEmojis = null; for (let line of text.split('\n')) { if (line.startsWith('#')) { if (line.startsWith('# group:')) { let name = line.split(':')[1].split(' ')[1].toLowerCase(); emojis[name] = []; currentEmojis = emojis[name]; } continue; } if (line.length === 0) { continue; } let end = line.split('#')[1]; let split = end.split(' '); let emoji = split[1]; let name = split.slice(3).join(' '); currentEmojis.push({ name, unicode: emoji, }); } delete(emojis.component); // Generate elm console.log('module Emoji exposing (..)'); console.log('\n'); console.log('type alias Emoji ='); console.log(' { name : String'); console.log(' , unicode : String'); console.log(' }'); console.log('\n'); console.log('type alias Emojis ='); let first = true; for (let key in emojis) { console.log(' ' + (first ? '{' : ',') + ' ' + key + ' : List Emoji'); first = false; } console.log(' }') console.log('\n'); console.log('type Category'); first = true; for (let key in emojis) { console.log(' ' + (first ? '=' : '|') + ' ' + key[0].toUpperCase() + key.slice(1).toLowerCase()); first = false; } console.log('\n'); console.log('categories : List Category'); console.log('categories ='); console.log(' [' + Object.keys(emojis).map(x => x[0].toUpperCase() + x.slice(1).toLowerCase()).join(', ') + ']'); console.log('\n'); console.log('categoryEmoji : Category -> Emoji'); console.log('categoryEmoji category ='); console.log(' case category of'); for (let key in emojis) { console.log(' ' + key[0].toUpperCase() + key.slice(1).toLowerCase() + ' ->'); console.log(' ' + formatEmoji(emojis[key][0]) + '\n'); } console.log(); console.log('getEmojis : Category -> List Emoji') console.log('getEmojis category ='); console.log(' case category of'); for (let key in emojis) { console.log(' ' + key[0].toUpperCase() + key.slice(1).toLowerCase() + ' ->'); console.log(' emojis.' + key + '\n'); } console.log(); console.log('emojis : Emojis'); console.log('emojis ='); let first1 = true; for (let key in emojis) { console.log(' ' + (first1 ? '{' : ',') + ' ' + key + ' ='); let first2 = true; for (let emoji of emojis[key]) { console.log(' ' + (first2 ? '[' : ',') + ' ' + formatEmoji(emoji)); first2 = false; } console.log(' ]'); first1 = false; } console.log(' }');