Fix blank line rendering.
This commit is contained in:
parent
e5244ba2b0
commit
7bdb6c0ed7
2
packages/js/core/dist/parser.cjs
vendored
2
packages/js/core/dist/parser.cjs
vendored
@ -1 +1 @@
|
|||||||
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});function f(e="",r=" "){return{line:e,indent:r,type:0,level:0,offsetHead:0,offsetTail:0}}function o(e){if(typeof e!="object"||!e||typeof e.type!="number"||typeof e.level!="number")throw new Error("'lineData' must be an object with 'line' string, and 'type' and 'level' integer properties");if(typeof e.indent!="string"||e.indent.length===0||e.indent.length>1)throw new Error("'lineData.indent' must be a single-character string");if(typeof e.line!="string")throw new Error("'lineData.line' must be a string");let r=0,t=0;if(!e.line.length)e.type===1&&(t+=1),e.type===0&&(t=e.level),e.type=r,e.level=t,e.offsetHead=0,e.offsetTail=0;else{for(r=1;e.line[t]===e.indent&&t<=e.level+1;)++t;for(e.type=r,e.level=t,e.offsetHead=t,e.offsetTail=t;e.line[e.offsetTail]&&e.line[e.offsetTail]!==" ";)++e.offsetTail}return e}exports.createLineData=f;exports.parseLine=o;
|
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});function f(e="",r=" "){return{line:e,indent:r,type:0,level:0,offsetHead:0,offsetTail:0}}function o(e){if(typeof e!="object"||!e||typeof e.type!="number"||typeof e.level!="number")throw new Error("'lineData' must be an object with 'line' string, and 'type' and 'level' integer properties");if(typeof e.indent!="string"||e.indent.length===0||e.indent.length>1)throw new Error("'lineData.indent' must be a single-character string");if(typeof e.line!="string")throw new Error("'lineData.line' must be a string");let r=0,t=0;if(!e.line.length)e.type===1&&(t=e.level+1),e.type===0&&(t=e.level),e.type=r,e.level=t,e.offsetHead=0,e.offsetTail=0;else{for(r=1;e.line[t]===e.indent&&t<=e.level+1;)++t;for(e.type=r,e.level=t,e.offsetHead=t,e.offsetTail=t;e.line[e.offsetTail]&&e.line[e.offsetTail]!==" ";)++e.offsetTail}return e}exports.createLineData=f;exports.parseLine=o;
|
||||||
|
2
packages/js/core/dist/parser.js
vendored
2
packages/js/core/dist/parser.js
vendored
@ -10,7 +10,7 @@ function o(e) {
|
|||||||
throw new Error("'lineData.line' must be a string");
|
throw new Error("'lineData.line' must be a string");
|
||||||
let r = 0, f = 0;
|
let r = 0, f = 0;
|
||||||
if (!e.line.length)
|
if (!e.line.length)
|
||||||
e.type === 1 && (f += 1), e.type === 0 && (f = e.level), e.type = r, e.level = f, e.offsetHead = 0, e.offsetTail = 0;
|
e.type === 1 && (f = e.level + 1), e.type === 0 && (f = e.level), e.type = r, e.level = f, e.offsetHead = 0, e.offsetTail = 0;
|
||||||
else {
|
else {
|
||||||
for (r = 1; e.line[f] === e.indent && f <= e.level + 1; )
|
for (r = 1; e.line[f] === e.indent && f <= e.level + 1; )
|
||||||
++f;
|
++f;
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
enum LineType {
|
||||||
|
BLANK,
|
||||||
|
NORMAL,
|
||||||
|
}
|
||||||
|
|
||||||
export type LineData = {
|
export type LineData = {
|
||||||
line: string;
|
line: string;
|
||||||
indent: string;
|
indent: string;
|
||||||
@ -16,19 +21,21 @@ export function parseLine(lineData: LineData): LineData {
|
|||||||
if (typeof lineData.indent !== 'string' || lineData.indent.length === 0 || lineData.indent.length > 1) throw new Error(`'lineData.indent' must be a single-character string`)
|
if (typeof lineData.indent !== 'string' || lineData.indent.length === 0 || lineData.indent.length > 1) throw new Error(`'lineData.indent' must be a single-character string`)
|
||||||
if (typeof lineData.line !== 'string') throw new Error(`'lineData.line' must be a string`)
|
if (typeof lineData.line !== 'string') throw new Error(`'lineData.line' must be a string`)
|
||||||
|
|
||||||
let type = 0
|
let type = LineType.BLANK
|
||||||
let level = 0
|
let level = 0
|
||||||
|
|
||||||
if (!lineData.line.length) {
|
if (!lineData.line.length) {
|
||||||
if (lineData.type === 1) level += 1
|
// TODO: Not sure if this is necessary. If the previous line was a normal line, it makes the blank line a child of the normal line.
|
||||||
if (lineData.type === 0) level = lineData.level
|
// If the previous line was a blank line, the blank line retains the same level.
|
||||||
|
if (lineData.type === LineType.NORMAL) level = lineData.level + 1
|
||||||
|
if (lineData.type === LineType.BLANK) level = lineData.level
|
||||||
|
|
||||||
lineData.type = type
|
lineData.type = type
|
||||||
lineData.level = level
|
lineData.level = level
|
||||||
lineData.offsetHead = 0
|
lineData.offsetHead = 0
|
||||||
lineData.offsetTail = 0
|
lineData.offsetTail = 0
|
||||||
} else {
|
} else {
|
||||||
type = 1
|
type = LineType.NORMAL
|
||||||
|
|
||||||
while (lineData.line[level] === lineData.indent && level <= lineData.level + 1) ++level
|
while (lineData.line[level] === lineData.indent && level <= lineData.level + 1) ++level
|
||||||
lineData.type = type
|
lineData.type = type
|
||||||
|
Loading…
x
Reference in New Issue
Block a user