sowstring
Version:
Parse intended strings
118 lines (110 loc) • 3.39 kB
Plain Text
class Cache [OK]
constructor (Options)
push (item)
flush (TreeBuilder)
flushExceptTrailingWhitespaces (TreeBuilder)
class TreeBuilder [OK]
constructor (Options)
enter (Node)
push (Leaf)
leave ()
class Indent [OK]
levels: Array
enter (indent)
leave ()
getLevelFromIndent (indent)
getIndentFromLevel (level)
isValidIndent (indent)
isValidLevel (level)
isLevel (level)
class Interceptor [OK]
setProp (name, value)
getProp (name)
setSibling ()
setChild ()
setParent ()
setBeforeNext ()
touchIndent ()
discard ()
startIndent: String readonly
text: String
level: Number
indent: Number
class Options [OK]
constructor (userOptions)
emptyLines: Boolean
fixIndent: Boolean
useHeading: Boolean
tabReplace: String | Number
intercept: Function | null
error: Function | null
class Leaf [OK]
parent: Node
lineNum: Number
level: Number
indent: Number
text: String
get isNode: false
get empty: Boolean
class Node [OK]
children: Array
parent: Node
lineNum: Number
level: Number
indent: Number
heading: String
get isNode: true
push (item)
SowString (source, options)
- Para cada linha, faça:
- Se o item for linha vazia (significa que são aceitos, pois não foram removidos na RegExp) [OK]
- Adicione no cache
- Próxima linha
- Se houver callback interceptor [OK]
- Chame a função
- Se foi marcado para rejeição
- Próxima linha
- Se foi marcado para cache:
- Adiciona no cache
- Próxima linha
- Se há erro de indentação (checagem) e há callback de erro: [OK]
- Chame a função
- Se foi marcado para rejeição
- Próxima linha
- Se foi marcado para cache:
- Adiciona no cache
- Próxima linha
- Se há erro de indentação (nova checagem, a menos que não haja callback de erro): [OK]
- Se há opção para consertar automaticamente
- Adicione no cache
- Próxima linha
Senão, se não será rejeitado:
- Dispare um erro
- Calcule o nível pela indentação ou o contrário [OK]
- Escolha o primeiro caso verdadeiro:
Caso seja marcado para rejeição: [Feito Antes]
- Próxima linha
Caso seja marcado para cache: [Feito Antes]
- Adicione no cache
- Próxima linha
Caso seja nível de irmão: [OK]
- Adicione itens do cache
- Adicione na árvore
- Próxima linha
Caso seja nível de filho: [OK]
- Adicione itens do cache, exceto últimos em branco (por quê?)
- Entre na indentação
- Entre na árvore
- Adicione itens do cache
- Adicione na árvore
- Próxima linha
Caso seja nível de pai: [OK]
- Enquanto não estiver no nível:
- Volte um nível na indentação
- Volte um nível na árvore
- Adicione itens do cache
- Adicione na árvore
- Próxima linha
Se nenhum caso funcionar
- Há um erro interno e caso de exceção não tratada
- Adicione o que restar no cache