123456789101112131415161718192021222324252627282930313233343536373839404142 |
- 'use strict'
- var xtend = require('xtend')
- var removePosition = require('unist-util-remove-position')
- module.exports = parse
- var lineFeed = '\n'
- var lineBreaksExpression = /\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(lineBreaksExpression, lineFeed)
- // BOM.
- 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
- }
|