mirror of
https://activitypub.software/TransFem-org/Sharkey
synced 2024-11-26 07:55:14 +00:00
Refactoring ✨
This commit is contained in:
parent
c20cd97be2
commit
1b2d080651
6 changed files with 52 additions and 68 deletions
|
@ -2,16 +2,13 @@
|
|||
* Bold
|
||||
*/
|
||||
|
||||
const regexp = /\*\*(.+?)\*\*/;
|
||||
|
||||
module.exports = {
|
||||
test: x => new RegExp('^' + regexp.source).test(x),
|
||||
parse: text => {
|
||||
const bold = text.match(new RegExp('^' + regexp.source))[0];
|
||||
return {
|
||||
type: 'bold',
|
||||
content: bold,
|
||||
bold: bold.substr(2, bold.length - 4)
|
||||
};
|
||||
}
|
||||
module.exports = text => {
|
||||
const match = text.match(/^\*\*(.+?)\*\*/);
|
||||
if (!match) return null;
|
||||
const bold = match[0];
|
||||
return {
|
||||
type: 'bold',
|
||||
content: bold,
|
||||
bold: bold.substr(2, bold.length - 4)
|
||||
};
|
||||
};
|
||||
|
|
|
@ -2,19 +2,16 @@
|
|||
* Code
|
||||
*/
|
||||
|
||||
const regexp = /```([\s\S]+?)```/;
|
||||
|
||||
module.exports = {
|
||||
test: x => new RegExp('^' + regexp.source).test(x),
|
||||
parse: text => {
|
||||
const code = text.match(new RegExp('^' + regexp.source))[0];
|
||||
return {
|
||||
type: 'code',
|
||||
content: code,
|
||||
code: code.substr(3, code.length - 6).trim(),
|
||||
codeHtml: genHtml(code.substr(3, code.length - 6).trim())
|
||||
};
|
||||
}
|
||||
module.exports = text => {
|
||||
const match = text.match(/^```([\s\S]+?)```/);
|
||||
if (!match) return null;
|
||||
const code = match[0];
|
||||
return {
|
||||
type: 'code',
|
||||
content: code,
|
||||
code: code.substr(3, code.length - 6).trim(),
|
||||
codeHtml: genHtml(code.substr(3, code.length - 6).trim())
|
||||
};
|
||||
};
|
||||
|
||||
function escape(text) {
|
||||
|
|
|
@ -2,22 +2,18 @@
|
|||
* Hashtag
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
test: (x, i) =>
|
||||
/^\s#[^\s]+/.test(x) || (i == 0 && /^#[^\s]+/.test(x))
|
||||
,
|
||||
parse: text => {
|
||||
const isHead = text[0] == '#';
|
||||
const hashtag = text.match(/^\s?#[^\s]+/)[0];
|
||||
const res = !isHead ? [{
|
||||
type: 'text',
|
||||
content: text[0]
|
||||
}] : [];
|
||||
res.push({
|
||||
type: 'hashtag',
|
||||
content: isHead ? hashtag : hashtag.substr(1),
|
||||
hashtag: isHead ? hashtag.substr(1) : hashtag.substr(2)
|
||||
});
|
||||
return res;
|
||||
}
|
||||
module.exports = (text, i) => {
|
||||
if (!(/^\s#[^\s]+/.test(text) || (i == 0 && /^#[^\s]+/.test(text)))) return null;
|
||||
const isHead = text[0] == '#';
|
||||
const hashtag = text.match(/^\s?#[^\s]+/)[0];
|
||||
const res = !isHead ? [{
|
||||
type: 'text',
|
||||
content: text[0]
|
||||
}] : [];
|
||||
res.push({
|
||||
type: 'hashtag',
|
||||
content: isHead ? hashtag : hashtag.substr(1),
|
||||
hashtag: isHead ? hashtag.substr(1) : hashtag.substr(2)
|
||||
});
|
||||
return res;
|
||||
};
|
||||
|
|
|
@ -2,16 +2,13 @@
|
|||
* Mention
|
||||
*/
|
||||
|
||||
const regexp = /@[a-zA-Z0-9\-]+/;
|
||||
|
||||
module.exports = {
|
||||
test: x => new RegExp('^' + regexp.source).test(x),
|
||||
parse: text => {
|
||||
const mention = text.match(new RegExp('^' + regexp.source))[0];
|
||||
return {
|
||||
type: 'mention',
|
||||
content: mention,
|
||||
username: mention.substr(1)
|
||||
};
|
||||
}
|
||||
module.exports = text => {
|
||||
const match = text.match(/^@[a-zA-Z0-9\-]+/);
|
||||
if (!match) return null;
|
||||
const mention = match[0];
|
||||
return {
|
||||
type: 'mention',
|
||||
content: mention,
|
||||
username: mention.substr(1)
|
||||
};
|
||||
};
|
||||
|
|
|
@ -2,15 +2,12 @@
|
|||
* URL
|
||||
*/
|
||||
|
||||
const regexp = /https?:\/\/[\w\/:%#@\$&\?!\(\)\[\]~\.=\+\-]+/;
|
||||
|
||||
module.exports = {
|
||||
test: x => new RegExp('^' + regexp.source).test(x),
|
||||
parse: text => {
|
||||
const link = text.match(new RegExp('^' + regexp.source))[0];
|
||||
return {
|
||||
type: 'link',
|
||||
content: link
|
||||
};
|
||||
}
|
||||
module.exports = text => {
|
||||
const match = text.match(/^https?:\/\/[\w\/:%#@\$&\?!\(\)\[\]~\.=\+\-]+/);
|
||||
if (!match) return null;
|
||||
const link = match[0];
|
||||
return {
|
||||
type: 'link',
|
||||
content: link
|
||||
};
|
||||
};
|
||||
|
|
|
@ -30,8 +30,8 @@ function analyze(source) {
|
|||
// パース
|
||||
while (source != '') {
|
||||
const parsed = elements.some(el => {
|
||||
if (el.test(source, i)) {
|
||||
let tokens = el.parse(source);
|
||||
let tokens = el(source, i);
|
||||
if (tokens) {
|
||||
if (!Array.isArray(tokens)) {
|
||||
tokens = [tokens];
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue