From a40b3154ebb0b1d59ed3c2cd345905a80c6253dd Mon Sep 17 00:00:00 2001 From: Kyle Kelley Date: Sat, 1 Aug 2015 09:34:30 -0500 Subject: [PATCH 1/8] Well that was a misstep on dist/ --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 32b1383..5d19916 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "test": "mocha --compilers js:babel/register", "build": "npm run build:es5 && npm run build:browser", "build:es5": "babel src --out-dir lib/ --source-maps", - "build:browser": "browserify lib/*.js --outfile dist/transformime.js", + "build:browser": "browserify lib/*.js --outfile dist/tf-commonmark.js", "prepublish": "npm run build", "watch": "parallelshell 'npm run watch:test -s' 'npm run watch:build -s'", "watch:build": "nodemon -q -w src/ --ext '.' --exec 'npm run build'", From 9c0737af4fe7f854aeeb7eb524106c1c5b2f23cd Mon Sep 17 00:00:00 2001 From: Kyle Kelley Date: Sat, 1 Aug 2015 09:37:03 -0500 Subject: [PATCH 2/8] TF2ify the MarkdownTransformer It should probably be commonMarkTransform now... --- src/commonmark-transformer.js | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/src/commonmark-transformer.js b/src/commonmark-transformer.js index fc5266f..dd30493 100644 --- a/src/commonmark-transformer.js +++ b/src/commonmark-transformer.js @@ -2,27 +2,16 @@ var commonmark = require("commonmark"); -export default class MarkdownTransformer { - constructor() { - this.reader = new commonmark.Parser(); - this.writer = new commonmark.HtmlRenderer({ - safe: true - }); - } +export default function MarkdownTransformer(mimetype, data, document) { + var div = document.createElement("div"); + var parsed = this.reader.parse(data); - get mimetype() { - return "text/markdown"; - } + // TODO: Any other transformations on the parsed object + // See https://github.com/jgm/commonmark.js#usage - transform(data, doc) { - var div = doc.createElement("div"); - var parsed = this.reader.parse(data); + div.innerHTML = this.writer.render(parsed); - // TODO: Any other transformations on the parsed object - // See https://github.com/jgm/commonmark.js#usage - - div.innerHTML = this.writer.render(parsed); - - return div; - } + return div; } + +MarkdownTransformer.mimetype = 'text/markdown'; From 02e70fb94a60c85aa7feb95e75b86b10eefe3df4 Mon Sep 17 00:00:00 2001 From: Kyle Kelley Date: Sat, 1 Aug 2015 10:24:34 -0500 Subject: [PATCH 3/8] Test the markdownTransform. --- src/commonmark-transformer.js | 17 ------------ src/commonmark.transformer.js | 25 +++++++++++++++++ test/commonmark.transformer.test.js | 43 +++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 17 deletions(-) delete mode 100644 src/commonmark-transformer.js create mode 100644 src/commonmark.transformer.js create mode 100644 test/commonmark.transformer.test.js diff --git a/src/commonmark-transformer.js b/src/commonmark-transformer.js deleted file mode 100644 index dd30493..0000000 --- a/src/commonmark-transformer.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict"; - -var commonmark = require("commonmark"); - -export default function MarkdownTransformer(mimetype, data, document) { - var div = document.createElement("div"); - var parsed = this.reader.parse(data); - - // TODO: Any other transformations on the parsed object - // See https://github.com/jgm/commonmark.js#usage - - div.innerHTML = this.writer.render(parsed); - - return div; -} - -MarkdownTransformer.mimetype = 'text/markdown'; diff --git a/src/commonmark.transformer.js b/src/commonmark.transformer.js new file mode 100644 index 0000000..0e9f0bc --- /dev/null +++ b/src/commonmark.transformer.js @@ -0,0 +1,25 @@ +"use strict"; + +var commonmark = require("commonmark"); + +function markdownTransform(mimetype, data, document) { + var div = document.createElement("div"); + + let reader = new commonmark.Parser(); + let writer = new commonmark.HtmlRenderer({ + safe: true + }); + + var parsed = reader.parse(data); + + // TODO: Any other transformations on the parsed object + // See https://github.com/jgm/commonmark.js#usage + + div.innerHTML = writer.render(parsed); + + return div; +} + +markdownTransform.mimetype = 'text/markdown'; + +export default markdownTransform; diff --git a/test/commonmark.transformer.test.js b/test/commonmark.transformer.test.js new file mode 100644 index 0000000..77646e8 --- /dev/null +++ b/test/commonmark.transformer.test.js @@ -0,0 +1,43 @@ +import {assert} from 'chai'; + +import {jsdom} from 'jsdom'; + +var markdownTransform = require('../src/commonmark.transformer'); + +describe('text transformer', function() { + beforeEach(function() { + this.document = jsdom(); + }); + + it('should have the text/markdown mimetype', function() { + assert.equal(markdownTransform.mimetype, "text/markdown"); + }); + describe('#transform', function() { + it('should create a div with some happy markdown', function() { + let text = `#Ratification of Markdown Association + +We are present here because we believe in unification +across all markdowns, whether common, flavored like +GitHub, or used to help an undergrad do their homework +via StackOverflow. It is of *great importance* that we +unify for the [sake of the sciences](https://jupyter.org), +the arts, and be able to express in rich text our thoughts, +feelings, and desires. + +## Speaking for some + +We need markdown to work + +* On the web +* On your hard drive +* Hanging upside down from a bridge +* In letters to your lovers`; + text = text + "\n\n```bash\nnpm install transformime-commonmark\n```\n"; + + let el = markdownTransform('text/markdown', text, this.document); + + assert.equal(el.innerHTML, '

#Ratification of Markdown Association

\n

We are present here because we believe in unification\nacross all markdowns, whether common, flavored like\nGitHub, or used to help an undergrad do their homework\nvia StackOverflow. It is of great importance that we\nunify for the sake of the sciences,\nthe arts, and be able to express in rich text our thoughts,\nfeelings, and desires.

\n

Speaking for some

\n

We need markdown to work

\n
    \n
  • On the web
  • \n
  • On your hard drive
  • \n
  • Hanging upside down from a bridge
  • \n
  • In letters to your lovers
  • \n
\n
npm install transformime-commonmark\n
\n'); + + }); + }); +}); From 4581598d437764696b30cbe31326d80e99730955 Mon Sep 17 00:00:00 2001 From: Kyle Kelley Date: Sat, 1 Aug 2015 10:28:45 -0500 Subject: [PATCH 4/8] There must be a space after a # in commonmark... --- test/commonmark.transformer.test.js | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/test/commonmark.transformer.test.js b/test/commonmark.transformer.test.js index 77646e8..8660cf2 100644 --- a/test/commonmark.transformer.test.js +++ b/test/commonmark.transformer.test.js @@ -13,8 +13,8 @@ describe('text transformer', function() { assert.equal(markdownTransform.mimetype, "text/markdown"); }); describe('#transform', function() { - it('should create a div with some happy markdown', function() { - let text = `#Ratification of Markdown Association + it('should create a div with nice markup', function() { + let text = `# Ratification of Markdown Association We are present here because we believe in unification across all markdowns, whether common, flavored like @@ -36,7 +36,26 @@ We need markdown to work let el = markdownTransform('text/markdown', text, this.document); - assert.equal(el.innerHTML, '

#Ratification of Markdown Association

\n

We are present here because we believe in unification\nacross all markdowns, whether common, flavored like\nGitHub, or used to help an undergrad do their homework\nvia StackOverflow. It is of great importance that we\nunify for the sake of the sciences,\nthe arts, and be able to express in rich text our thoughts,\nfeelings, and desires.

\n

Speaking for some

\n

We need markdown to work

\n
    \n
  • On the web
  • \n
  • On your hard drive
  • \n
  • Hanging upside down from a bridge
  • \n
  • In letters to your lovers
  • \n
\n
npm install transformime-commonmark\n
\n'); + assert.equal(el.innerHTML, `

Ratification of Markdown Association

+

We are present here because we believe in unification +across all markdowns, whether common, flavored like +GitHub, or used to help an undergrad do their homework +via StackOverflow. It is of great importance that we +unify for the sake of the sciences, +the arts, and be able to express in rich text our thoughts, +feelings, and desires.

+

Speaking for some

+

We need markdown to work

+
    +
  • On the web
  • +
  • On your hard drive
  • +
  • Hanging upside down from a bridge
  • +
  • In letters to your lovers
  • +
+
npm install transformime-commonmark
+
+`); + assert.equal(el.localName, 'div'); }); }); From 546405ea84d3dcd914e659962104d46f9f932130 Mon Sep 17 00:00:00 2001 From: Kyle Kelley Date: Sat, 1 Aug 2015 10:32:16 -0500 Subject: [PATCH 5/8] To a transform, update README --- README.md | 5 ++--- src/{commonmark.transformer.js => commonmark.transform.js} | 0 ...mark.transformer.test.js => commonmark.transform.test.js} | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) rename src/{commonmark.transformer.js => commonmark.transform.js} (100%) rename test/{commonmark.transformer.test.js => commonmark.transform.test.js} (96%) diff --git a/README.md b/README.md index 2876388..c122bf9 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,9 @@ npm install transformime-commonmark Usage with transformime: ``` -> MarkdownTransformer = require('transformime-commonmark'); -> mdt = new MarkdownTransformer(); +> markdownTransform = require('transformime-commonmark'); -> el = mdt.transform("```python\nimport this\n```\n", document); +> el = mdt.transform("text/markdown", "```python\nimport this\n```\n", document); > el.innerHTML '
import this\n
\n' ``` diff --git a/src/commonmark.transformer.js b/src/commonmark.transform.js similarity index 100% rename from src/commonmark.transformer.js rename to src/commonmark.transform.js diff --git a/test/commonmark.transformer.test.js b/test/commonmark.transform.test.js similarity index 96% rename from test/commonmark.transformer.test.js rename to test/commonmark.transform.test.js index 8660cf2..72d6a70 100644 --- a/test/commonmark.transformer.test.js +++ b/test/commonmark.transform.test.js @@ -2,7 +2,7 @@ import {assert} from 'chai'; import {jsdom} from 'jsdom'; -var markdownTransform = require('../src/commonmark.transformer'); +var markdownTransform = require('../src/commonmark.transform'); describe('text transformer', function() { beforeEach(function() { From 47956b2c0ced8320bb15624dfe5e4b79fddb5401 Mon Sep 17 00:00:00 2001 From: Kyle Kelley Date: Sat, 1 Aug 2015 10:35:11 -0500 Subject: [PATCH 6/8] Stick reader and writer in a closure. --- src/commonmark.transform.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/commonmark.transform.js b/src/commonmark.transform.js index 0e9f0bc..30df4ca 100644 --- a/src/commonmark.transform.js +++ b/src/commonmark.transform.js @@ -2,23 +2,25 @@ var commonmark = require("commonmark"); -function markdownTransform(mimetype, data, document) { - var div = document.createElement("div"); - +var markdownTransform = function(){ let reader = new commonmark.Parser(); let writer = new commonmark.HtmlRenderer({ safe: true }); - var parsed = reader.parse(data); + return function(mimetype, data, document) { + var div = document.createElement("div"); + + var parsed = reader.parse(data); - // TODO: Any other transformations on the parsed object - // See https://github.com/jgm/commonmark.js#usage + // TODO: Any other transformations on the parsed object + // See https://github.com/jgm/commonmark.js#usage - div.innerHTML = writer.render(parsed); + div.innerHTML = writer.render(parsed); - return div; -} + return div; + }; +}(); markdownTransform.mimetype = 'text/markdown'; From b6e483d624a1a8be8559277d5c430bd470abf68e Mon Sep 17 00:00:00 2001 From: Kyle Kelley Date: Sat, 1 Aug 2015 10:38:12 -0500 Subject: [PATCH 7/8] Comment on why the closure was used. --- src/commonmark.transform.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/commonmark.transform.js b/src/commonmark.transform.js index 30df4ca..18598c3 100644 --- a/src/commonmark.transform.js +++ b/src/commonmark.transform.js @@ -3,6 +3,8 @@ var commonmark = require("commonmark"); var markdownTransform = function(){ + // Stick reader and writer in a closure so they only get created once. + let reader = new commonmark.Parser(); let writer = new commonmark.HtmlRenderer({ safe: true From b54f93a96d4ebb910184467c4cbf888a0342d1bd Mon Sep 17 00:00:00 2001 From: Kyle Kelley Date: Sat, 1 Aug 2015 10:41:59 -0500 Subject: [PATCH 8/8] Update our main. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5d19916..7b7f581 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "transformime-commonmark", "version": "0.0.1", "description": "Transforms Markdown to HTML Elements, adhering to the transformime interface", - "main": "lib/commonmark-transformer.js", + "main": "lib/commonmark.transform.js", "scripts": { "prebuild": "mkdirp lib && mkdirp dist && npm run clean", "test": "mocha --compilers js:babel/register",