Maintainer | Toshio Ito <debug.ito@gmail.com> |
---|---|
Safe Haskell | None |
Language | Haskell2010 |
- data Greskell a
- class ToGreskell a where
- type GreskellReturn a
- toGremlin :: ToGreskell a => a -> Text
- toGremlinLazy :: ToGreskell a => a -> Text
- string :: Text -> Greskell Text
- true :: Greskell Bool
- false :: Greskell Bool
- list :: [Greskell a] -> Greskell [a]
- single :: Greskell a -> Greskell [a]
- number :: Scientific -> Greskell Scientific
- value :: Value -> Greskell Value
- unsafeGreskell :: Text -> Greskell a
- unsafeGreskellLazy :: Text -> Greskell a
- unsafeFunCall :: Text -> [Text] -> Greskell a
- unsafeMethodCall :: Greskell a -> Text -> [Text] -> Greskell b
Type
Gremlin expression of type a
.
Greskell
is essentially just a piece of Gremlin script with a
phantom type. The type a
represents the type of data that the
script is supposed to evaluate to.
Eq
and Ord
instances compare Gremlin scripts, NOT the values
they evaluate to.
Functor Greskell Source # | Unsafely convert the phantom type. |
Eq (Greskell a) Source # | |
Fractional a => Fractional (Greskell a) Source # | Floating-point number literals and numeric operation in Gremlin |
Num a => Num (Greskell a) Source # | Integer literals and numeric operation in Gremlin |
Ord (Greskell a) Source # | |
Show (Greskell a) Source # | |
IsString a => IsString (Greskell a) Source # | Same as |
IsString a => Semigroup (Greskell a) Source # | Semigroup operator '(<>)' on |
IsString a => Monoid (Greskell a) Source # | Monoidal operations on |
ToGreskell (Greskell a) Source # | It's just |
type GreskellReturn (Greskell a) Source # | |
class ToGreskell a where Source #
Something that can convert to Greskell
.
type GreskellReturn a Source #
type of return value by Greskell.
toGreskell :: a -> Greskell (GreskellReturn a) Source #
ToGreskell (Greskell a) Source # | It's just |
Conversions
toGremlinLazy :: ToGreskell a => a -> Text Source #
Literals
Functions to create literals in Gremlin script. Use fromInteger
to create integer literals. Use fromRational
or number
to
create floating-point data literals.
string :: Text -> Greskell Text Source #
Create a String literal in Gremlin script. The content is automatically escaped.
>>>
toGremlin $ string "foo bar"
"\"foo bar\"">>>
toGremlin $ string "escape newline\n escape dollar $"
"\"escape newline\\n escape dollar \\$\""
list :: [Greskell a] -> Greskell [a] Source #
List literal.
>>>
toGremlin $ list ([100, 200, 300] :: [Greskell Int])
"[100,200,300]"
single :: Greskell a -> Greskell [a] Source #
Make a list with a single object. Useful to prevent the Gremlin Server from automatically iterating the result object.
>>>
toGremlin $ single ("hoge" :: Greskell String)
"[\"hoge\"]"
number :: Scientific -> Greskell Scientific Source #
Arbitrary precision number literal, like "123e8".
>>>
toGremlin $ number 123e8
"1.23e10"
value :: Value -> Greskell Value Source #
Aeson Value
literal.
>>>
toGremlin $ value Aeson.Null
"null">>>
toGremlin $ value $ Aeson.toJSON $ ([10, 20, 30] :: [Int])
"[10.0,20.0,30.0]">>>
toGremlin $ value $ Aeson.Object mempty
"[:]"
Unsafe constructors
Unsafely create a Greskell
of arbitrary type. The given Gremlin
script is printed as-is.
>>>
toGremlin $ unsafeGreskell "x + 100"
"x + 100"
Same as unsafeGreskell
, but it takes lazy Text
.
Unsafely create a Greskell
that calls the given function with
the given arguments.
>>>
toGremlin $ unsafeFunCall "add" ["10", "20"]
"add(10,20)"
:: Greskell a | target object |
-> Text | method name |
-> [Text] | arguments |
-> Greskell b | return value of the method call |
Unsafely create a Greskell
that calls the given object method
call with the given target and arguments.
>>>
toGremlin $ unsafeMethodCall ("foobar" :: Greskell String) "length" []
"(\"foobar\").length()"