Safe Haskell | None |
---|
If you are interested in the IHaskell library for the purpose of augmenting the IHaskell notebook or writing your own display mechanisms and widgets, this module contains all functions you need.
In order to create a display mechanism for a particular data type, write
a module named (for example) IHaskell.Display.YourThing
in a package named ihaskell-yourThing
.
(Note the capitalization - it's important!) Then, in that module, add an
instance of IHaskellDisplay
for your data type. Similarly, to create
a widget, add an instance of IHaskellWidget
.
An example of creating a display is provided in the demo notebook.
- class IHaskellDisplay a where
- data Display
- = Display [DisplayData]
- | ManyDisplay [Display]
- data DisplayData = DisplayData MimeType Text
- class IHaskellDisplay a => IHaskellWidget a where
- printDisplay :: IHaskellDisplay a => a -> IO ()
- plain :: String -> DisplayData
- html :: String -> DisplayData
- png :: Width -> Height -> Base64 -> DisplayData
- jpg :: Width -> Height -> Base64 -> DisplayData
- svg :: String -> DisplayData
- latex :: String -> DisplayData
- javascript :: String -> DisplayData
- many :: [Display] -> Display
- type Width = Int
- type Height = Int
- type Base64 = Text
- encode64 :: String -> Base64
- base64 :: ByteString -> Base64
- switchToTmpDir :: IO ()
- displayFromChan :: IO (Maybe Display)
- serializeDisplay :: Display -> ByteString
- data Widget = forall a . IHaskellWidget a => Widget a
Rich display and interactive display typeclasses and types
class IHaskellDisplay a whereSource
A class for displayable Haskell types.
IHaskell's displaying of results behaves as if these two overlapping/undecidable instances also existed:
instance (Show a) => IHaskellDisplay a instance Show a where shows _ = id
IHaskellDisplay DisplayData | |
IHaskellDisplay Display | |
IHaskellDisplay Widget | |
IHaskellDisplay a => IHaskellDisplay [a] | |
IHaskellDisplay a => IHaskellDisplay (IO a) | these instances cause the image, html etc. which look like: Display [Display] IO [Display] IO (IO Display) be run the IO and get rendered (if the frontend allows it) in the pretty form. |
Wrapper for ipython-kernel's DisplayData which allows sending multiple results from the same expression.
data DisplayData Source
Data for display: a string with associated MIME type.
class IHaskellDisplay a => IHaskellWidget a whereSource
Display as an interactive widget.
targetName :: a -> StringSource
Output target name for this widget. The actual input parameter should be ignored.
Called when the comm is opened. Allows additional messages to be sent after comm open.
:: a | Widget which is being communicated with. |
-> Value | Sent data. |
-> (Value -> IO ()) | Way to respond to the message. |
-> IO () |
Respond to a comm data message.
Close the comm, releasing any resources we might need to.
Interactive use functions
printDisplay :: IHaskellDisplay a => a -> IO ()Source
Write to the display channel. The contents will be displayed in the notebook once the current execution call ends.
Constructors for displays
plain :: String -> DisplayDataSource
Generate a plain text display.
html :: String -> DisplayDataSource
Generate an HTML display.
png :: Width -> Height -> Base64 -> DisplayDataSource
Generate a PNG display of the given width and height. Data must be
provided in a Base64 encoded manner, suitable for embedding into HTML.
The base64
function may be used to encode data into this format.
jpg :: Width -> Height -> Base64 -> DisplayDataSource
Generate a JPG display of the given width and height. Data must be
provided in a Base64 encoded manner, suitable for embedding into HTML.
The base64
function may be used to encode data into this format.
svg :: String -> DisplayDataSource
Generate an SVG display.
latex :: String -> DisplayDataSource
Generate a LaTeX display.
javascript :: String -> DisplayDataSource
Generate a Javascript display.
Image and data encoding functions
base64 :: ByteString -> Base64Source
Convert from a ByteString into base 64 encoded data.
Utilities
switchToTmpDir :: IO ()Source
Convenience function for client libraries. Switch to a temporary directory so that any files we create aren't visible. On Unix, this is usually /tmp.
Internal only use
displayFromChan :: IO (Maybe Display)Source
Take everything that was put into the displayChan
at that point
out, and make a Display
out of it.
serializeDisplay :: Display -> ByteStringSource
For internal use within IHaskell. Serialize displays to a ByteString.
forall a . IHaskellWidget a => Widget a |