Add markdown support
parent
917d08ac9f
commit
26080215fd
@ -0,0 +1,8 @@
|
|||||||
|
define(['commonmark'], function (commonmark) {
|
||||||
|
return function convert(source) {
|
||||||
|
var reader = new commonmark.Parser();
|
||||||
|
var writer = new commonmark.HtmlRenderer();
|
||||||
|
var parsed = reader.parse(source);
|
||||||
|
return writer.render(parsed);
|
||||||
|
};
|
||||||
|
});
|
@ -0,0 +1,10 @@
|
|||||||
|
define(['lib/markdown'], function (markdown) {
|
||||||
|
describe('markdown', function () {
|
||||||
|
it('→ converts to html', function () {
|
||||||
|
var expected = '<p>some <em>example</em> ' +
|
||||||
|
'<a href="http://example.com">yo</a></p>\n';
|
||||||
|
var actual = markdown('some *example* [yo](http://example.com)');
|
||||||
|
expect(actual).toBe(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "commonmark",
|
||||||
|
"main": "dist/commonmark.js",
|
||||||
|
"homepage": "https://github.com/jgm/commonmark.js",
|
||||||
|
"description": "CommonMark parsing and rendering library",
|
||||||
|
"license": "BSD-2-Clause",
|
||||||
|
"ignore": [
|
||||||
|
"**/.*",
|
||||||
|
"lib",
|
||||||
|
"bin",
|
||||||
|
"test",
|
||||||
|
"tools",
|
||||||
|
"bench",
|
||||||
|
"Makefile",
|
||||||
|
"README.md",
|
||||||
|
"dingus.html",
|
||||||
|
"eslint.json",
|
||||||
|
"package.json"
|
||||||
|
],
|
||||||
|
"keywords": [
|
||||||
|
"markdown",
|
||||||
|
"commonmark"
|
||||||
|
],
|
||||||
|
"version": "0.17.1",
|
||||||
|
"_release": "0.17.1",
|
||||||
|
"_resolution": {
|
||||||
|
"type": "version",
|
||||||
|
"tag": "0.17.1",
|
||||||
|
"commit": "d89adcd2ba20845b6e5e9f0f8814ce6c43dbd3c8"
|
||||||
|
},
|
||||||
|
"_source": "git://github.com/jgm/commonmark.js.git",
|
||||||
|
"_target": "~0.17.1",
|
||||||
|
"_originalSource": "commonmark",
|
||||||
|
"_direct": true
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
Contributing
|
||||||
|
============
|
||||||
|
|
||||||
|
Submitting bug reports
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
There is a [forum for discussing CommonMark](http://talk.commonmark.org);
|
||||||
|
use it for questions and discussions that might be open-ended. Use the
|
||||||
|
[github issue tracker](http://github.com/jgm/commonmark.js/issues)
|
||||||
|
only for simple, clear, actionable issues.
|
||||||
|
|
||||||
|
Submitting pull requests
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
1. A good pull request makes one logical change and does not mix
|
||||||
|
several independent changes.
|
||||||
|
2. If you have several commits that successively refine a single
|
||||||
|
logical change, rebase them into a single clean commit.
|
||||||
|
3. Ensure that all tests pass (`make test`).
|
||||||
|
4. Use `make lint` to check for problems.
|
||||||
|
5. Ensure that performance has not been affected (`make bench` before
|
||||||
|
and after the change).
|
||||||
|
6. Changes to `dist` should not be committed. (We will regenerate
|
||||||
|
`dist/commonmark.js` before a release.)
|
||||||
|
7. Follow the style of the existing code.
|
@ -0,0 +1,115 @@
|
|||||||
|
Copyright (c) 2014, John MacFarlane
|
||||||
|
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice, this list of conditions and the following
|
||||||
|
disclaimer in the documentation and/or other materials provided
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
lib/normalize-reference.js is a slightly modified version of
|
||||||
|
https://github.com/dmoscrop/fold-case:
|
||||||
|
|
||||||
|
Copyright Mathias Bynens <https://mathiasbynens.be/>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
lib/from-code-point.js is derived from a polyfill
|
||||||
|
Copyright Mathias Bynens <http://mathiasbynens.be/>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
bench/samples/*.md:
|
||||||
|
|
||||||
|
With the exception of `bench/samples/README.md`, the samples in
|
||||||
|
`bench/samples` are taken from https://github.com/markdown-it/markdown-it.
|
||||||
|
|
||||||
|
Copyright (c) 2014 Vitaly Puzrin, Alex Kocharin.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation
|
||||||
|
files (the "Software"), to deal in the Software without
|
||||||
|
restriction, including without limitation the rights to use,
|
||||||
|
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
The CommonMark spec (spec.txt) in test/ is
|
||||||
|
|
||||||
|
Copyright (C) 2014-15 John MacFarlane
|
||||||
|
|
||||||
|
Released under the Creative Commons CC-BY-SA 4.0 license:
|
||||||
|
<http://creativecommons.org/licenses/by-sa/4.0/>.
|
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"name": "commonmark",
|
||||||
|
"main": "dist/commonmark.js",
|
||||||
|
"homepage": "https://github.com/jgm/commonmark.js",
|
||||||
|
"description": "CommonMark parsing and rendering library",
|
||||||
|
"license": "BSD-2-Clause",
|
||||||
|
"ignore": [
|
||||||
|
"**/.*",
|
||||||
|
"lib",
|
||||||
|
"bin",
|
||||||
|
"test",
|
||||||
|
"tools",
|
||||||
|
"bench",
|
||||||
|
"Makefile",
|
||||||
|
"README.md",
|
||||||
|
"dingus.html",
|
||||||
|
"eslint.json",
|
||||||
|
"package.json"
|
||||||
|
],
|
||||||
|
"keywords": [
|
||||||
|
"markdown",
|
||||||
|
"commonmark"
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,120 @@
|
|||||||
|
[0.17.1]
|
||||||
|
|
||||||
|
* Reorganized block parsing in a more modular way. There is now
|
||||||
|
a `blocks` property of the parser that contains information
|
||||||
|
about each type of block, which is used in parsing. Ultimately
|
||||||
|
this will make it easier to extend the library, but the project
|
||||||
|
is still only partially completed.
|
||||||
|
* Code cleanup and simplification, with some performance optimizations.
|
||||||
|
* Removed version from `bower.json`. Bower takes version from tags.
|
||||||
|
* Initialize some properties at beginning of 'parse'.
|
||||||
|
This fixes some mistakes in source position when the
|
||||||
|
same Parser object was used to parse multiple times (#3).
|
||||||
|
* Made parsing of backslash escapes a bit more efficient.
|
||||||
|
* Removed refmap parameter of InlineParser.parse().
|
||||||
|
Instead, set the refmap property before running the parser.
|
||||||
|
* Set `_string_content` to null after using, allowing it to be GCd.
|
||||||
|
* Removed `_strings`; just append to `_string_content`.
|
||||||
|
This gives better performance with v8.
|
||||||
|
* Format benchmarks so that samples are linked.
|
||||||
|
* Added in-browser benchmark.
|
||||||
|
* Added API documentation to README.
|
||||||
|
* xml renderer: use `sourcepos` attribute, not `data-sourcepos`.
|
||||||
|
* Changed license to 2-clause BSD. Added clause for spec.
|
||||||
|
|
||||||
|
[0.17.0]
|
||||||
|
|
||||||
|
* Renamed `DocParser` -> `Parser`.
|
||||||
|
Note: library users should update their code or it will break.
|
||||||
|
* Added `normalize-reference.js`. This does a proper unicode case
|
||||||
|
fold instead of just using `toUpperCase`. It is also faster,
|
||||||
|
partly because we can do one pass for space and case normalization.
|
||||||
|
* Removed artificial distinction btw FencedCode, IndentedCode
|
||||||
|
in `blocks.js`.
|
||||||
|
* Removed vestigial `ReferenceDef` node type.
|
||||||
|
* Added getters and (in some cases) setters for "public" properties
|
||||||
|
of Nodes. Renamed non-public properties to start with underscore.
|
||||||
|
This will allow us to keep the API stable while changing the
|
||||||
|
underlying data structure. And it will avoid exposing properties
|
||||||
|
that have only an instrumental value in parsing.
|
||||||
|
* Removed `Node.toObject()`.
|
||||||
|
* Rename `bullet_char` -> `bulletChar`.
|
||||||
|
* Check for blank line before checking indent in Item.
|
||||||
|
* Removed unnecessary setting of default `tight=true` in `finalize`.
|
||||||
|
We do that when the `listData` object is initialized.
|
||||||
|
* Performance optimization - avoid repeating scan for nonspace.
|
||||||
|
* Moved check for closing fence to close-block-check section.
|
||||||
|
This is a more logical arrangement and addresses jgm/CommonMark#285.
|
||||||
|
* Added `offset` property to `DocParser`. Use this in `addLine`,
|
||||||
|
instead of `offset` parameter, which has been removed.
|
||||||
|
* Implemented new spec for emphasis and strong emphasis with `_`.
|
||||||
|
* `html.js` - explicitly specify second parameter of `escapeXml`.
|
||||||
|
* Fixed escaping error in CDATA regex.
|
||||||
|
* Removed some dead code and fixed incorrect call to `addChild`
|
||||||
|
with three arguments (Robin Stocker).
|
||||||
|
* Adjust `lastLineLength` before returning after close fence.
|
||||||
|
* Propagate `lastLineBlank` up through parents.
|
||||||
|
Previously we just kept it set on the bottom child.
|
||||||
|
But this will give a quicker determination of `lastLineBlank`.
|
||||||
|
* Moved continuation checks & finalizers into `blocks` property
|
||||||
|
of `Parser`. This is a first step towards keeping the code for
|
||||||
|
each kind of block in a central place, rather than spread all over
|
||||||
|
the code base. This is preparatory for a more modular structure,
|
||||||
|
where each type of block has a record describing how it is parsed and
|
||||||
|
finalized. Eventually this will also contain functions for checking for
|
||||||
|
a block start, and metadata that determines how line data
|
||||||
|
should be handled.
|
||||||
|
* Added `currentLine` property to `Parser`.
|
||||||
|
* Renamed `first_nonspace` -> `next_nonspace`.
|
||||||
|
* Put generated `commonmark.js` in `dist/` rather than `js/`.
|
||||||
|
* Miscellaneous code cleanup.
|
||||||
|
* Split JS code into (this) independent repository.
|
||||||
|
* Added detailed benchmark with samples (`make bench-detailed`).
|
||||||
|
* Added `dist/commonmark.js` to repo (for bower).
|
||||||
|
* Added `bower.json` (jgm/CommonMark#288).
|
||||||
|
* Updated test suite. Now shows how performance depends on length in
|
||||||
|
pathological cases.
|
||||||
|
* Don't use -1 as second param for .slice. This seems to cause a
|
||||||
|
deoptimization, as reported by `node --trace-deopt`.
|
||||||
|
* Added `CONTRIBUTING.md`.
|
||||||
|
* Added `.travis.yml` to test against various node versions.
|
||||||
|
* Renamed `changelog.js.txt` -> `changelog.txt`.
|
||||||
|
|
||||||
|
[0.16]
|
||||||
|
|
||||||
|
* Improved regex for HTML comments (#263).
|
||||||
|
* Fixed CDATA regex (#267).
|
||||||
|
* Use linked list instead of arrays in AST: the same doubly linked
|
||||||
|
node structure as cmark uses. This simplifies some code and
|
||||||
|
eliminates the need for recursive algorithms, so we can render
|
||||||
|
deeply-nested structures without stack overflows.
|
||||||
|
* Use `children` instead of `label` (in Image and Link),
|
||||||
|
`inline_content` (in Paragraph), and `c` (in Emph and Strong).
|
||||||
|
* Renamed the `c` property to `literal` to match `libcmark`.
|
||||||
|
* Use `literal` rather than `string_content` property for code
|
||||||
|
blocks, HTML. `string_content` is reserved for raw string
|
||||||
|
content that has yet to be parsed as inlines.
|
||||||
|
* Improved end lines (#276).
|
||||||
|
* Added a node walker, for easy AST traversal (see `node.js`).
|
||||||
|
* Regularized position information into a `sourcepos` property.
|
||||||
|
Added end column information.
|
||||||
|
* Renamed `html-renderer.js` to `html.js`.
|
||||||
|
* Replace NUL characters with U+FFFD, as per spec.
|
||||||
|
* Optimized code, resulting in significant performance gains.
|
||||||
|
(We've gone from being twice as fast as showdown.js to being
|
||||||
|
three times as fast, on par with marked.)
|
||||||
|
* Made `tight` a property of `list_data` rather than `Node`.
|
||||||
|
* Added options to renderer, parser objections.
|
||||||
|
* Added a `--sourcepos` command line option to `js/bin/commonmark`.
|
||||||
|
* HTML renderer now throws an error on unknown tag type (which
|
||||||
|
indicates a programming error).
|
||||||
|
* Removed `ansi.js` code from the source tree. The test suite now
|
||||||
|
uses its own mini ansi colors implementation.
|
||||||
|
* Added `--time` option to `js/bin/commonmark`.
|
||||||
|
* Added an XML renderer (XML representation of the AST, matching
|
||||||
|
`Commonmark.dtd`).
|
||||||
|
* Changed `url` property to `destination` to match `cmark` and spec.
|
||||||
|
* Added `js/common.js` to hold some common code, like string
|
||||||
|
unescaping and URI normalization.
|
||||||
|
* Use `decodeURI` instead of `unescape`.
|
||||||
|
* Added some "pathological" test cases to test suite.
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue