Refactor closeEmitter to make it more modular (#12365)
This commit is contained in:
parent
a60f18d025
commit
f9d95fd6a7
1 changed files with 12 additions and 4 deletions
|
|
@ -160,13 +160,11 @@ proc guidingInd(em: Emitter; pos: int): int =
|
||||||
inc i
|
inc i
|
||||||
result = -1
|
result = -1
|
||||||
|
|
||||||
proc closeEmitter*(em: var Emitter) =
|
proc renderTokens*(em: var Emitter): string =
|
||||||
|
## Render Emitter tokens to a string of code
|
||||||
template defaultCase() =
|
template defaultCase() =
|
||||||
content.add em.tokens[i]
|
content.add em.tokens[i]
|
||||||
inc lineLen, em.tokens[i].len
|
inc lineLen, em.tokens[i].len
|
||||||
|
|
||||||
let outFile = em.config.absOutFile
|
|
||||||
|
|
||||||
var content = newStringOfCap(16_000)
|
var content = newStringOfCap(16_000)
|
||||||
var maxLhs = 0
|
var maxLhs = 0
|
||||||
var lineLen = 0
|
var lineLen = 0
|
||||||
|
|
@ -243,6 +241,11 @@ proc closeEmitter*(em: var Emitter) =
|
||||||
defaultCase()
|
defaultCase()
|
||||||
inc i
|
inc i
|
||||||
|
|
||||||
|
return content
|
||||||
|
|
||||||
|
proc writeOut*(em: Emitter, content: string) =
|
||||||
|
## Write to disk
|
||||||
|
let outFile = em.config.absOutFile
|
||||||
if fileExists(outFile) and readFile(outFile.string) == content:
|
if fileExists(outFile) and readFile(outFile.string) == content:
|
||||||
discard "do nothing, see #9499"
|
discard "do nothing, see #9499"
|
||||||
return
|
return
|
||||||
|
|
@ -253,6 +256,11 @@ proc closeEmitter*(em: var Emitter) =
|
||||||
f.llStreamWrite content
|
f.llStreamWrite content
|
||||||
llStreamClose(f)
|
llStreamClose(f)
|
||||||
|
|
||||||
|
proc closeEmitter*(em: var Emitter) =
|
||||||
|
## Renders emitter tokens and write to a file
|
||||||
|
let content = renderTokens(em)
|
||||||
|
em.writeOut(content)
|
||||||
|
|
||||||
proc wr(em: var Emitter; x: string; lt: LayoutToken) =
|
proc wr(em: var Emitter; x: string; lt: LayoutToken) =
|
||||||
em.tokens.add x
|
em.tokens.add x
|
||||||
em.kinds.add lt
|
em.kinds.add lt
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue