tidy_ex alternatives and similar packages
Based on the "HTML" category.
Alternatively, view tidy_ex alternatives based on common mentions on social networks and blogs.
-
floki
Floki is a simple HTML parser that enables search for nodes using CSS selectors. -
Meeseeks
An Elixir library for parsing and extracting data from HTML and XML with CSS or XPath selectors. -
modest_ex
Elixir library to do pipeable transformations on html strings (with CSS selectors) -
texas
Texas is a powerful abstraction over updating your clients using server-side rendering and server-side Virtual DOM diff/patching.
Collect and Analyze Billions of Data Points in Real Time
Do you think we are missing an alternative of tidy_ex or a related project?
Popular Comparisons
README
TidyEx
TidyEx corrects and cleans up HTML content by fixing markup errors.
Elixir/Erlang bindings for htacg's tidy-html5
The granddaddy of HTML tools, with support for modern standards http://www.html-tidy.org
The binding is implemented as a C-Node following the excellent example in Overbryd's 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
For more examples please checkout tests.
test "can parse broken html" do
result = TidyEx.parse("<div>Hello<span>World")
assert result == "<div>Hello<span>World</span></div>"
end
test "can clean and repair broken html" do
result = TidyEx.clean_and_repair("<div>Hello<span>World")
assert result == "<div>Hello<span>World</span></div>"
end
test "can run diagnostics on invalid html" do
result = TidyEx.run_diagnostics("<pp>Hello World</p>")
assert result == "line 1 column 1 - Error: <pp> is not recognized!\nThis document has errors that must be fixed before\nusing HTML Tidy to generate a tidied up version."
end
Installation
Available on hex.
def deps do
[
{:tidy_ex, "~> 0.1.0-dev"}
]
end
Target dependencies
cmake 3.x
erlang-dev
erlang-xmerl
erlang-parsetools
Compile and test
mix deps.get
mix compile
mix test
Cloning
git clone [email protected]:f34nk/tidy_ex.git
cd tidy_ex
All binding targets are added as submodules in the target/
folder.
git submodule update --init --recursive --remote
mix deps.get
mix compile
mix test
mix test.target
Cleanup
mix clean
Roadmap
See CHANGELOG.
- [ ] Bindings
- [x] Call as C-Node
- [ ] Call as dirty-nif
- [ ] Tests
- [ ] Call as C-Node
- [ ] Call as dirty-nif
- [x] Target tests
- [x] Feature tests
- [x] Package test
- [ ] Features
- [x] Set tidy-html5 options
- [x] Serialize any string with valid or broken html
- [x] Clean and repair
- [x] Run diagnostics
- [ ] Documentation
- [x] Publish as hex package
Icon Credit
Broom by faisalovers from the Noun Project