summaryrefslogtreecommitdiff
path: root/src/misc/fa.ts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-07-07 19:21:54 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-07-07 19:21:54 +0900
commitd92044cf6a68500c24e90da1b62b4bc6361f7d53 (patch)
treeeffcbec571821ae72cd40ca27f33871967accf0b /src/misc/fa.ts
parentRefactorng (diff)
downloadmisskey-d92044cf6a68500c24e90da1b62b4bc6361f7d53.tar.gz
misskey-d92044cf6a68500c24e90da1b62b4bc6361f7d53.tar.bz2
misskey-d92044cf6a68500c24e90da1b62b4bc6361f7d53.zip
Refactor
Diffstat (limited to 'src/misc/fa.ts')
-rw-r--r--src/misc/fa.ts54
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;