diff options
| author | rinsuki <428rinsuki+git@gmail.com> | 2018-05-17 07:52:24 +0900 |
|---|---|---|
| committer | rinsuki <428rinsuki+git@gmail.com> | 2018-05-17 07:52:24 +0900 |
| commit | 829b4012e6dc14eb64a3d8f60826fe9b6a41b40d (patch) | |
| tree | 42ac37f323db349dca9316e6fdb39fc33b860686 /src/text | |
| parent | add yarn.lock to gitignore (diff) | |
| parent | Update deliver.ts (diff) | |
| download | misskey-829b4012e6dc14eb64a3d8f60826fe9b6a41b40d.tar.gz misskey-829b4012e6dc14eb64a3d8f60826fe9b6a41b40d.tar.bz2 misskey-829b4012e6dc14eb64a3d8f60826fe9b6a41b40d.zip | |
Merge branch 'master' into fix/yarn-lock-ignore
Diffstat (limited to 'src/text')
| -rw-r--r-- | src/text/html.ts | 13 | ||||
| -rw-r--r-- | src/text/parse/elements/search.ts | 13 | ||||
| -rw-r--r-- | src/text/parse/elements/title.ts | 14 | ||||
| -rw-r--r-- | src/text/parse/index.ts | 4 |
4 files changed, 43 insertions, 1 deletions
diff --git a/src/text/html.ts b/src/text/html.ts index 797f3b3f33..f33ef4997b 100644 --- a/src/text/html.ts +++ b/src/text/html.ts @@ -54,6 +54,12 @@ const handlers = { document.body.appendChild(blockquote); }, + title({ document }, { content }) { + const h1 = document.createElement('h1'); + h1.textContent = content; + document.body.appendChild(h1); + }, + text({ document }, { content }) { for (const text of content.split('\n')) { const node = document.createTextNode(text); @@ -69,6 +75,13 @@ const handlers = { a.href = url; a.textContent = url; document.body.appendChild(a); + }, + + search({ document }, { content, query }) { + const a = document.createElement('a'); + a.href = `https://www.google.com/?#q=${query}`; + a.textContent = content; + document.body.appendChild(a); } }; diff --git a/src/text/parse/elements/search.ts b/src/text/parse/elements/search.ts new file mode 100644 index 0000000000..12ee8ecbb8 --- /dev/null +++ b/src/text/parse/elements/search.ts @@ -0,0 +1,13 @@ +/** + * Search + */ + +module.exports = text => { + const match = text.match(/^(.+?) 検索(\n|$)/); + if (!match) return null; + return { + type: 'search', + content: match[0], + query: match[1] + }; +}; diff --git a/src/text/parse/elements/title.ts b/src/text/parse/elements/title.ts new file mode 100644 index 0000000000..9f4708f5d6 --- /dev/null +++ b/src/text/parse/elements/title.ts @@ -0,0 +1,14 @@ +/** + * Title + */ + +module.exports = text => { + const match = text.match(/^【(.+?)】\n/); + if (!match) return null; + const title = match[0]; + return { + type: 'title', + content: title, + title: title.substr(1, title.length - 3) + }; +}; diff --git a/src/text/parse/index.ts b/src/text/parse/index.ts index b958da81b0..cfddd9f615 100644 --- a/src/text/parse/index.ts +++ b/src/text/parse/index.ts @@ -4,6 +4,7 @@ const elements = [ require('./elements/bold'), + require('./elements/title'), require('./elements/url'), require('./elements/link'), require('./elements/mention'), @@ -11,7 +12,8 @@ const elements = [ require('./elements/code'), require('./elements/inline-code'), require('./elements/quote'), - require('./elements/emoji') + require('./elements/emoji'), + require('./elements/search') ]; export default (source: string): any[] => { |