From d92044cf6a68500c24e90da1b62b4bc6361f7d53 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 7 Jul 2018 19:21:54 +0900 Subject: Refactor --- src/build/fa.ts | 54 --------------------- src/build/i18n.ts | 71 ---------------------------- src/build/license.ts | 13 ----- src/misc/fa.ts | 54 +++++++++++++++++++++ src/misc/get-user-summary.ts | 2 +- src/misc/i18n.ts | 71 ++++++++++++++++++++++++++++ src/misc/license.ts | 13 +++++ src/server/api/endpoints/notes/polls/vote.ts | 2 +- src/server/api/stream/reversi-game.ts | 2 +- src/server/web/docs.ts | 4 +- src/server/web/index.ts | 2 +- src/services/following/create.ts | 2 +- src/services/following/requests/create.ts | 2 +- src/services/note/create.ts | 2 +- src/services/note/reaction/create.ts | 2 +- 15 files changed, 148 insertions(+), 148 deletions(-) delete mode 100644 src/build/fa.ts delete mode 100644 src/build/i18n.ts delete mode 100644 src/build/license.ts create mode 100644 src/misc/fa.ts create mode 100644 src/misc/i18n.ts create mode 100644 src/misc/license.ts (limited to 'src') diff --git a/src/build/fa.ts b/src/build/fa.ts deleted file mode 100644 index 077bb51e6d..0000000000 --- a/src/build/fa.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * 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 `${icon.html[0]}`; - } else { - console.warn(`'${name}' not found in fa`); - return ''; - } -}; - -export default (src: string) => { - return src.replace(pattern, replacement); -}; - -export const fa = fontawesome; diff --git a/src/build/i18n.ts b/src/build/i18n.ts deleted file mode 100644 index 4ed3c7a2df..0000000000 --- a/src/build/i18n.ts +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Replace i18n texts - */ - -const locale = require('../../locales'); - -export default class Replacer { - private lang: string; - - public pattern = /%i18n:([a-z0-9_\-\.\/\|]+?)%/g; - - constructor(lang: string) { - this.lang = lang; - - this.get = this.get.bind(this); - this.replacement = this.replacement.bind(this); - } - - public get(path: string, key: string): string { - if (!(this.lang in locale)) { - console.warn(`lang '${this.lang}' is not supported`); - return key; // Fallback - } - - const texts = locale[this.lang]; - - let text = texts; - - if (path) { - if (text.hasOwnProperty(path)) { - text = text[path]; - } else { - console.warn(`path '${path}' not found in '${this.lang}'`); - return key; // Fallback - } - } - - // Check the key existance - const error = key.split('.').some(k => { - if (text.hasOwnProperty(k)) { - text = text[k]; - return false; - } else { - return true; - } - }); - - if (error) { - console.warn(`key '${key}' not found in '${path}' of '${this.lang}'`); - return key; // Fallback - } else if (typeof text !== 'string') { - console.warn(`key '${key}' is not string in '${path}' of '${this.lang}'`); - return key; // Fallback - } else { - return text; - } - } - - public replacement(match: string, key: string) { - let path = null; - - if (key.indexOf('|') != -1) { - path = key.split('|')[0]; - key = key.split('|')[1]; - } - - const txt = this.get(path, key); - - return txt.replace(/'/g, '\\x27').replace(/"/g, '\\x22'); - } -} diff --git a/src/build/license.ts b/src/build/license.ts deleted file mode 100644 index d36af665cd..0000000000 --- a/src/build/license.ts +++ /dev/null @@ -1,13 +0,0 @@ -import * as fs from 'fs'; - -const license = fs.readFileSync(__dirname + '/../../LICENSE', 'utf-8'); - -const licenseHtml = license - .replace(/\r\n/g, '\n') - .replace(/(.)\n(.)/g, '$1 $2') - .replace(/(^|\n)(.*?)($|\n)/g, '

$2

'); - -export { - license, - licenseHtml -}; 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 `${icon.html[0]}`; + } else { + console.warn(`'${name}' not found in fa`); + return ''; + } +}; + +export default (src: string) => { + return src.replace(pattern, replacement); +}; + +export const fa = fontawesome; diff --git a/src/misc/get-user-summary.ts b/src/misc/get-user-summary.ts index 625caf1f7e..87466d8bee 100644 --- a/src/misc/get-user-summary.ts +++ b/src/misc/get-user-summary.ts @@ -1,5 +1,5 @@ import { IUser, isLocalUser } from '../models/user'; -import getAcct from '../misc/acct/render'; +import getAcct from './acct/render import getUserName from './get-user-name'; /** diff --git a/src/misc/i18n.ts b/src/misc/i18n.ts new file mode 100644 index 0000000000..4ed3c7a2df --- /dev/null +++ b/src/misc/i18n.ts @@ -0,0 +1,71 @@ +/** + * Replace i18n texts + */ + +const locale = require('../../locales'); + +export default class Replacer { + private lang: string; + + public pattern = /%i18n:([a-z0-9_\-\.\/\|]+?)%/g; + + constructor(lang: string) { + this.lang = lang; + + this.get = this.get.bind(this); + this.replacement = this.replacement.bind(this); + } + + public get(path: string, key: string): string { + if (!(this.lang in locale)) { + console.warn(`lang '${this.lang}' is not supported`); + return key; // Fallback + } + + const texts = locale[this.lang]; + + let text = texts; + + if (path) { + if (text.hasOwnProperty(path)) { + text = text[path]; + } else { + console.warn(`path '${path}' not found in '${this.lang}'`); + return key; // Fallback + } + } + + // Check the key existance + const error = key.split('.').some(k => { + if (text.hasOwnProperty(k)) { + text = text[k]; + return false; + } else { + return true; + } + }); + + if (error) { + console.warn(`key '${key}' not found in '${path}' of '${this.lang}'`); + return key; // Fallback + } else if (typeof text !== 'string') { + console.warn(`key '${key}' is not string in '${path}' of '${this.lang}'`); + return key; // Fallback + } else { + return text; + } + } + + public replacement(match: string, key: string) { + let path = null; + + if (key.indexOf('|') != -1) { + path = key.split('|')[0]; + key = key.split('|')[1]; + } + + const txt = this.get(path, key); + + return txt.replace(/'/g, '\\x27').replace(/"/g, '\\x22'); + } +} diff --git a/src/misc/license.ts b/src/misc/license.ts new file mode 100644 index 0000000000..d36af665cd --- /dev/null +++ b/src/misc/license.ts @@ -0,0 +1,13 @@ +import * as fs from 'fs'; + +const license = fs.readFileSync(__dirname + '/../../LICENSE', 'utf-8'); + +const licenseHtml = license + .replace(/\r\n/g, '\n') + .replace(/(.)\n(.)/g, '$1 $2') + .replace(/(^|\n)(.*?)($|\n)/g, '

$2

'); + +export { + license, + licenseHtml +}; diff --git a/src/server/api/endpoints/notes/polls/vote.ts b/src/server/api/endpoints/notes/polls/vote.ts index 4eb4b70eb9..8adecd7e89 100644 --- a/src/server/api/endpoints/notes/polls/vote.ts +++ b/src/server/api/endpoints/notes/polls/vote.ts @@ -4,7 +4,7 @@ import Note from '../../../../../models/note'; import Watching from '../../../../../models/note-watching'; import watch from '../../../../../services/note/watch'; import { publishNoteStream } from '../../../../../stream'; -import notify from '../../../../..//notify'; +import notify from '../../../../../notify; import { ILocalUser } from '../../../../../models/user'; /** diff --git a/src/server/api/stream/reversi-game.ts b/src/server/api/stream/reversi-game.ts index faa4e2f38a..dc34eab673 100644 --- a/src/server/api/stream/reversi-game.ts +++ b/src/server/api/stream/reversi-game.ts @@ -1,6 +1,6 @@ import * as websocket from 'websocket'; import * as redis from 'redis'; -import * as CRC32 from 'crc-32'; +import * as CRC32 from 'crc-32/types/types'; import ReversiGame, { pack } from '../../../models/games/reversi/game'; import { publishReversiGameStream } from '../../../stream'; import Reversi from '../../../games/reversi/core'; diff --git a/src/server/web/docs.ts b/src/server/web/docs.ts index ceba14bd27..745d81b195 100644 --- a/src/server/web/docs.ts +++ b/src/server/web/docs.ts @@ -12,8 +12,8 @@ import * as glob from 'glob'; import * as yaml from 'js-yaml'; import ObjectContext from 'cafy/built/types/object'; import config from '../../config'; -import I18n from '../../build/i18n'; -import { fa } from '../../build/fa'; +import I18n from '../../misc/i18n'; +import { fa } from '../../misc/fa'; import { licenseHtml } from '../../build/license'; const constants = require('../../const.json'); diff --git a/src/server/web/index.ts b/src/server/web/index.ts index f54575e7ef..7291f8a0a5 100644 --- a/src/server/web/index.ts +++ b/src/server/web/index.ts @@ -12,7 +12,7 @@ import * as views from 'koa-views'; import docs from './docs'; import User from '../../models/user'; import parseAcct from '../../misc/acct/parse'; -import { fa } from '../../build/fa'; +import { fa } from '../../misc/fa'; import config from '../../config'; import Note, { pack as packNote } from '../../models/note'; import getNoteSummary from '../../misc/get-note-summary'; diff --git a/src/services/following/create.ts b/src/services/following/create.ts index aa25ed8f91..74d7ba159f 100644 --- a/src/services/following/create.ts +++ b/src/services/following/create.ts @@ -3,7 +3,7 @@ import Following from '../../models/following'; import FollowingLog from '../../models/following-log'; import FollowedLog from '../../models/followed-log'; import event from '../../stream'; -import notify from '../..//notify'; +import notify from '../../notify; import pack from '../../remote/activitypub/renderer'; import renderFollow from '../../remote/activitypub/renderer/follow'; import renderAccept from '../../remote/activitypub/renderer/accept'; diff --git a/src/services/following/requests/create.ts b/src/services/following/requests/create.ts index a309229872..4e0de45e2f 100644 --- a/src/services/following/requests/create.ts +++ b/src/services/following/requests/create.ts @@ -1,6 +1,6 @@ import User, { isLocalUser, isRemoteUser, pack as packUser, IUser } from '../../../models/user'; import event from '../../../stream'; -import notify from '../../..//notify'; +import notify from '../../../notify; import pack from '../../../remote/activitypub/renderer'; import renderFollow from '../../../remote/activitypub/renderer/follow'; import { deliver } from '../../../queue'; diff --git a/src/services/note/create.ts b/src/services/note/create.ts index 61260b8b96..6bb1fff5b2 100644 --- a/src/services/note/create.ts +++ b/src/services/note/create.ts @@ -9,7 +9,7 @@ import renderCreate from '../../remote/activitypub/renderer/create'; import renderAnnounce from '../../remote/activitypub/renderer/announce'; import packAp from '../../remote/activitypub/renderer'; import { IDriveFile } from '../../models/drive-file'; -import notify from '../..//notify'; +import notify from '../../notify; import NoteWatching from '../../models/note-watching'; import watch from './watch'; import Mute from '../../models/mute'; diff --git a/src/services/note/reaction/create.ts b/src/services/note/reaction/create.ts index 6d1f25470e..84aaea83bf 100644 --- a/src/services/note/reaction/create.ts +++ b/src/services/note/reaction/create.ts @@ -2,7 +2,7 @@ import { IUser, isLocalUser, isRemoteUser } from '../../../models/user'; import Note, { INote } from '../../../models/note'; import NoteReaction from '../../../models/note-reaction'; import { publishNoteStream } from '../../../stream'; -import notify from '../../..//notify'; +import notify from '../../../notify; import NoteWatching from '../../../models/note-watching'; import watch from '../watch'; import renderLike from '../../../remote/activitypub/renderer/like'; -- cgit v1.2.3-freya