blob: 59aac694bceebd4c6c08ad5fdec6f98ef7b893fc [file] [log] [blame]
'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
}