Current section

86 Versions

Jump to

Compare versions

4 files changed
+15 additions
-8 deletions
  @@ -1,12 +1,12 @@
1 - # Floki
2 -
3 1 [![Build status](https://travis-ci.org/philss/floki.svg?branch=master)](https://travis-ci.org/philss/floki)
4 2 [![Floki version](https://img.shields.io/hexpm/v/floki.svg)](https://hex.pm/packages/floki)
5 3 [![Hex.pm](https://img.shields.io/hexpm/dt/floki.svg)](https://hex.pm/packages/floki)
6 4 [![Inline docs](https://inch-ci.org/github/philss/floki.svg?branch=master)](https://inch-ci.org/github/philss/floki)
7 5 [![Ebert](https://ebertapp.io/github/philss/floki.svg)](https://ebertapp.io/github/philss/floki)
8 6
9 - Floki is a simple HTML parser that enables search for nodes using CSS selectors.
7 + <img src="priv/images/floki-logo-with-type.svg" width="500" alt="Floki logo">
8 +
9 + **Floki is a simple HTML parser that enables search for nodes using CSS selectors**.
10 10
11 11 [Check the documentation](https://hexdocs.pm/floki).
12 12
  @@ -216,6 +216,10 @@ There are also some selectors based on non-standard specifications. They are:
216 216 |----------------------|-----------------------------------------------------|
217 217 | E:fl-contains('foo') | an E element that contains "foo" inside a text node |
218 218
219 + ## Special thanks
220 +
221 + * [@arasatasaygin](https://github.com/arasatasaygin) for Floki's logo from the [Open Logos project](http://openlogos.org/).
222 +
219 223 ## License
220 224
221 225 Floki is under MIT license. Check the `LICENSE` file for more details.
  @@ -23,7 +23,6 @@
23 23 <<"LICENSE">>,<<"CODE_OF_CONDUCT.md">>,<<"CONTRIBUTING.md">>]}.
24 24 {<<"licenses">>,[<<"MIT">>]}.
25 25 {<<"links">>,[{<<"GitHub">>,<<"https://github.com/philss/floki">>}]}.
26 - {<<"maintainers">>,[<<"Philip Sampaio Silva">>]}.
27 26 {<<"name">>,<<"floki">>}.
28 27 {<<"requirements">>,
29 28 [[{<<"app">>,<<"html_entities">>},
  @@ -36,4 +35,4 @@
36 35 {<<"optional">>,false},
37 36 {<<"repository">>,<<"hexpm">>},
38 37 {<<"requirement">>,<<"~> 2.15">>}]]}.
39 - {<<"version">>,<<"0.20.3">>}.
38 + {<<"version">>,<<"0.20.4">>}.
  @@ -83,7 +83,11 @@ defmodule Floki.RawHTML do
83 83 defp close_end_tag(type, []) when type in @self_closing_tags, do: ""
84 84 defp close_end_tag(type, _), do: "</#{type}>"
85 85
86 - defp build_attrs({attr, value}, attrs) do
86 + defp build_attrs({attr, iodata}, attrs) when is_list(iodata) do
87 + build_attrs({attr, IO.iodata_to_binary(iodata)}, attrs)
88 + end
89 +
90 + defp build_attrs({attr, <<value::binary>>}, attrs) do
87 91 if String.contains?(value, "\"") do
88 92 ~s(#{attrs} #{attr}='#{value}')
89 93 else
  @@ -91,7 +95,7 @@ defmodule Floki.RawHTML do
91 95 end
92 96 end
93 97
94 - defp build_attrs(attr, attrs), do: "#{attrs} #{attr}"
98 + defp build_attrs(<<attr::binary>>, attrs), do: "#{attrs} #{attr}"
95 99
96 100 defp tag_for(type, attrs, children, encoder) do
97 101 encoder =
  @@ -2,7 +2,7 @@ defmodule Floki.Mixfile do
2 2 use Mix.Project
3 3
4 4 @description "Floki is a simple HTML parser that enables search for nodes using CSS selectors."
5 - @version "0.20.3"
5 + @version "0.20.4"
6 6
7 7 def project do
8 8 [