Skip to content
This repository was archived by the owner on Jul 11, 2019. It is now read-only.

Commit bd8329e

Browse files
committed
reorganize, move app/ into .
0 parents  commit bd8329e

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

lib/rich-message.js

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
module.exports = makeRichMessage
2+
3+
var autolinker = require('autolinker')
4+
var emojiNamedCharacters = require('emoji-named-characters')
5+
var escapeHTML = require('escape-html')
6+
var ghlink = require('ghlink')
7+
var htmlToVDom = require('html-to-vdom')
8+
var VNode = require('virtual-dom/vnode/vnode')
9+
var VText = require('virtual-dom/vnode/vtext')
10+
var util = require('./util.js')
11+
12+
var EMOJI_REGEX = /(\s|>|^)?:([A-z0-9_+]+):(\s|<|$)/g
13+
14+
var convertHTML = htmlToVDom({
15+
VNode: VNode,
16+
VText: VText
17+
})
18+
19+
function makeRichMessage (message) {
20+
message.anon = /Anonymous/i.test(message.username)
21+
message.avatar = message.anon
22+
? 'static/Icon.png'
23+
: 'https://github.com/' + message.username + '.png'
24+
message.timeago = util.timeago(message.timestamp)
25+
message.rawText = message.text
26+
message.text = escapeHTML(message.text)
27+
28+
message.text = message.text.replace(EMOJI_REGEX, function (full, $1, $2, $3) {
29+
return ($1 || '') + renderEmoji($2) + ($3 || '')
30+
})
31+
32+
var messageHtml = autolinker.link(message.text)
33+
messageHtml = ghlink(messageHtml, {format: 'html'})
34+
message.text = convertHTML('<span>' + messageHtml + '</span>')
35+
36+
return message
37+
}
38+
39+
function renderEmoji (emoji) {
40+
return emoji in emojiNamedCharacters ?
41+
'<img src="node_modules/emoji-named-characters/pngs/' + encodeURI(emoji) + '.png"'
42+
+ ' alt=":' + escape(emoji) + ':"'
43+
+ ' title=":' + escape(emoji) + ':"'
44+
+ ' class="emoji" align="absmiddle" height="20" width="20">'
45+
: ':' + emoji + ':'
46+
}

0 commit comments

Comments
 (0)