Fancy Text Converter
Converts to letter-look-alike text.
by MegaScience
HTML
<select id="ConvertMode" name="ConvertMode"><!--
<option value="MinecraftTrick" selected>Minecraft Trick Text</option>
<option value="FFXIVBlockText">FFXIV Block Text</option>
<option value="SortWords">Sort Words</option>
--></select>
<textarea id="input"></textarea>
<textarea id="output" readonly></textarea>
CSS
html {
display: flex;
height: 100%;
}
body.darkMode {
&, select, textarea {
background-color: black;
color: white;
}
}
body {
display: flex;
flex-grow: 1;
flex-direction: column;
}
textarea {
flex-grow: 1;
--matchHighlight: #00000000;
box-shadow: 0px 0px 5px 0px var(--matchHighlight);
}
textarea#output:not(.matches) {
--matchHighlight: #FF0000;
}
textarea#output.matches {
--matchHighlight: #00FF00;
}
JavaScript
class textConverterClass {
static converters = new Set()
}
class MinecraftTrick extends textConverterClass {
static { textConverterClass.converters.add(this) }
static friendlyName = 'Minecraft Trick Text'
static input = 'eawmyilo_Cn3'
static output = 'ɐəɯʍч¡|○▁⊂ηЗ'
}
class FFXIVBlockText extends textConverterClass {
static { textConverterClass.converters.add(this) }
static friendlyName = 'FFXIV Block Text'
static input = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
static output = ''
static inputOperation = t => t.toUpperCase()
}
class SortWords extends textConverterClass {
static { textConverterClass.converters.add(this) }
static friendlyName = 'Sort Words'
static input = ''
static output = ''
static sortFunction = (a, b) => a.localeCompare(b, 'en', { 'sensitivity': 'base' })
static inputOperation = function (value) {
const words = value.split(' ')
for (const [index, word] of words.entries()) words[index] = [...word].sort(this.sortFunction).join('')
return words.join(' ')
}
}
class SortTags extends textConverterClass {
static { textConverterClass.converters.add(this) }
static friendlyName = 'Sort Tags'
static input = ''
static output = ''
static filterList = n => n
static regex = {
inputOperation: /, ?/
}
static mapIn = (() => {
const regex = /(?<!\\)[()\[\]]/g
return v => [v, v.replace(regex, '')]
})()
static mapOut = ([v]) => v
static sortFunction = ([, a], [, b]) => a.localeCompare(b, 'en', { 'sensitivity': 'base' })
static inputOperation = function (value) {
return value.split(this.regex.inputOperation).filter(this.filterList).map(this.mapIn).sort(this.sortFunction).map(this.mapOut).join(', ')
}
}
class DanbooruToAI extends textConverterClass {
static { textConverterClass.converters.add(this) }
static...