packages feed

reflex-libtelnet-0.2.0.0: README.md

# Reflex Bindings to libtelnet

This is a [reflex](https://reflex-frp.org/) wrapper around
[libtelnet](https://git.sr.ht/~jack/libtelnet-haskell), which lets you
describe data flows through the telnet state tracker using reflex
`Event`s.

This library thinly wraps the libtelnet functions, so you should read
[the libtelnet
documentation](http://hackage.haskell.org/package/libtelnet) alongside
the haddocks for this package.

## Quick Start

1. Assemble a `config :: TelnetConfig t`, which holds the event
   streams that feed into a telnet state tracker. The easiest way to
   do this is to call `newTelnetConfig` and overwrite the fields you
   care about using record updates or lenses. You will almost
   certainly want to overwrite `recv` to be the stream of incoming
   data from a socket, and `send` to be the stream of outgoing data
   from your application.

   * If you want to use lenses, use the
     [`generic-lens`](https://hackage.haskell.org/package/generic-lens)
     or
     [`generic-optics`](https://hackage.haskell.org/package/generic-optics)
     to get your preferred flavour of optic. Make sure to use the
     `field' @"fieldName"` version (i.e. not `#fieldName` or un-primed
     `field`), otherwise GHC will struggle to infer the type of `t`
     when setting fields in `ReflexConfig t`.

2. Call `telnet config`, and save the resulting `TelnetEvents t`. This
   structure holds the output event streams from a single telnet state
   tracker.

3. Wire the output events into your application.

## Other Resources

* A [telnet echo
  server](https://git.sr.ht/~jack/reflex-libtelnet/tree/master/reflex-libtelnet-example/src/Main.hs)
  exists in the [`reflex-libtelnet`
  repo](https://git.sr.ht/~jack/reflex-libtelnet), outside this
  package. It is packaged separately so that it can be licensed more
  permissively, and to minimise `reflex-libtelnet`'s dependency
  footprint.

* Questions should go to the
  [reflex-libtelnet-discuss](https://lists.sr.ht/~jack/reflex-libtelnet-discuss)
  mailing list.

* Bug reports should go to the
  [bug tracker](https://todo.sr.ht/~jack/reflex-libtelnet).