philss/floki
Floki is a simple HTML parser that enables search for nodes using CSS selectors.
🐛 Fixed
- Fix a regression with `Floki.text/2` when a document contains a DOCTYPE tag.
- It did not appear for most of the users because the "mochiweb" parser (default)
- does not produce such tag.
- This is similar to the fix from `v0.38.3`.
- Thanks [@foxbenjaminfox](https://github.com/foxbenjaminfox).
📦 Pull requests
- Fix Floki.text/2 when document contains a doctype declaration by @foxbenjaminfox in https://github.com/philss/floki/pull/702
- Bump versions for Elixir and Ubuntu - CI workflow by @philss in https://github.com/philss/floki/pull/703
- Release v0.38.4 by @philss in https://github.com/philss/floki/pull/704
✨ New Contributors
- @foxbenjaminfox made their first contribution in https://github.com/philss/floki/pull/702
- Full Changelog: https://github.com/philss/floki/compare/v0.38.3...v0.38.4
🐛 Fixed
- Fix Floki.text/2 when document contains a "PI" tag by @philss in https://github.com/philss/floki/pull/696
- Full Changelog: https://github.com/philss/floki/compare/v0.38.2...v0.38.3
⚡ Performance
- This is another juicy patch version with performance improvements made by [@preciz](https://github.com/preciz).
- [Optimize multiple selectors deduping - #667](https://github.com/philss/floki/pull/667)
- [Optimize DeepText by using plain recursion - #668](https://github.com/philss/floki/pull/668)
- [Optimize get_descendant_ids by removing Enum.reverse calls - #669](https://github.com/philss/floki/pull/669)
- [Optimize HTMLTree.to_tuple_list/1 using tail recursion - #670](https://github.com/philss/floki/pull/670)
- [Optimize Floki.TextExtractor by removing Enum iterations - #675](https://github.com/philss/floki/pull/675)
- [Simplify class attribute matching - #677](https://github.com/philss/floki/pull/677)
- [Refactor attribute_values to use for comprehension with pattern matching - #679](https://github.com/philss/floki/pull/679)
- + 9 more
🐛 Fixed
- Fix compiler warnings for the upcoming Elixir v1.20.
- Fix typespecs of `Floki.attribute/3`.
- Fix documentation for some functions.
📦 All pull requests
- Require Elixir v1.16 by @philss in https://github.com/philss/floki/pull/666 (reverted for this release)
- Optimize multiple selectors deduping by @preciz in https://github.com/philss/floki/pull/667
- Optimize DeepText by using plain recursion by @preciz in https://github.com/philss/floki/pull/668
- Optimize get_descendant_ids by removing Enum.reverse calls by @preciz in https://github.com/philss/floki/pull/669
- Optimize HTMLTree.to_tuple_list/1 using tail recursion by @preciz in https://github.com/philss/floki/pull/670
- Fix docs inaccuracies by @preciz in https://github.com/philss/floki/pull/671
- docs: update Mix.Config to import Config in HTMLParser docs by @preciz in https://github.com/philss/floki/pull/673
- docs: remove :html_parser option from Floki.text/2 docs by @preciz in https://github.com/philss/floki/pull/674
- + 20 more
⚡ Performance
- This version contains major performance improvements in the following functions:
- `Floki.filter_out/2`.
- `Floki.find/2` - with some improvements to specific selectors, like classes
- and attribute selectors.
- `Floki.text/2`.
- Those functions are not only faster, but are now using less memory. Please check
- the PRs related to this release if you want to better understand the numbers.
- [Speed up `do_classes_matches?` - #649](https://github.com/philss/floki/pull/649)
- + 10 more
📦 Pull requests
- Fix build status badge by @sgerrand in https://github.com/philss/floki/pull/632
- Update v0.38.0 changelog item for breaking changes by @kianmeng in https://github.com/philss/floki/pull/634
- Bump earmark from 1.4.47 to 1.4.48 by @dependabot[bot] in https://github.com/philss/floki/pull/635
- Speed up do_classes_matches? by @preciz in https://github.com/philss/floki/pull/649
- Make filter_out faster by @preciz in https://github.com/philss/floki/pull/650
- Speed up attribute lookup by @preciz in https://github.com/philss/floki/pull/651
- Enable tuple traversal optimization for multiple selectors by @preciz in https://github.com/philss/floki/pull/652
- Optimize HTMLTree to_tuple conversion using Enum.reduce by @preciz in https://github.com/philss/floki/pull/657
- + 6 more
✨ New Contributors
- @sgerrand made their first contribution in https://github.com/philss/floki/pull/632
- @preciz made their first contribution in https://github.com/philss/floki/pull/649
- Full Changelog: https://github.com/philss/floki/compare/v0.38.0...v0.38.1
✨ Added
- This version adds initial support for the `:has` pseudo-selector.
- It is a great addition that enables finding elements containing
- matching children.
- Examples for selectors:
- `"div:has(h1)"`
- `"div:has(h1, p, span)"`
- `"div:has(p.foo)"`
- `"div:has(img[src='https://example.com'])"`
- + 3 more
🐛 Fixed
- Add `:style` option documentation to `Floki.text/2`.
- Thanks [@s3cur3](https://github.com/s3cur3) for the fix.
- Fix deprecation warnings for upcoming Elixir 1.19.
- Prevent from crashing when selector is an empty string.
🗑️ Removed
- Remove support for Elixir 1.14 and OTP 23.
- Remove deprecated functions and function clauses
- that were accepting strings (binaries).
- Affected functions:
- `parse/1` - removed function
- `map/2` - removed function
- `attr/4` - removed clause
- `find/2` - removed clause
- + 21 more
📦 Pull requests
- Implement parsing rules for the `:has` pseudo class selector by @philss in https://github.com/philss/floki/pull/623
- feat: implement :has pseudo-selector functionality by @bvobart in https://github.com/philss/floki/pull/624
- Bump ex_doc from 0.37.3 to 0.38.2 by @dependabot in https://github.com/philss/floki/pull/625
- Bump credo from 1.7.11 to 1.7.12 by @dependabot in https://github.com/philss/floki/pull/619
- Bump benchee from 1.3.1 to 1.4.0 by @dependabot in https://github.com/philss/floki/pull/618
- Add `:style` flag to text/2` docs by @s3cur3 in https://github.com/philss/floki/pull/627
- Remove support for Elixir 1.14 by @philss in https://github.com/philss/floki/pull/626
- Remove deprecations by @philss in https://github.com/philss/floki/pull/628
- + 3 more
✨ New Contributors
- @bvobart made their first contribution in https://github.com/philss/floki/pull/624
- @s3cur3 made their first contribution in https://github.com/philss/floki/pull/627
- Full Changelog: https://github.com/philss/floki/compare/v0.37.1...v0.38.0
🐛 Fixed
- Move regex declaration from module tag to inside function. This is a fix to be compatible with the upcoming OTP 28.
📦 Pull requests
- Add Elixir 1.18 to the CI workflow by @philss in https://github.com/philss/floki/pull/607
- Bump ex_doc from 0.35.1 to 0.36.1 by @dependabot in https://github.com/philss/floki/pull/606
- Bump ex_doc from 0.36.1 to 0.37.1 by @dependabot in https://github.com/philss/floki/pull/611
- Fix versions we describe in README.md by @philss in https://github.com/philss/floki/pull/616
- Bump credo from 1.7.10 to 1.7.11 by @dependabot in https://github.com/philss/floki/pull/608
- Bump ex_doc from 0.37.1 to 0.37.3 by @dependabot in https://github.com/philss/floki/pull/615
- Bump fast_html from 2.4.0 to 2.4.1 by @dependabot in https://github.com/philss/floki/pull/609
- Full Changelog: https://github.com/philss/floki/compare/v0.37.0...v0.37.1
✨ Added
- Add [`Floki.css_escape/1`](https://hexdocs.pm/floki/0.37.0/Floki.html#css_escape/1) - thanks [@SteffenDE](https://github.com/SteffenDE).
🐛 Fixed
- Fix bug propagating identity encoder in `raw_html/2` - thanks [@andyleclair](https://github.com/andyleclair).
🗑️ Removed
- Remove support for Elixir 1.13 and OTP 22.
📦 Pull requests
- Drop support for Elixir 1.13 by @philss in https://github.com/philss/floki/pull/595
- Bump credo from 1.7.8 to 1.7.9 by @dependabot in https://github.com/philss/floki/pull/596
- Bump credo from 1.7.9 to 1.7.10 by @dependabot in https://github.com/philss/floki/pull/597
- Bump fast_html from 2.3.0 to 2.4.0 by @dependabot in https://github.com/philss/floki/pull/599
- Bump dialyxir from 1.4.4 to 1.4.5 by @dependabot in https://github.com/philss/floki/pull/600
- Bump ex_doc from 0.34.2 to 0.35.1 by @dependabot in https://github.com/philss/floki/pull/602
- Fix bug propagating identity encoder in `raw_html/2` by @andyleclair in https://github.com/philss/floki/pull/603
✨ New Contributors
- @andyleclair made their first contribution in https://github.com/philss/floki/pull/603
- Full Changelog: https://github.com/philss/floki/compare/v0.36.3...v0.37.0
🐛 Fixed
- Stop `Floki.get_by_id/2` traversal on first match. Thanks [@ypconstante](https://github.com/ypconstante).
- Remove extra whitespaces from nodes without attributes on `Floki.raw_html/1`.
- Thank you [@ypconstante](https://github.com/ypconstante).
- Fix `Floki.raw_html/1` typespecs. Thanks [@davydog187](https://github.com/davydog187).
📦 Pull requests
- chore: fix some typos by @tianzedavid in https://github.com/philss/floki/pull/564
- Bump ex_doc from 0.32.1 to 0.32.2 by @dependabot in https://github.com/philss/floki/pull/566
- Bump credo from 1.7.5 to 1.7.6 by @dependabot in https://github.com/philss/floki/pull/565
- Bump html5ever from 0.15.0 to 0.16.1 by @dependabot in https://github.com/philss/floki/pull/567
- Find without html tree for some pseudo classes by @ypconstante in https://github.com/philss/floki/pull/568
- Remove stack usage on Finder by @ypconstante in https://github.com/philss/floki/pull/569
- Remove extra whitespace on node without attributes by @ypconstante in https://github.com/philss/floki/pull/571
- Stop get_by_id traversal on first match by @ypconstante in https://github.com/philss/floki/pull/572
- + 18 more
✨ New Contributors
- @tianzedavid made their first contribution in https://github.com/philss/floki/pull/564
- Full Changelog: https://github.com/philss/floki/compare/v0.36.2...v0.36.3
✨ Added
- Implement the `Inspect` protocol for the `Floki.HTMLTree` struct.
- This struct is currently private. Thank you [@vittoriabitton](https://github.com/vittoriabitton).
🐛 Fixed
- Fix regression to respect config option `:encode` in `Floki.raw_html/2`.
- Thanks [@Sgoettschkes](https://github.com/Sgoettschkes).
- Make the `Floki.raw_html/2` treat the contents of the `<title>` tag as plain text.
- The idea is to align with `parse_document/2`.
- Thank you [@aymanosman](https://github.com/aymanosman).
📦 Pull requests
- fix typespec of get_by_id/2 by @SteffenDE in https://github.com/philss/floki/pull/549
- Bump ex_doc from 0.31.1 to 0.31.2 by @dependabot in https://github.com/philss/floki/pull/553
- raw_html treats the content of title tags as plain text by @aymanosman in https://github.com/philss/floki/pull/555
- Implement Inspect protocol for HTMLTree by @vittoriabitton in https://github.com/philss/floki/pull/547
- Bump ex_doc from 0.31.2 to 0.32.0 by @dependabot in https://github.com/philss/floki/pull/559
- Bump ex_doc from 0.32.0 to 0.32.1 by @dependabot in https://github.com/philss/floki/pull/560
- fix: read encode_raw_html config as default for raw_html encode option by @Sgoettschkes in https://github.com/philss/floki/pull/561
- Release 0.36.2 by @JohnnyCurran in https://github.com/philss/floki/pull/563
✨ New Contributors
- @aymanosman made their first contribution in https://github.com/philss/floki/pull/555
- @Sgoettschkes made their first contribution in https://github.com/philss/floki/pull/561
- @JohnnyCurran made their first contribution in https://github.com/philss/floki/pull/563
- Full Changelog: https://github.com/philss/floki/compare/v0.36.0...v0.36.2
🐛 Fixed
- Fix typespec of `get_by_id/2`.
📦 Pull requests
- fix typespec of get_by_id/2 by @SteffenDE in https://github.com/philss/floki/pull/549
- Bump ex_doc from 0.31.1 to 0.31.2 by @dependabot in https://github.com/philss/floki/pull/553
- Full Changelog: https://github.com/philss/floki/compare/v0.36.0...v0.36.1
✨ Added
- Add `Floki.get_by_id/1` that returns one element by ID or `nil`.
- Thanks [@SteffenDE](https://github.com/SteffenDE).
📋 Changed
- Improve options validation with `Keyword.validate!/2`.
- This is not a change in APIs, but the error messages and opts validation should be standardized now.
- Thanks [@vittoriabitton](https://github.com/vittoriabitton).
🗑️ Removed
- Drop support for Elixir v1.12.
📦 Pull requests
- Use adjacent_sibling instead of sibling by @ypconstante in https://github.com/philss/floki/pull/544
- Update Elixir version requirement to 1.13 by @vittoriabitton in https://github.com/philss/floki/pull/541
- Improve opts validation with Keyword.validate!/2 by @vittoriabitton in https://github.com/philss/floki/pull/542
- Bump credo from 1.7.4 to 1.7.5 by @dependabot in https://github.com/philss/floki/pull/546
- add Floki.find_by_id/2 by @SteffenDE in https://github.com/philss/floki/pull/548
- Find without html tree for the remaining combinators by @ypconstante in https://github.com/philss/floki/pull/545
✨ New Contributors
- @vittoriabitton made their first contribution in https://github.com/philss/floki/pull/541
- @SteffenDE made their first contribution in https://github.com/philss/floki/pull/548
- Full Changelog: https://github.com/philss/floki/compare/v0.35.4...v0.36.0
🐛 Fixed
- Fix regression in the order of elements in `Floki.find/2`
📦 Pull requests
- Polymorphism on Finder.find by @ypconstante in https://github.com/philss/floki/pull/522
- Run all selector test with tuple list and html tree by @ypconstante in https://github.com/philss/floki/pull/523
- Bump fast_html from 2.2.0 to 2.3.0 by @dependabot in https://github.com/philss/floki/pull/530
- Reduce number of function call on traverse by @ypconstante in https://github.com/philss/floki/pull/531
- Optimize Floki.children by @ypconstante in https://github.com/philss/floki/pull/533
- Find without build html tree by @ypconstante in https://github.com/philss/floki/pull/534
- Bump credo from 1.7.3 to 1.7.4 by @dependabot in https://github.com/philss/floki/pull/535
- Optimize type selector by using pattern match by @ypconstante in https://github.com/philss/floki/pull/536
- + 5 more
🐛 Fixed
- Add `:leex` to Mix compilers. Fixes the build when running with dev version of Elixir.
- Thanks [@wojtekmach](https://github.com/wojtekmach).
- Fix `Floki.raw_html/2` when a tree using attributes as maps is given.
- Thanks [@SupaMic](https://github.com/SupaMic).
- Add a guard to `Floki.find/2` so people can have a better error message when an
- invalid input is given. Thanks [@Hajto](https://github.com/Hajto).
- Fix parsers to consider IO data as inputs. This may change in the next version
- of Floki, as I plan to drop support for IO data.
- + 1 more
🗑️ Removed
- Remove outdated Gleam wrapper code. The external functions syntax in Gleam
- has [changed](https://gleam.run/book/tour/external-functions.html). So now
- the wrapper is not needed anymore.
- Thanks [@michallepicki](https://github.com/michallepicki).
📦 Pull requests
- Add :leex to Mix compilers by @wojtekmach in https://github.com/philss/floki/pull/502
- Update raw_html.ex to handle :attributes_as_maps option by @SupaMic in https://github.com/philss/floki/pull/498
- Bump benchee from 1.1.0 to 1.2.0 by @dependabot in https://github.com/philss/floki/pull/499
- Remove outdated gleam wrapper code by @michallepicki in https://github.com/philss/floki/pull/500
- `find/2` input protection proposal. by @Hajto in https://github.com/philss/floki/pull/497
- Bump ex_doc from 0.30.9 to 0.31.0 by @dependabot in https://github.com/philss/floki/pull/503
- Enable parse of IO data html by @ypconstante in https://github.com/philss/floki/pull/504
- Optimize RawHTML.build_attrs/2 by @ypconstante in https://github.com/philss/floki/pull/505
- + 19 more
✨ New Contributors
- @SupaMic made their first contribution in https://github.com/philss/floki/pull/498
- @michallepicki made their first contribution in https://github.com/philss/floki/pull/500
- @Hajto made their first contribution in https://github.com/philss/floki/pull/497
- @ypconstante made their first contribution in https://github.com/philss/floki/pull/504
- Full Changelog: https://github.com/philss/floki/compare/v0.35.2...v0.35.3
✨ Added
- Add support for parsing attributes as maps.
- This makes `parse_document/2` and `parse_fragment/2` accept the option
- `:attributes_as_maps` to change the behaviour and return attributes as
- maps instead of lists of tuples.
- The only parser that does not support it yet is the `fast_html`.
📋 Changed
- Drop support for Elixir v1.11.
- Change the log level of parsing logger calls from "info" to "debug".
- This will help to reduce the amount of noise in production apps.
📦 Pull requests
- Remove override of `mix test` task by @philss in https://github.com/philss/floki/pull/465
- Remove unused functions from `floki_mochi_html` by @philss in https://github.com/philss/floki/pull/466
- Add support for parsing attributes as maps by @philss in https://github.com/philss/floki/pull/467
- Bump html5ever from 0.14.3 to 0.15.0 by @dependabot in https://github.com/philss/floki/pull/468
- Update CI GH Actions by @philss in https://github.com/philss/floki/pull/471
- Bump jason from 1.4.0 to 1.4.1 by @dependabot in https://github.com/philss/floki/pull/470
- Bump ex_doc from 0.29.4 to 0.30.1 by @dependabot in https://github.com/philss/floki/pull/469
- Bump ex_doc from 0.30.1 to 0.30.2 by @dependabot in https://github.com/philss/floki/pull/472
- + 12 more
📋 What's Changed
- Bump ex_doc from 0.29.1 to 0.29.2 by @dependabot in https://github.com/philss/floki/pull/449
- Bump ex_doc from 0.29.2 to 0.29.3 by @dependabot in https://github.com/philss/floki/pull/451
- Bump earmark from 1.4.36 to 1.4.37 by @dependabot in https://github.com/philss/floki/pull/450
- Bump ex_doc from 0.29.3 to 0.29.4 by @dependabot in https://github.com/philss/floki/pull/454
- Bump earmark from 1.4.37 to 1.4.38 by @dependabot in https://github.com/philss/floki/pull/456
- Bump dialyxir from 1.2.0 to 1.3.0 by @dependabot in https://github.com/philss/floki/pull/455
- Bump credo from 1.6.7 to 1.7.0 by @dependabot in https://github.com/philss/floki/pull/453
- Parse escaped colons in class names correctly by @viniciusmuller in https://github.com/philss/floki/pull/458
- + 4 more
✨ New Contributors
- @viniciusmuller made their first contribution in https://github.com/philss/floki/pull/458
- Full Changelog: https://github.com/philss/floki/compare/v0.34.2...v0.34.3
- Official Changelog: https://github.com/philss/floki/blob/main/CHANGELOG.md
📋 What's Changed
- Bump earmark from 1.4.35 to 1.4.36 by @dependabot in https://github.com/philss/floki/pull/445
- Pass arguments to parser modules by @Kuret in https://github.com/philss/floki/pull/446
- Support splitting nodes while traversin by @martosaur in https://github.com/philss/floki/pull/447
✨ New Contributors
- @Kuret made their first contribution in https://github.com/philss/floki/pull/446
- @martosaur made their first contribution in https://github.com/philss/floki/pull/447
- Full Changelog: https://github.com/philss/floki/compare/v0.34.1...v0.34.2
📋 What's Changed
- Add unused dependencies check step to CI by @antedeguemon in https://github.com/philss/floki/pull/435
- Remove Rust toolchain from CI by @philss in https://github.com/philss/floki/pull/436
- Fix dialyzer issues with Floki.text/1 by @davydog187 in https://github.com/philss/floki/pull/437
- Simplify versions - CI workflow by @philss in https://github.com/philss/floki/pull/439
- Bump ex_doc from 0.29.0 to 0.29.1 by @dependabot in https://github.com/philss/floki/pull/438
- Bump earmark from 1.4.33 to 1.4.34 by @dependabot in https://github.com/philss/floki/pull/440
- Fix pseudo-class ":not" selector parsing halting point by @philss in https://github.com/philss/floki/pull/442
- Bump earmark from 1.4.34 to 1.4.35 by @dependabot in https://github.com/philss/floki/pull/443
✨ New Contributors
- @antedeguemon made their first contribution in https://github.com/philss/floki/pull/435
- Full Changelog: https://github.com/philss/floki/compare/v0.34.0...v0.34.1
📋 What's Changed
- Show retrieval of data attributes by @nathanl in https://github.com/philss/floki/pull/410
- Bump credo from 1.6.4 to 1.6.5 by @dependabot in https://github.com/philss/floki/pull/412
- Bump dialyxir from 1.1.0 to 1.2.0 by @dependabot in https://github.com/philss/floki/pull/413
- Bump credo from 1.6.5 to 1.6.6 by @dependabot in https://github.com/philss/floki/pull/414
- Bump earmark from 1.4.26 to 1.4.27 by @dependabot in https://github.com/philss/floki/pull/415
- Bump ex_doc from 0.28.4 to 0.28.5 by @dependabot in https://github.com/philss/floki/pull/416
- user configurable self closing tags by @inoas in https://github.com/philss/floki/pull/417
- Require Elixir ~> 1.11 and update CI config by @philss in https://github.com/philss/floki/pull/419
- + 14 more
✨ New Contributors
- @inoas made their first contribution in https://github.com/philss/floki/pull/417
- @juanazam made their first contribution in https://github.com/philss/floki/pull/422
- @Benjamin-Philip made their first contribution in https://github.com/philss/floki/pull/425
- Full Changelog: https://github.com/philss/floki/compare/v0.33.1...v0.34.0
- Official Changelog*: https://hexdocs.pm/floki/changelog.html
📋 What's Changed
- Require Elixir ~> 1.10 by @philss in https://github.com/philss/floki/pull/397
- Bump html5ever from 0.11.0 to 0.12.0 by @dependabot in https://github.com/philss/floki/pull/389
- Bump earmark from 1.4.23 to 1.4.24 by @dependabot in https://github.com/philss/floki/pull/398
- remove case of 2 tuple of :pi by @derek-zhou in https://github.com/philss/floki/pull/400
- Bump ex_doc from 0.28.3 to 0.28.4 by @dependabot in https://github.com/philss/floki/pull/402
- Bump html5ever from 0.12.0 to 0.13.0 by @dependabot in https://github.com/philss/floki/pull/401
- Bump earmark from 1.4.24 to 1.4.25 by @dependabot in https://github.com/philss/floki/pull/403
- Minor stuff I changed while reading by @hissssst in https://github.com/philss/floki/pull/404
- + 3 more
✨ New Contributors
- @derek-zhou made their first contribution in https://github.com/philss/floki/pull/400
- @hissssst made their first contribution in https://github.com/philss/floki/pull/404
- @nuno84 made their first contribution in https://github.com/philss/floki/pull/409
- Full Changelog: https://hexdocs.pm/floki/changelog.html
- Full Diff: https://github.com/philss/floki/compare/v0.32.1...v0.33.0
📋 What's Changed
- Bump ex_doc from 0.25.3 to 0.25.5 by @dependabot in https://github.com/philss/floki/pull/365
- Update CI actions to run without docker by @WLSF in https://github.com/philss/floki/pull/366
- Bump earmark from 1.4.16 to 1.4.17 by @dependabot in https://github.com/philss/floki/pull/367
- Bump earmark from 1.4.17 to 1.4.18 by @dependabot in https://github.com/philss/floki/pull/368
- Bump credo from 1.5.6 to 1.6.1 by @dependabot in https://github.com/philss/floki/pull/372
- Bump ex_doc from 0.25.5 to 0.26.0 by @dependabot in https://github.com/philss/floki/pull/373
- Bump html5ever from 0.10.0 to 0.10.1 by @dependabot in https://github.com/philss/floki/pull/374
- Bump earmark from 1.4.18 to 1.4.19 by @dependabot in https://github.com/philss/floki/pull/375
- + 13 more
✨ New Contributors
- @WLSF made their first contribution in https://github.com/philss/floki/pull/366
- @rzane made their first contribution in https://github.com/philss/floki/pull/386
- Full Changelog: https://hexdocs.pm/floki/changelog.html
- Diff: https://github.com/philss/floki/compare/v0.32.0...v0.32.1
- PS: this was published on 2022-03-24. I forgot to release here on GitHub.
✨ Added
- Add an HTML tokenizer written in Elixir - this still experimental and it's not stable API yet.
- Add support for HTML IDs containing periods in the selectors - thanks [@Hugo-Hache](https://github.com/Hugo-Hache)
- Add support for case-insensitive CSS attribute selectors - thanks [@fcapovilla](https://github.com/fcapovilla)
- Add the `:root` pseudo-class selector - thanks [@fcapovilla](https://github.com/fcapovilla)
- Full Changelog: https://github.com/philss/floki/compare/v0.31.0...v0.32.0
- Happy hacking! :)
