sq/libsq/ast/render/literal.go
Neil O'Toole 9a1c6a7d09
Feature/173 args (#183)
- Implement --arg feature
- Refactor sqlbuilder package (now called "render").
- Bug fixes, especially around expressions.
2023-04-07 02:00:49 -06:00

26 lines
622 B
Go

package render
import (
"github.com/neilotoole/sq/libsq/ast"
"github.com/neilotoole/sq/libsq/core/stringz"
)
// Literal implement FragmentBuilder.
func doLiteral(_ *Context, lit *ast.LiteralNode) (string, error) {
switch lit.LiteralType() {
case ast.LiteralNull:
return "NULL", nil
case ast.LiteralNaturalNumber, ast.LiteralAnyNumber:
return lit.Text(), nil
case ast.LiteralString:
text, _, err := unquoteLiteral(lit.Text())
if err != nil {
return "", err
}
return stringz.SingleQuote(text), nil
default:
// Should never happen.
panic("unknown literal type: " + string(lit.LiteralType()))
}
}