* Remove pinning of eslint-plugin-markdown An issue affecting Node.js source has been fixed in eslint-plugin-markdown so we don't need to pin it to beta-4 anymore. Refs: https://github.com/eslint/eslint-plugin-markdown/issues/69 * Update eslint-plugin-markdown up to 1.0.0-beta.7 * Fix docs for eslint-plugin-markdown@1.0.0-beta.7 PR-URL: https://github.com/nodejs/node/pull/14047 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Yuta Hiroto <hello@about-hiroppy.com> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
53 lines
1.1 KiB
JavaScript
53 lines
1.1 KiB
JavaScript
/**
|
|
* @author Titus Wormer
|
|
* @copyright 2015 Titus Wormer
|
|
* @license MIT
|
|
* @module remark:parse:parse
|
|
* @fileoverview Parse the document
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
var xtend = require('xtend');
|
|
var removePosition = require('unist-util-remove-position');
|
|
|
|
module.exports = parse;
|
|
|
|
var C_NEWLINE = '\n';
|
|
var EXPRESSION_LINE_BREAKS = /\r\n|\r/g;
|
|
|
|
/* Parse the bound file. */
|
|
function parse() {
|
|
var self = this;
|
|
var value = String(self.file);
|
|
var start = {line: 1, column: 1, offset: 0};
|
|
var content = xtend(start);
|
|
var node;
|
|
|
|
/* Clean non-unix newlines: `\r\n` and `\r` are all
|
|
* changed to `\n`. This should not affect positional
|
|
* information. */
|
|
value = value.replace(EXPRESSION_LINE_BREAKS, C_NEWLINE);
|
|
|
|
if (value.charCodeAt(0) === 0xFEFF) {
|
|
value = value.slice(1);
|
|
|
|
content.column++;
|
|
content.offset++;
|
|
}
|
|
|
|
node = {
|
|
type: 'root',
|
|
children: self.tokenizeBlock(value, content),
|
|
position: {
|
|
start: start,
|
|
end: self.eof || xtend(start)
|
|
}
|
|
};
|
|
|
|
if (!self.options.position) {
|
|
removePosition(node, true);
|
|
}
|
|
|
|
return node;
|
|
}
|