Skip to content

Commit aebcca9

Browse files
committed
treat content of a rich input field as markdown (#120)
1 parent 18e524d commit aebcca9

File tree

11 files changed

+795
-353
lines changed

11 files changed

+795
-353
lines changed

.gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,6 @@
77
[submodule "src/lib/unistring"]
88
path = src/lib/unistring
99
url = [email protected]:akahuku/unistring.git
10+
[submodule "src/lib/marked"]
11+
path = src/lib/marked
12+
url = [email protected]:akahuku/marked.git

NOTICE

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
wasavi
22
======
33

4-
copyright 2012-2015 akahuku, [email protected]
4+
copyright 2012-2016 akahuku, [email protected]
55

66

77

@@ -26,3 +26,7 @@ This product includes the following libraries:
2626
* ES6-Promise
2727

2828
<https://github.com/jakearchibald/es6-promise>
29+
30+
* marked
31+
32+
<https://github.com/chjj/marked>

src/chrome/backend/lib/init.js

+1
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,6 @@ loadScripts(
2626
'Memorandum.js',
2727
'SyncStorage.js',
2828
typeof window.Promise == 'undefined' ? 'es6-promise.min.js' : null,
29+
'marked.js',
2930
'main.js'
3031
);

src/chrome/backend/lib/main.js

+32
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@
130130
var hotkey = require('./kosian/Hotkey').Hotkey(true);
131131
var contextMenu = require('./ContextMenu').ContextMenu();
132132
var memorandum = require('./Memorandum').Memorandum();
133+
var marked = require('./marked');
133134

134135
var configInfo = {
135136
sync: {
@@ -754,7 +755,38 @@
754755
respond(o);
755756
}
756757

758+
function rendererHeading (text, level) {
759+
return '<h' + level + '>' +
760+
text +
761+
'</h' + level + '>\n';
762+
}
763+
function rendererParagraph (text) {
764+
return '<div>' + text + '</div>\n';
765+
}
766+
function rendererStrong (text) {
767+
return '<b>' + text + '</b>';
768+
}
769+
function rendererEm (text) {
770+
return '<i>' + text + '</i>';
771+
}
757772
function handleTransfer (command, data, sender, respond) {
773+
if (data.payload.type == 'write'
774+
&& 'writeAs' in data.payload
775+
&& data.payload.writeAs == 'html') {
776+
var renderer = new marked.Renderer;
777+
renderer.heading = rendererHeading;
778+
renderer.paragraph = rendererParagraph;
779+
renderer.strong = rendererStrong;
780+
renderer.em = rendererEm;
781+
782+
var markupOpts = {
783+
renderer: renderer,
784+
gfm: true, tables: true, breaks: true
785+
};
786+
787+
data.payload.value = marked(data.payload.value, markupOpts);
788+
}
789+
758790
ext.postMessage(data.to, data.payload);
759791
}
760792

src/chrome/backend/lib/marked.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../lib/marked/marked.min.js

0 commit comments

Comments
 (0)