Packages

Eml makes markup a first class citizen in Elixir. It provides a flexible and modular toolkit for generating, parsing and manipulating markup. It's main focus is html, but other markup languages could be implemented as well.

Current section

Files

Jump to
eml CHANGELOG.md
Raw

CHANGELOG.md

# Changelog
## v0.7.0
* Enhancements
* It's now easy to provide conversions for custom data types by using the new `Eml.Data` protocol
* Better separation of concerns by removing all data conversions from parsing
* Bug fixes
* Some type fixes in the Eml.Language behaviour
* Backwards incompatible changes
* Renamed `Eml.Language.Html` to `Eml.Language.HTML` in order to be compliant with Elixir's naming conventions
* The undocumented `Eml.parse/4` function is now replaced by `Eml.to_content/3`
* The `Eml.Parsable` protocol is replaced by `Eml.Data`, which is now strictly used for converting various
data types into valid Eml nodes.
* `Eml.parse/2` now always returns a list again, because the type
conversions are now done by `Eml.to_content/3` and consequently you can't force
`Eml.parse/2` to return a list anymore, which would make it dangerous to
use when parsing html partials where you don't know the nummer of nodes.
* `Eml.parse/2`, `Eml.render/3` and `Eml.compile/3` now always raise an exception on error.
Removed `Eml.parse!/2`, `Eml.render!/3` and `Eml.compile!/3`. Reason is that it was hard
to guarantee that those functions never raised an error and it simplifies Eml's API
* Removed `Eml.render_to_eex/3`, `Eml.render_to_eex!/3`, `Eml.compile_to_eex/3` and `Eml.compile_to_eex!/3`,
as they didn't provide much usefulness
## v0.6.0
* Enhancements
* Introduced `use Eml.Language.Html` as prefered way of defininf markup
* Restructured README.md and added new content about precompiling
* It's now possible to pass content as the first argument of an element macro, ie. `div "Hello world!"`
* Added `Eml.compile_to_eex/3` and `Eml.render_to_eex/3`
* Bug fixes
* Documentation corrections.
* Removed duplicate code in `Eml.defhtml/2`
* Type specification fixes
* `Eml.parse/2` in some cases returned weird results when the input is a list
* Template bindings were not correctly parsed
* Backwards incompatible changes
* Removed `Eml.eml/2` in favor of `use Eml.Language.Html`
* `Eml.parse/2` now returns results in the form of `{ :ok, res }`, in order to be consistent with render and compile functions
* Unless the input of `Eml.parse/2` is a list, if the result is a single element, `Eml.parse/2` now just returns the single element
instead of always wrapping the result in a list
## v0.5.0
* Enhancements
* Added documentation for all public modules
* Added some meta data to mix.exs for ex_doc
* Added `Eml.compile!/3`
* Bug fixes
* Lots of documentation corrections
* Some type fixes
* Backwards incompatible changes
* Renamed all read function to parse
* Renamed all write functions to render
* Removed `Eml.write_file` and `Eml.write_file!`
* Removed `Eml.read_file` and `Eml.read_file!`
* Parameters with the same name just reuse the same bounded value, instead of popping a list of bounded values
* Renamed the module `Eml.Markup` to `Eml.Element` and the module `Eml.Language.Html.Markup` to `Eml.Language.Html.Elements`
* `Eml.compile` now returns { :ok, template } on success instead of just the template in order to be consistent with Eml's
render and parse functions