| Maintainer | Toshio Ito <debug.ito@gmail.com> |
|---|---|
| Safe Haskell | None |
| Language | Haskell2010 |
Data.Greskell.Greskell
Description
Synopsis
- data Greskell a
- class ToGreskell a where
- type GreskellReturn a
- toGreskell :: a -> Greskell (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
- valueInt :: Integral a => a -> Greskell Value
- gvalue :: Value -> Greskell GValue
- gvalueInt :: Integral a => a -> Greskell GValue
- 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.
Instances
| 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 |
Defined in Data.Greskell.Greskell | |
| Ord (Greskell a) Source # | |
Defined in Data.Greskell.Greskell | |
| Show (Greskell a) Source # | |
| IsString a => IsString (Greskell a) Source # | Same as |
Defined in Data.Greskell.Greskell Methods fromString :: String -> Greskell a # | |
| IsString a => Semigroup (Greskell a) Source # | Semigroup operator |
| IsString a => Monoid (Greskell a) Source # | Monoidal operations on |
| ToGreskell (Greskell a) Source # | It's just |
Defined in Data.Greskell.Greskell Associated Types type GreskellReturn (Greskell a) Source # Methods toGreskell :: Greskell a -> Greskell (GreskellReturn (Greskell a)) Source # | |
| type GreskellReturn (Greskell a) Source # | |
Defined in Data.Greskell.Greskell | |
class ToGreskell a where Source #
Something that can convert to Greskell.
Methods
toGreskell :: a -> Greskell (GreskellReturn a) Source #
Instances
| ToGreskell (Greskell a) Source # | It's just |
Defined in Data.Greskell.Greskell Associated Types type GreskellReturn (Greskell a) Source # Methods toGreskell :: Greskell a -> Greskell (GreskellReturn (Greskell a)) Source # | |
Conversions
toGremlinLazy :: ToGreskell a => a -> Text Source #
Literals
Functions to create literals in Gremlin script. Use fromInteger,
valueInt or gvalueInt 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 Text)"[\"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"[:]"
Note that Number does not distinguish integers from
floating-point numbers, so value function may format an integer
as a floating-point number. To ensure formatting as integers, use
valueInt.
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)"
Arguments
| :: 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 Text) "length" []"(\"foobar\").length()"