Changelog
Unreleased
v0.17.0 (2023-03-27)
Compatibility
- No longer support Elixir versions under 1.12 or Erlang/OTP versions under 23.0
- Support Elixir 1.13 and 1.14 and Erlang/OTP 25.0
Enhancements
- Update to
meeseeks_html5ever v0.14.3
, which supports NIF precompilation
v0.16.1 (2021-10-20)
Compatibility
- Use
meeseeks_html5ever v0.13.1
, which supports compilation on Apple M1
v0.16.0 (2021-06-24)
Compatibility
- No longer support Elixir 1.6 or Erlang/OTP 20
- Support Elixir 1.12 and Erlang/OTP 24
- Use
meeseeks_html5ever v0.13.0
, which supports Erlang/OTP 24
v0.15.1 (2020-05-27)
Fixes
- [Select] Support unicode characters in XPath selectors
v0.15.0 (2020-02-16)
Compatibility
Enhancements
- [Parse] Prevent tuple tree parser from accepting invalid input
- [Select] Prohibit XPath attributes steps outside of predicates
v0.14.0 (2019-09-30)
Breaking
- [Extract] The private
Document.Node
behaviour was removed, so any direct use of its callbacks with nodes will be broken - [Extract] Comments no longer have spaces added around the content when encoding to HTML, so
html
output may be slightly different than before - [Extract] A space is now only added between nodes by text extractors if the previous sibling's text didn't end in whitespace, so
data
, own_text
, and text
output may be slightly different than before
Enhancements
- [Extract] Refactor extractors, removing the
Document.Node
behaviour and adding that functionality to modules under Meeseeks.Extractor
- [Extract] Use iodata in string building extractors instead of string concatenation
- [Extract] Optimize how whitespace is collapsed by text extractors
- [Extract] Document which extractors collapse whitespace and make it optional (on by default)
Fixes
- [Extract] Remove incorrectly added whitespace when encoding comments to HTML
- [Extract] No longer add space between nodes when extracting text if the previous sibling's text ended in whitespace
v0.13.1 (2019-09-09)
Enhancements
- [Parse] Update to
meeseeks_html5ever v0.12.1
, which uses a dirty scheduler for the NIF instead of working asynchronously
v0.13.0 (2019-09-08)
Compatibility
- No longer support Elixir 1.4, Elixir 1.5, or Erlang/OTP 19 (minimum tested compatibility is now Elixir 1.6 and Erlang/OTP 20)
- Support Elixir 1.9 and Erlang/OTP 22
Fixes
- [Parse] Update to
meeseeks_html5ever v0.12.0
, which supports Erlang/OTP 22
v0.12.0 (2019-07-25)
Breaking
- [Extract]
Meeseeks.html/1
now escapes problematic characters when encoding attribute values and text, so its output may be slightly different than before
Fixes
- [Extract] Always use double quotes and escape
&
and "
when encoding attribute values with Meeseeks.html/1
- [Extract] Escape
<
, >
, and &
when encoding text with Meeseeks.html/1
v0.11.2 (2019-07-21)
Fixes
- [Select] Support escaped characters in CSS selector names, idents, and strings
- [Select] Support Elixir-style unicode code points in CSS selector names, idents, and strings
- [Select] Add better errors when parsing CSS selectors
v0.11.1 (2019-06-28)
Deprecations
- [Parse] Deprecate parsing tuple trees with
parse/1
Enhancements
- [Parse] Add
:tuple_tree
type to parse/2
Fixes
- [Parse] Update to
meeseeks_html5ever v0.11.1
, which returns a better error when provided with non-UTF-8 input - [Parse] Return parser errors if parsing an invalid tuple tree
v0.11.0 (2019-02-28)
Compatibility
- No longer support Elixir 1.3 (minimum tested compatibility is now Elixir 1.4 and Erlang/OTP 19.3)
- Support Elixir 1.8
Enhancements
- [Parse] Update to
meeseeks_html5ever v0.11.0
, which is faster and more memory efficient on Erlang/OTP 21
v0.10.1 (2018-09-27)
- [Meta] Test more Elixir+OTP combinations with Travis CI
v0.10.0 (2018-07-06)
Fixes
- [Parse] Update to
meeseeks_html5ever v0.10.0
, which supports OTP 21
v0.9.5 (2018-06-23)
Fixes
- [Select] Remove optimization in
Select.handle_match
that could indirectly cause matches stored in the context for filtering to be prematurely cleared
v0.9.4 (2018-06-22)
Fixes
- [Select] Fix error in how context was updated in
Select.filter_nodes
- [Select] Fix error in how context was updated in
XPath.Expr.Step.eval
- [Select] Fix error in how nodes were filtered in
XPath.Expr.Step.eval
- [Select] Include filters when transpiling absolute XPaths to root selectors
v0.9.3 (2018-06-15)
Fixes
- [Parse] Update to
meeseeks_html5ever v0.9.0
, which resolves a Dialyzer error
v0.9.2 (2018-05-28)
Enhancements
- [Select] The
css
and xpath
macros now accept vars
v0.9.1 (2018-05-25)
Fixes
- [Select] Fix inconsistency in
Document.get_nodes/1
- [Select] Fix bug in
Document.get_nodes/2
, courtesy of @asonge - [Select] Fix various typespecs, courtesy of @asonge
v0.9.0 (2018-05-15)
Breaking
- [Errors] Returned and raised errors throughout the project have been updated to use
Meeseeks.Error
instead of whatever assorted formats they were using before
Enhancements
- [Errors] Add
Meeseeks.Error
, a generic error struct implementing Exception
- [Select] Add
Meeseeks.fetch_all
and Meeseeks.fetch_one
Fixes
- [Extract] Fix bug in
Meeseeks.html
when encoding element attribute values that contain double quotes
v0.8.0 (2018-04-14)
Enhancements
- [Select] Most
Document
functions now raise if an unknown node_id
is provided, when before they might have raised or might have handle the situation gracefully - [Select] Add
get_root_ids/1
, get_node_ids/1
, and fetch_node/2
to Document
- [Select] Add
Document.delete_note/2
, courtesy of @willbarrett - [Readability] Remove Credo
- [Readability] Add .formatters.exs and
mix format
project
Fixes
- [All] Fix various typespecs
v0.7.7 (2018-02-08)
Fixes
- [Parse] Update to
meeseeks_html5ever v0.8.1
, which supports OTP 20.2
v0.7.6 (2017-09-24)
Fixes
- [Parse] Update to
meeseeks_html5ever v0.8.0
, which removes panics related to calling mark_script_already_started
and get_template_contents
, and removes synchronous parsing, which did not correctly handle panics and broke the <1ms contract on first call - [Select] Update select functions to propagate parse errors
v0.7.5 (2017-09-23)
Fixes
- [Parse] Update to
meeseeks_html5ever v0.7.0
, which fixes an erroneous panic related to calling remove_from_parent
on a node with no parent
v0.7.4 (2017-09-18)
Enhancements
- [Extract] Update extractors to propagate nil input
Fixes
- [Select] Fix CSS tokenization bug related to ab formulas
v0.7.3 (2017-08-29)
Fixes
- [Select] Fix Elixir 1.5 related warnings
v0.7.2 (2017-07-13)
Enhancements
- [Extract] Add
Document.html/1
and Document.tree/1
extractors - [Extract] Update
Meeseeks.html/1
and Meeseeks.tree/1
to accept a Document
- [Extract] Update the extraction functions to return a better error when provided with invalid input
Fixes
- [Parse] Fix doctype parsing
v0.7.1 (2017-06-29)
Fixes
- [Parse] Update to
meeseeks_html5ever v0.6.1
, which supports OTP 20
v0.7.0 (2017-06-05)
Enhancements
- [Parse] Update to
meeseeks_html5ever v0.6.0
, which supports parsing XML - [Parse] Add
Meeseeks.parse/2
which takes either :html
or :xml
as the second argument to specify how the source gets parsed - [Extract] Update
Meeseeks.data/1
to handle CDATA when parsing HTML
v0.6.0 (2017-05-23)
Breaking
- [Select] Rename
Context.new/1
to Context.prepare_for_selection/1
- [Select] Rename
Context.with_accumulator/2
to Context.add_accumulator/2
Enhancements
- [Parse] Update to
meeseeks_html5ever v0.5.0
- [Parse] Parse
Document.ProcessingInstruction
nodes from tuple-trees - [Select] Support
processing-instruction
functionality in Meeseeks.XPath
(when possible) - [Select] Add a
Document.ProcessingInstruction
node type - [Select] Add
Select.select/3
and Meeseeks.select/3
- [Select] Add
Context.ensure_accumulator!/1
v0.5.0 (2017-05-12)
Breaking
- [Select] Change the
Selector.match?/3
callback to Selector.match/4
, which now takes a context and can return a {boolean, context}
tuple in addition to returning a boolean.
Enhancements
- [Select] Add XPath selector support (see
Meeseeks.XPath
) - [Select] Add
Selector.filters/1
callback to the Selector
behaviour and update selection to allow for filtering matches before proceeding - [Select] Add
Meeseeks.Context
to allow selectors and the selection process to store state - [Select] Add
Meeseeks.Accumulator
behaviour and update Accumulator.{All, One}
to use it - [Select] Add
Node
and Root
selectors - [Select] Add
Ancestors
, AncestorsOrSelf
, Children
, Descendants
, DescendantsOrSelf
, NextSiblings
, Parent
, PreviousSiblings
, and Self
selector combinators - [Select] Add
parent
, ancestors
, and previous_siblings
queries to Document
Fixes
- [Parse] Update to
meeseeks_html5ever v0.4.6
, which correctly parses namespaced elements and doesn't try to bring in html5ever 0.16.0
- [Extract] Fix
html
extractor to add namespaces to elements - [Usability] Improve
Document
and Result
opaque inspected values
v0.4.1 (2017-04-10)
Enhancements
- [Meta] Add CI via Travis CI
Fixes
- [Parse] Update to
meeseeks_html5ever v0.4.4
, which permits Elixir 1.3 - [Select] Fix CSS tokenization bug involving wildcard or pseudo-class descendants
v0.4.0 (2017-04-08)
Enhancements
- [Parse] Replace
html5ever_elixir
with meeseeks_html5ever
- [Select] Allow CSS selector
:not()
to accept multiple selectors
Fixes
- [Parse] Move
Document.new/1
to Parser.parse_tuple_tree/1
- [Select] Fix ordering in
Document.get_nodes/1
and Accumulator.return/1
(for Accumulator.All
)
v0.3.1 (2017-04-03)
Enhancements
- [Extract] Add new
dataset
extractor that mimics the HTMLElement.dataset API - [Usability] Raise a better error when trying to select with a string instead of selectors