New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@textlint/text-to-ast

Package Overview
Dependencies
Maintainers
5
Versions
80
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@textlint/text-to-ast - npm Package Compare versions

Comparing version

to
3.3.5

11

CHANGELOG.md

@@ -6,2 +6,13 @@ # Change Log

## [3.3.5](https://github.com/textlint/textlint/compare/@textlint/text-to-ast@3.3.4...@textlint/text-to-ast@3.3.5) (2021-05-08)
### Bug Fixes
* **text-to-ast:** correct to parse CRLF empty line ([#763](https://github.com/textlint/textlint/issues/763)) ([a3288e0](https://github.com/textlint/textlint/commit/a3288e0c49bd122ff97e159d3d82bd5a4012f5ea))
## [3.3.4](https://github.com/textlint/textlint/compare/@textlint/text-to-ast@3.3.3...@textlint/text-to-ast@3.3.4) (2021-03-21)

@@ -8,0 +19,0 @@

26

lib/plaintext-parser.js

@@ -29,8 +29,9 @@ // LICENSE : MIT

* @param {TxtNode} prevNode previous node from BreakNode
* @param lineBreakText
*/
function createEndedBRNode(prevNode, lineBreakText) {
function createEndedBRNode(_a) {
var prevNode = _a.prevNode, lineBreakText = _a.lineBreakText;
return {
type: plaintext_syntax_1.Syntax.Break,
raw: lineBreakText,
value: lineBreakText,
range: [prevNode.range[1], prevNode.range[1] + lineBreakText.length],

@@ -52,7 +53,8 @@ loc: {

*/
function createBRNode(lineNumber, startIndex) {
function createBRNode(_a) {
var lineBreak = _a.lineBreak, lineNumber = _a.lineNumber, startIndex = _a.startIndex;
return {
type: plaintext_syntax_1.Syntax.Break,
raw: "\n",
range: [startIndex, startIndex + 1],
raw: lineBreak,
range: [startIndex, startIndex + lineBreak.length],
loc: {

@@ -65,3 +67,3 @@ start: {

line: lineNumber,
column: 1
column: lineBreak.length
}

@@ -101,7 +103,7 @@ }

function splitTextByLine(text) {
var LINEBREAKE_MARK_PATTERN = /\r?\n/g;
var LINEBREAK_MARK_PATTERN = /\r?\n/g;
var results = [];
var match = null;
var prevMatchIndex = 0;
while ((match = LINEBREAKE_MARK_PATTERN.exec(text)) !== null) {
while ((match = LINEBREAK_MARK_PATTERN.exec(text)) !== null) {
var slicedText = text.slice(prevMatchIndex, match.index);

@@ -145,3 +147,7 @@ results.push({

if (isEmptyLine(currentLine, index)) {
var emptyBreakNode = createBRNode(lineNumber, startIndex);
var emptyBreakNode = createBRNode({
lineBreak: currentLine.lineBreak,
lineNumber: lineNumber,
startIndex: startIndex
});
startIndex += emptyBreakNode.raw.length;

@@ -160,3 +166,3 @@ result.push(emptyBreakNode);

if (currentLine.lineBreak !== null) {
var breakNode = createEndedBRNode(paragraph, currentLine.lineBreak);
var breakNode = createEndedBRNode({ prevNode: paragraph, lineBreakText: currentLine.lineBreak });
startIndex += breakNode.raw.length;

@@ -163,0 +169,0 @@ result.push(breakNode);

@@ -27,8 +27,9 @@ // LICENSE : MIT

* @param {TxtNode} prevNode previous node from BreakNode
* @param lineBreakText
*/
function createEndedBRNode(prevNode, lineBreakText) {
function createEndedBRNode(_a) {
var prevNode = _a.prevNode, lineBreakText = _a.lineBreakText;
return {
type: Syntax.Break,
raw: lineBreakText,
value: lineBreakText,
range: [prevNode.range[1], prevNode.range[1] + lineBreakText.length],

@@ -50,7 +51,8 @@ loc: {

*/
function createBRNode(lineNumber, startIndex) {
function createBRNode(_a) {
var lineBreak = _a.lineBreak, lineNumber = _a.lineNumber, startIndex = _a.startIndex;
return {
type: Syntax.Break,
raw: "\n",
range: [startIndex, startIndex + 1],
raw: lineBreak,
range: [startIndex, startIndex + lineBreak.length],
loc: {

@@ -63,3 +65,3 @@ start: {

line: lineNumber,
column: 1
column: lineBreak.length
}

@@ -99,7 +101,7 @@ }

function splitTextByLine(text) {
var LINEBREAKE_MARK_PATTERN = /\r?\n/g;
var LINEBREAK_MARK_PATTERN = /\r?\n/g;
var results = [];
var match = null;
var prevMatchIndex = 0;
while ((match = LINEBREAKE_MARK_PATTERN.exec(text)) !== null) {
while ((match = LINEBREAK_MARK_PATTERN.exec(text)) !== null) {
var slicedText = text.slice(prevMatchIndex, match.index);

@@ -143,3 +145,7 @@ results.push({

if (isEmptyLine(currentLine, index)) {
var emptyBreakNode = createBRNode(lineNumber, startIndex);
var emptyBreakNode = createBRNode({
lineBreak: currentLine.lineBreak,
lineNumber: lineNumber,
startIndex: startIndex
});
startIndex += emptyBreakNode.raw.length;

@@ -158,3 +164,3 @@ result.push(emptyBreakNode);

if (currentLine.lineBreak !== null) {
var breakNode = createEndedBRNode(paragraph, currentLine.lineBreak);
var breakNode = createEndedBRNode({ prevNode: paragraph, lineBreakText: currentLine.lineBreak });
startIndex += breakNode.raw.length;

@@ -161,0 +167,0 @@ result.push(breakNode);

{
"name": "@textlint/text-to-ast",
"version": "3.3.4",
"version": "3.3.5",
"description": "Parse plain text to AST with location info.",

@@ -36,16 +36,17 @@ "keywords": [

"clean": "rimraf lib/ module/ tsconfig.tsbuildinfo tsconfig.module.tsbuildinfo",
"crlf": "eolConverter crlf test/snapshots/crlf/input.txt",
"crlf": "eolConverter crlf test/snapshots/crlf/input.txt && eolConverter crlf test/snapshots/crlf-empty-line/input.txt",
"prepublish": "npm run --if-present build",
"pretest": "npm run crlf",
"test": "mocha \"test/**/*.{js,ts}\"",
"updateSnapshot": "cross-env UPDATE_SNAPSHOT=1 npm test",
"watch": "tsc -b --watch"
},
"dependencies": {
"@textlint/ast-node-types": "^4.4.2"
"@textlint/ast-node-types": "^4.4.3"
},
"devDependencies": {
"@textlint/ast-tester": "^2.3.4",
"@textlint/ast-tester": "^2.3.5",
"cross-env": "^7.0.3",
"eol-converter-cli": "^1.0.8",
"mocha": "^8.3.2",
"mocha": "^8.4.0",
"power-assert": "^1.6.1",

@@ -59,3 +60,3 @@ "rimraf": "^3.0.2",

},
"gitHead": "07c0497b387f09e41088b7f113555aa5e5451add"
"gitHead": "4cb1e78aa38cd0e942c61f352ffb29bb36f80a7b"
}

@@ -30,8 +30,8 @@ // LICENSE : MIT

* @param {TxtNode} prevNode previous node from BreakNode
* @param lineBreakText
*/
function createEndedBRNode(prevNode: TxtNode, lineBreakText: string) {
function createEndedBRNode({ prevNode, lineBreakText }: { prevNode: TxtNode; lineBreakText: string }): TxtNode {
return {
type: Syntax.Break,
raw: lineBreakText,
value: lineBreakText,
range: [prevNode.range[1], prevNode.range[1] + lineBreakText.length],

@@ -54,7 +54,15 @@ loc: {

*/
function createBRNode(lineNumber: number, startIndex: number) {
function createBRNode({
lineBreak,
lineNumber,
startIndex
}: {
lineBreak: string;
lineNumber: number;
startIndex: number;
}): TxtNode {
return {
type: Syntax.Break,
raw: "\n",
range: [startIndex, startIndex + 1],
raw: lineBreak,
range: [startIndex, startIndex + lineBreak.length],
loc: {

@@ -67,3 +75,3 @@ start: {

line: lineNumber,
column: 1
column: lineBreak.length
}

@@ -105,7 +113,7 @@ }

function splitTextByLine(text: string) {
const LINEBREAKE_MARK_PATTERN = /\r?\n/g;
const LINEBREAK_MARK_PATTERN = /\r?\n/g;
const results = [];
let match = null;
let prevMatchIndex = 0;
while ((match = LINEBREAKE_MARK_PATTERN.exec(text)) !== null) {
while ((match = LINEBREAK_MARK_PATTERN.exec(text)) !== null) {
const slicedText = text.slice(prevMatchIndex, match.index);

@@ -127,2 +135,6 @@ results.push({

type EmptyLine = { text: ""; lineBreak: string };
type LastLine = { text: string; lineBreak: null };
type LineWithBreak = { text: string; lineBreak: string };
/**

@@ -138,15 +150,9 @@ * parse text and return ast mapped location info.

const lastLineIndex = textLineByLine.length - 1;
const isLastEmptyLine = (
line: { text: string; lineBreak: string } | { text: string; lineBreak: null },
index: number
) => {
const isLastEmptyLine = (line: LineWithBreak | LastLine | EmptyLine, index: number): line is EmptyLine => {
return index === lastLineIndex && line.text === "";
};
const isEmptyLine = (
line: { text: string; lineBreak: string } | { text: string; lineBreak: null },
index: number
) => {
const isEmptyLine = (line: LineWithBreak | LastLine | EmptyLine, index: number): line is EmptyLine => {
return index !== lastLineIndex && line.text === "";
};
const children = textLineByLine.reduce<any[]>(function (result, currentLine, index) {
const children = textLineByLine.reduce(function (result, currentLine, index) {
const lineNumber = index + 1;

@@ -158,3 +164,7 @@ if (isLastEmptyLine(currentLine, index)) {

if (isEmptyLine(currentLine, index)) {
const emptyBreakNode = createBRNode(lineNumber, startIndex);
const emptyBreakNode = createBRNode({
lineBreak: currentLine.lineBreak,
lineNumber,
startIndex
});
startIndex += emptyBreakNode.raw.length;

@@ -174,3 +184,3 @@ result.push(emptyBreakNode);

if (currentLine.lineBreak !== null) {
const breakNode = createEndedBRNode(paragraph, currentLine.lineBreak);
const breakNode = createEndedBRNode({ prevNode: paragraph, lineBreakText: currentLine.lineBreak });
startIndex += breakNode.raw.length;

@@ -180,3 +190,3 @@ result.push(breakNode);

return result;
}, []);
}, [] as TxtNode[]);
const lastLine = textLineByLine[textLineByLine.length - 1];

@@ -183,0 +193,0 @@ if (lastLine === undefined) {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet