- 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
- Update to
meeseeks_html5ever v0.14.3
, which supports NIF precompilation
- Use
meeseeks_html5ever v0.13.1
, which supports compilation on Apple M1
- 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
- [Select] Support unicode characters in XPath selectors
- Support Elixir 1.10
- [Parse] Prevent tuple tree parser from accepting invalid input
- [Select] Prohibit XPath attributes steps outside of predicates
- [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
, andtext
output may be slightly different than before
- [Extract] Refactor extractors, removing the
Document.Node
behaviour and adding that functionality to modules underMeeseeks.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)
- [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
- [Parse] Update to
meeseeks_html5ever v0.12.1
, which uses a dirty scheduler for the NIF instead of working asynchronously
- 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
- [Parse] Update to
meeseeks_html5ever v0.12.0
, which supports Erlang/OTP 22
- [Extract]
Meeseeks.html/1
now escapes problematic characters when encoding attribute values and text, so its output may be slightly different than before
- [Extract] Always use double quotes and escape
&
and"
when encoding attribute values withMeeseeks.html/1
- [Extract] Escape
<
,>
, and&
when encoding text withMeeseeks.html/1
- [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
- [Parse] Deprecate parsing tuple trees with
parse/1
- [Parse] Add
:tuple_tree
type toparse/2
- [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
- No longer support Elixir 1.3 (minimum tested compatibility is now Elixir 1.4 and Erlang/OTP 19.3)
- Support Elixir 1.8
- [Parse] Update to
meeseeks_html5ever v0.11.0
, which is faster and more memory efficient on Erlang/OTP 21
- [Meta] Test more Elixir+OTP combinations with Travis CI
- [Parse] Update to
meeseeks_html5ever v0.10.0
, which supports OTP 21
- [Select] Remove optimization in
Select.handle_match
that could indirectly cause matches stored in the context for filtering to be prematurely cleared
- [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
- [Parse] Update to
meeseeks_html5ever v0.9.0
, which resolves a Dialyzer error
- [Select] The
css
andxpath
macros now accept vars
- [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
- [Errors] Returned and raised errors throughout the project have been updated to use
Meeseeks.Error
instead of whatever assorted formats they were using before
- [Errors] Add
Meeseeks.Error
, a generic error struct implementingException
- [Select] Add
Meeseeks.fetch_all
andMeeseeks.fetch_one
- [Extract] Fix bug in
Meeseeks.html
when encoding element attribute values that contain double quotes
- [Select] Most
Document
functions now raise if an unknownnode_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
, andfetch_node/2
toDocument
- [Select] Add
Document.delete_note/2
, courtesy of @willbarrett - [Readability] Remove Credo
- [Readability] Add .formatters.exs and
mix format
project
- [All] Fix various typespecs
- [Parse] Update to
meeseeks_html5ever v0.8.1
, which supports OTP 20.2
- [Parse] Update to
meeseeks_html5ever v0.8.0
, which removes panics related to callingmark_script_already_started
andget_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
- [Parse] Update to
meeseeks_html5ever v0.7.0
, which fixes an erroneous panic related to callingremove_from_parent
on a node with no parent
- [Extract] Update extractors to propagate nil input
- [Select] Fix CSS tokenization bug related to ab formulas
- [Select] Fix Elixir 1.5 related warnings
- [Extract] Add
Document.html/1
andDocument.tree/1
extractors - [Extract] Update
Meeseeks.html/1
andMeeseeks.tree/1
to accept aDocument
- [Extract] Update the extraction functions to return a better error when provided with invalid input
- [Parse] Fix doctype parsing
- [Parse] Update to
meeseeks_html5ever v0.6.1
, which supports OTP 20
- [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
- [Select] Rename
Context.new/1
toContext.prepare_for_selection/1
- [Select] Rename
Context.with_accumulator/2
toContext.add_accumulator/2
- [Parse] Update to
meeseeks_html5ever v0.5.0
- [Parse] Parse
Document.ProcessingInstruction
nodes from tuple-trees - [Select] Support
processing-instruction
functionality inMeeseeks.XPath
(when possible) - [Select] Add a
Document.ProcessingInstruction
node type - [Select] Add
Select.select/3
andMeeseeks.select/3
- [Select] Add
Context.ensure_accumulator!/1
- [Select] Change the
Selector.match?/3
callback toSelector.match/4
, which now takes a context and can return a{boolean, context}
tuple in addition to returning a boolean.
- [Select] Add XPath selector support (see
Meeseeks.XPath
) - [Select] Add
Selector.filters/1
callback to theSelector
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 updateAccumulator.{All, One}
to use it - [Select] Add
Node
andRoot
selectors - [Select] Add
Ancestors
,AncestorsOrSelf
,Children
,Descendants
,DescendantsOrSelf
,NextSiblings
,Parent
,PreviousSiblings
, andSelf
selector combinators - [Select] Add
parent
,ancestors
, andprevious_siblings
queries toDocument
- [Parse] Update to
meeseeks_html5ever v0.4.6
, which correctly parses namespaced elements and doesn't try to bring inhtml5ever 0.16.0
- [Extract] Fix
html
extractor to add namespaces to elements - [Usability] Improve
Document
andResult
opaque inspected values
- [Meta] Add CI via Travis CI
- [Parse] Update to
meeseeks_html5ever v0.4.4
, which permits Elixir 1.3 - [Select] Fix CSS tokenization bug involving wildcard or pseudo-class descendants
- [Parse] Replace
html5ever_elixir
withmeeseeks_html5ever
- [Select] Allow CSS selector
:not()
to accept multiple selectors
- [Parse] Move
Document.new/1
toParser.parse_tuple_tree/1
- [Select] Fix ordering in
Document.get_nodes/1
andAccumulator.return/1
(forAccumulator.All
)
- [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