parent
301d784256
commit
ed0a4e7311
1 changed files with 17 additions and 2 deletions
|
|
@ -1179,9 +1179,12 @@ type
|
||||||
proc add(s: var SqlWriter, thing: char) =
|
proc add(s: var SqlWriter, thing: char) =
|
||||||
s.buffer.add(thing)
|
s.buffer.add(thing)
|
||||||
|
|
||||||
proc add(s: var SqlWriter, thing: string) =
|
proc prepareAdd(s: var SqlWriter) {.inline.} =
|
||||||
if s.buffer.len > 0 and s.buffer[^1] notin {' ', '\L', '(', '.'}:
|
if s.buffer.len > 0 and s.buffer[^1] notin {' ', '\L', '(', '.'}:
|
||||||
s.buffer.add(" ")
|
s.buffer.add(" ")
|
||||||
|
|
||||||
|
proc add(s: var SqlWriter, thing: string) =
|
||||||
|
s.prepareAdd
|
||||||
s.buffer.add(thing)
|
s.buffer.add(thing)
|
||||||
|
|
||||||
proc addKeyw(s: var SqlWriter, thing: string) =
|
proc addKeyw(s: var SqlWriter, thing: string) =
|
||||||
|
|
@ -1223,6 +1226,17 @@ proc addMulti(s: var SqlWriter, n: SqlNode, sep = ',', prefix, suffix: char) =
|
||||||
proc quoted(s: string): string =
|
proc quoted(s: string): string =
|
||||||
"\"" & replace(s, "\"", "\"\"") & "\""
|
"\"" & replace(s, "\"", "\"\"") & "\""
|
||||||
|
|
||||||
|
func escape(result: var string; s: string) =
|
||||||
|
result.add('\'')
|
||||||
|
for c in items(s):
|
||||||
|
case c
|
||||||
|
of '\0'..'\31':
|
||||||
|
result.add("\\x")
|
||||||
|
result.add(toHex(ord(c), 2))
|
||||||
|
of '\'': result.add("''")
|
||||||
|
else: result.add(c)
|
||||||
|
result.add('\'')
|
||||||
|
|
||||||
proc ra(n: SqlNode, s: var SqlWriter) =
|
proc ra(n: SqlNode, s: var SqlWriter) =
|
||||||
if n == nil: return
|
if n == nil: return
|
||||||
case n.kind
|
case n.kind
|
||||||
|
|
@ -1235,7 +1249,8 @@ proc ra(n: SqlNode, s: var SqlWriter) =
|
||||||
of nkQuotedIdent:
|
of nkQuotedIdent:
|
||||||
s.add(quoted(n.strVal))
|
s.add(quoted(n.strVal))
|
||||||
of nkStringLit:
|
of nkStringLit:
|
||||||
s.add(escape(n.strVal, "'", "'"))
|
s.prepareAdd
|
||||||
|
s.buffer.escape(n.strVal)
|
||||||
of nkBitStringLit:
|
of nkBitStringLit:
|
||||||
s.add("b'" & n.strVal & "'")
|
s.add("b'" & n.strVal & "'")
|
||||||
of nkHexStringLit:
|
of nkHexStringLit:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue