diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-07-07 19:21:54 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-07-07 19:21:54 +0900 |
| commit | d92044cf6a68500c24e90da1b62b4bc6361f7d53 (patch) | |
| tree | effcbec571821ae72cd40ca27f33871967accf0b /src/misc/fa.ts | |
| parent | Refactorng (diff) | |
| download | misskey-d92044cf6a68500c24e90da1b62b4bc6361f7d53.tar.gz misskey-d92044cf6a68500c24e90da1b62b4bc6361f7d53.tar.bz2 misskey-d92044cf6a68500c24e90da1b62b4bc6361f7d53.zip | |
Refactor
Diffstat (limited to 'src/misc/fa.ts')
| -rw-r--r-- | src/misc/fa.ts | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/misc/fa.ts b/src/misc/fa.ts new file mode 100644 index 0000000000..077bb51e6d --- /dev/null +++ b/src/misc/fa.ts @@ -0,0 +1,54 @@ +/** + * Replace fontawesome symbols + */ + +import * as fontawesome from '@fortawesome/fontawesome'; +import regular from '@fortawesome/fontawesome-free-regular'; +import solid from '@fortawesome/fontawesome-free-solid'; +import brands from '@fortawesome/fontawesome-free-brands'; + +fontawesome.library.add(regular, solid, brands); + +export const pattern = /%fa:(.+?)%/g; + +export const replacement = (match: string, key: string) => { + const args = key.split(' '); + let prefix = 'fas'; + const classes: string[] = []; + let transform = ''; + let name; + + args.forEach(arg => { + if (arg == 'R' || arg == 'S' || arg == 'B') { + prefix = + arg == 'R' ? 'far' : + arg == 'S' ? 'fas' : + arg == 'B' ? 'fab' : + ''; + } else if (arg[0] == '.') { + classes.push('fa-' + arg.substr(1)); + } else if (arg[0] == '-') { + transform = arg.substr(1).split('|').join(' '); + } else { + name = arg; + } + }); + + const icon = fontawesome.icon({ prefix, iconName: name } as fontawesome.IconLookup, { + classes: classes, + transform: fontawesome.parse.transform(transform) + }); + + if (icon) { + return `<i data-fa class="${name}">${icon.html[0]}</i>`; + } else { + console.warn(`'${name}' not found in fa`); + return ''; + } +}; + +export default (src: string) => { + return src.replace(pattern, replacement); +}; + +export const fa = fontawesome; |