Current section

Files

Jump to
expression lib literal_helpers.ex
Raw

lib/literal_helpers.ex

defmodule Expression.LiteralHelpers do
import NimbleParsec
def int do
optional(string("-"))
|> concat(integer(min: 1))
|> reduce({Enum, :join, [""]})
|> map({String, :to_integer, []})
end
def decimal do
optional(string("-"))
|> concat(integer(min: 1))
|> concat(string("."))
|> concat(integer(min: 1))
|> reduce({Enum, :join, [""]})
|> map({Decimal, :new, []})
end
def numeric do
choice([int(), decimal()])
end
def single_quoted_string do
ignore(string(~s(')))
|> repeat(
lookahead_not(ascii_char([?']))
|> choice([string(~s(\')), utf8_char([])])
)
|> ignore(string(~s(')))
|> reduce({List, :to_string, []})
end
def double_quoted_string do
ignore(string(~s(")))
|> repeat(
lookahead_not(ascii_char([?"]))
|> choice([string(~s(\")), utf8_char([])])
)
|> ignore(string(~s(")))
|> reduce({List, :to_string, []})
end
end