Packages
expression
0.5.0
2.49.1
2.49.0
2.48.0
2.47.5
2.47.4
2.47.3
2.47.2
2.47.1
2.47.0
2.46.0
2.45.1
2.45.0
2.44.1
2.44.0
2.43.0
2.42.1
2.41.4
2.41.3
2.41.2
2.41.0
2.40.0
2.38.0
2.37.0
2.36.2
2.36.1
2.36.0
2.35.0
2.34.0
2.33.1
2.33.0
2.32.1
2.31.6
2.31.3
2.31.0
2.30.0
2.28.0
2.27.3
2.27.2
2.27.1
2.27.0
2.26.1
2.26.0
2.25.0
2.24.2
2.24.1
2.24.0
2.23.9
2.23.8
2.23.7
2.23.6
2.23.4
2.23.3
2.23.2
2.23.1
2.23.0
2.22.2
2.22.0
2.21.0
2.20.0
2.19.0
2.18.0
2.17.0
2.16.0
2.14.0
2.13.0
2.12.0
2.11.0
2.10.1
2.10.0
2.9.0
2.8.0
2.6.0
2.5.8
2.5.7
2.5.6
2.5.5
2.5.4
2.5.3
2.5.2
2.5.1
2.5.0
2.4.1
2.4.0
2.3.2
2.3.1
2.3.0
2.2.1
2.2.0
2.1.1
2.1.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.1.1
1.1.0
1.0.0
0.7.2
0.7.1
0.7.0
0.6.0
0.5.0
0.4.3
0.4.2
0.4.1
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.1.0
A Excel like expression parser, compatible with FLOIP Expression language.
Current section
Files
Jump to
Current section
Files
lib/operator_helpers.ex
defmodule Expression.OperatorHelpers do
@moduledoc false
import NimbleParsec
def plus(combinator \\ empty()), do: combinator |> ascii_char([?+]) |> replace(:+) |> label("+")
def minus(combinator \\ empty()),
do: combinator |> ascii_char([?-]) |> replace(:-) |> label("-")
def times(combinator \\ empty()),
do: combinator |> ascii_char([?*]) |> replace(:*) |> label("*")
def divide(combinator \\ empty()),
do: combinator |> ascii_char([?/]) |> replace(:/) |> label("/")
def concatenate(combinator \\ empty()),
do: combinator |> ascii_char([?&]) |> replace(:&) |> label("&")
def exponent(combinator \\ empty()),
do: combinator |> ascii_char([?^]) |> replace(:^) |> label("^")
def gte(combinator \\ empty()), do: combinator |> string(">=") |> replace(:>=) |> label(">=")
def lte(combinator \\ empty()), do: combinator |> string("<=") |> replace(:<=) |> label("<=")
def neq(combinator \\ empty()),
do: combinator |> choice([string("!="), string("<>")]) |> replace(:!=) |> label("!=")
def eq(combinator \\ empty()),
do: combinator |> choice([string("=="), string("=")]) |> replace(:==) |> label("==")
def gt(combinator \\ empty()), do: combinator |> ascii_char([?>]) |> replace(:>) |> label(">")
def lt(combinator \\ empty()), do: combinator |> ascii_char([?<]) |> replace(:<) |> label("<")
end