From 1fdaba770bdbe8cab17cdb995a211189f251b808 Mon Sep 17 00:00:00 2001 From: ekmartin Date: Sat, 2 May 2015 11:12:09 +0200 Subject: [PATCH 1/4] Fix link regex (#8) and add test --- lib/rich-message.js | 2 +- test/index.js | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/rich-message.js b/lib/rich-message.js index 853e68b..61ba752 100644 --- a/lib/rich-message.js +++ b/lib/rich-message.js @@ -39,7 +39,7 @@ function makeRichMessage (message, username) { message.html = md.render(message.text) message.html = message.html.replace(/\n/g, '

') message.html = ghlink(message.html, { format: 'html' }) - message.html = message.html.replace(/([> ])(#[a-zA-Z0-9]+)([ <])/g, '$1$2$3') + message.html = message.html.replace(/([> ])(#[a-zA-Z0-9]+)/g, '$1$2') var highlight = (message.text.indexOf(username) !== -1) var classStr = highlight ? ' class="highlight"' : '' diff --git a/test/index.js b/test/index.js index 8b13789..900f465 100644 --- a/test/index.js +++ b/test/index.js @@ -1 +1,19 @@ +var test = require('tape') +var richMessage = require('../') +test('link replacement', function (t) { + var message = { + text: '#cats #cats #cats not#cat', + username: 'cat', + timestamp: Date.now() + } + + var output = richMessage(message, 'other_cat') + var expected = '

' + + '#cats #cats ' + + '#cats not#cat' + + '

' + + t.equal(output.html, expected) + t.end() +}) From 0e4a7d9b4d561e7c5ed87e4995b3feecf56dc2b8 Mon Sep 17 00:00:00 2001 From: ekmartin Date: Sat, 2 May 2015 11:19:44 +0200 Subject: [PATCH 2/4] Add avatar tests and replace tap-spec with tap-dot --- package.json | 4 ++-- test/index.js | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 4e341c1..c245d6c 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ }, "devDependencies": { "standard": "^3.7.2", - "tap-spec": "^3.0.0", + "tap-dot": "^1.0.0", "tape": "^4.0.0" }, "homepage": "https://github.com/moose-team/rich-message", @@ -30,7 +30,7 @@ "url": "https://github.com/moose-team/rich-message.git" }, "scripts": { - "test": "standard && tape test/*.js | tap-spec" + "test": "standard && tape test/*.js | tap-dot" }, "dependencies": { "ghlink": "^0.1.2", diff --git a/test/index.js b/test/index.js index 900f465..86338d4 100644 --- a/test/index.js +++ b/test/index.js @@ -17,3 +17,27 @@ test('link replacement', function (t) { t.equal(output.html, expected) t.end() }) + +test('github avatars', function (t) { + var message = { + text: 'i like cats', + username: 'cat', + timestamp: Date.now() + } + + var output = richMessage(message, 'other_cat') + t.equal(output.avatar, 'https://github.com/cat.png') + t.end() +}) + +test('anon avatars', function (t) { + var message = { + text: 'i like cats', + username: 'Anonymous cat', + timestamp: Date.now() + } + + var output = richMessage(message, 'other_cat') + t.equal(output.avatar, 'static/cat.png') + t.end() +}) From 5c7adfd06137073de097c60140671aa93acddacf Mon Sep 17 00:00:00 2001 From: ekmartin Date: Sat, 2 May 2015 11:35:03 +0200 Subject: [PATCH 3/4] Add ghlinks, paragraph, highlight, timeago, markdown and merge tests --- test/index.js | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/test/index.js b/test/index.js index 86338d4..d802137 100644 --- a/test/index.js +++ b/test/index.js @@ -1,5 +1,6 @@ var test = require('tape') var richMessage = require('../') +var mergeMessages = richMessage.mergeMessages test('link replacement', function (t) { var message = { @@ -41,3 +42,101 @@ test('anon avatars', function (t) { t.equal(output.avatar, 'static/cat.png') t.end() }) + +test('github links', function (t) { + var message = { + text: 'cats isaacs/npm#1234', + username: 'cat', + timestamp: Date.now() + } + + var output = richMessage(message, 'other_cat') + var expected = '

' + + 'cats ' + + 'isaacs/npm#1234' + + '

' + + t.equal(output.html, expected) + t.end() +}) + +test('newlines -> paragraphs', function (t) { + var message = { + text: 'cat\ncat', + username: 'cat', + timestamp: Date.now() + } + + var output = richMessage(message, 'other_cat') + var expected = '

' + + 'cat

cat' + + '

' + + t.equal(output.html, expected) + t.end() +}) + +test('username highlight', function (t) { + var message = { + text: 'cat', + username: 'cat', + timestamp: Date.now() + } + + var output = richMessage(message, 'cat') + var expected = '

' + + 'cat' + + '

' + + t.equal(output.html, expected) + t.end() +}) + +test('timeago', function (t) { + var message = { + text: 'cat', + username: 'cat', + timestamp: 0 + } + + var output = richMessage(message, 'cat') + t.equal(output.timeago, '01/01/1970') + t.end() +}) + +test('markdown render', function (t) { + var message = { + text: '`cat` **cat**', + username: 'cat', + timestamp: Date.now() + } + + var output = richMessage(message, 'other_cat') + var expected = '

' + + 'cat cat' + + '

' + + t.equal(output.html, expected) + t.end() +}) + +test('merge messages', function (t) { + var message1 = { + text: 'cat1', + html: '

cat1

' + } + + var message2 = { + text: 'cat2', + html: '

cat2

' + } + + var output = mergeMessages(message1, message2) + var expected = { + text: 'cat1\ncat2', + html: '

cat1

cat2

' + } + + t.deepEqual(output, expected) + t.end() +}) From af881352fcab0fbb6c26e6151fa0d0c840760e95 Mon Sep 17 00:00:00 2001 From: ekmartin Date: Sat, 2 May 2015 18:12:59 +0200 Subject: [PATCH 4/4] Update channel regex and test --- lib/rich-message.js | 3 ++- test/index.js | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/rich-message.js b/lib/rich-message.js index 61ba752..5854235 100644 --- a/lib/rich-message.js +++ b/lib/rich-message.js @@ -36,10 +36,11 @@ function makeRichMessage (message, username) { : 'https://github.com/' + message.username + '.png' message.timeago = util.timeago(message.timestamp) + message.text = message.text.replace(/(^|\s)(#[a-zA-Z0-9]+)(?=$|\s)/g, + '$1[$2]($2)') message.html = md.render(message.text) message.html = message.html.replace(/\n/g, '

') message.html = ghlink(message.html, { format: 'html' }) - message.html = message.html.replace(/([> ])(#[a-zA-Z0-9]+)/g, '$1$2') var highlight = (message.text.indexOf(username) !== -1) var classStr = highlight ? ' class="highlight"' : '' diff --git a/test/index.js b/test/index.js index d802137..d6d918c 100644 --- a/test/index.js +++ b/test/index.js @@ -4,7 +4,7 @@ var mergeMessages = richMessage.mergeMessages test('link replacement', function (t) { var message = { - text: '#cats #cats #cats not#cat', + text: '#cats #cats #cats not#cat #cat!%$', username: 'cat', timestamp: Date.now() } @@ -12,7 +12,7 @@ test('link replacement', function (t) { var output = richMessage(message, 'other_cat') var expected = '

' + '#cats #cats ' + - '#cats not#cat' + + '#cats not#cat #cat!%$' + '

' t.equal(output.html, expected)