Under development. Not yet published.
ModestEx
Elixir/Erlang bindings for lexborisovs Modest
Modest is a fast HTML renderer implemented as a pure C99 library with no outside dependencies.
- Modest
- HTML5 parsing library in pure C99
- fully conformant with the HTML5 spec
The binding is implemented as a C-Node following the excellent example in @Overbryd package nodex. If you want to learn how to set up bindings to C/C++, you should definitely check it out.
- nodex
- distributed Elixir
- save binding with C-Nodes
C-Nodes are external os-processes that communicate with the Erlang VM through erlang messaging. That way you can implement native code and call into it from Elixir in a safe predictable way. The Erlang VM stays unaffected by crashes of the external process.
Example
Please check this out this list of features.
iex> ModestEx.find("<p><a>Hello</a> World</p>", "p a")
{:ok, "<a>Hello</a>"}
iex> ModestEx.serialize("<div>Hello<span>World")
{:ok, "<html><head></head><body><div>Hello<span>World</span></div></body></html>"}Supported CSS Selectors
All common CSS Selectors are supported. For an extensive list please check out this table.
Installation
git clone git@github.com:f34nk/modest_ex.git
cd modest_exUpdate submodules
All binding targets are added as submodules in the target/ folder.
git submodule update --init --recursive --remoteTarget dependencies
cmake 3.x
erlang-dev
erlang-xmerl
erlang-parsetoolsCompile and test
mix deps.get
mix compile
mix test
mix test.targetCleanup
mix cleanBenchmark
mix benchRoadmap
See CHANGELOG.
-
Bindings
- Call as C-Node
- Call as dirty-nif
-
Tests
- Call as C-Node
- Call as dirty-nif
- Target tests
- Feature tests
- Package test
-
Features
- Find nodes using a CSS selector
- Serialize a HTML-document
- Remove a node from html
- Append node to another node
- Prepend node to another node
- Replace node with to another node
- Slice html to a subset of nodes
- List of supported CSS Selectors
- Documentation
- Publish as hex package
License
ModestEx is under LGPL license. Check the LICENSE file for more details.
Icon Credit
humble by Eliricon from the Noun Project