26 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
function t(e = null, 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, f = 0;
 | 
						|
  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;
 | 
						|
  else {
 | 
						|
    for (r = 1; e.line[f] === e.indent && f <= e.level + 1; )
 | 
						|
      ++f;
 | 
						|
    for (e.type = r, e.level = f, e.offsetHead = f, e.offsetTail = f; e.line[e.offsetTail] && e.line[e.offsetTail] !== " "; )
 | 
						|
      ++e.offsetTail;
 | 
						|
  }
 | 
						|
  return e;
 | 
						|
}
 | 
						|
export {
 | 
						|
  t as createLineData,
 | 
						|
  o as parseLine
 | 
						|
};
 |