Unofficial collection of Lens for cmark.
This package is written in the style of writing lenses without lens making it a lightweight dependency.
import CMark
import CMark.Lens
import Control.Lens
foo :: CMark.Node -> ()
foo node =
let posInfo = node ^. _posInfo -- Lens' PosInfo
nodeType = node ^. _nodeType -- Lens' NodeType
text = nodeType ^. _TEXT -- Prism' NodeType Text
childNodes' = node ^.. _nodes -- Traversal' Node [Node]
childNodes = node ^. _nodesLens -- Lens' Node [Node]
-- Remove all the TEXTs at depth 2
node'' = set (_nodes . _nodes . _nodeType . _TEXT) empty node
in ()For more extensive examples, go to /test/Main.hs.
CI/CD is work in progress so currently the deployment is done manually
I use these versions because they seem to be the latest versions that works with Hackage/Haddock CI
- Cabal 3.8
- GHC 9.8
- GHC2021
Changing the toolchain versions affects
- cmark-lens.cabal
cabal-versiondefault-language
- nix/hix.nix
compiler-nix-name
- cabal.project
with-compiler
Update the version in cmark-lens.cabal.
Commit.
Update the tag of source-repository this in cmark-lens.cabal.
source-repository this
type: git
location: https://github.com/ingun37/cmark-lens.git
tag: f33793a7e46ac299796d82a16ccfafb9c18ab1c8
Commit again.
Run
cabal check # Just in case
cabal build # Just in case
cabal sdistUpload the produced tarball to Hackage.
For the lenses for cmark-gfm-lens go https://github.com/ingun37/cmark-gfm-lens