Packages
floki
0.8.0
0.38.4
0.38.3
0.38.2
0.38.1
0.38.0
0.37.1
0.37.0
0.36.3
0.36.2
0.36.1
0.36.0
0.35.4
0.35.3
0.35.2
0.35.1
0.35.0
0.34.3
0.34.2
0.34.1
0.34.0
0.33.1
0.33.0
0.32.1
0.32.0
0.31.0
0.30.1
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.1
0.23.0
0.22.0
0.21.0
0.20.4
0.20.3
0.20.2
0.20.1
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.17.2
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.0
0.10.1
0.10.0
0.9.0
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.0
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.1
0.1.0
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
Floki is a simple HTML parser that enables search for nodes using CSS selectors.
Current section
86 Versions
Jump to
Current section
86 Versions
Compare versions
4
files changed
+22
additions
-10
deletions
| @@ -18,8 +18,8 @@ | |
| 18 18 | {<<"maintainers">>,[<<"Philip Sampaio Silva">>]}. |
| 19 19 | {<<"name">>,<<"floki">>}. |
| 20 20 | {<<"requirements">>, |
| 21 | - [{<<"mochiweb">>, |
| 22 | - [{<<"app">>,<<"mochiweb">>}, |
| 21 | + [{<<"mochiweb_html">>, |
| 22 | + [{<<"app">>,<<"mochiweb_html">>}, |
| 23 23 | {<<"optional">>,false}, |
| 24 | - {<<"requirement">>,<<"~> 2.12.2">>}]}]}. |
| 25 | - {<<"version">>,<<"0.7.2">>}. |
| 24 | + {<<"requirement">>,<<"~> 2.13">>}]}]}. |
| 25 | + {<<"version">>,<<"0.8.0">>}. |
| @@ -9,16 +9,28 @@ defmodule Floki.Finder do | |
| 9 9 | alias Floki.SelectorTokenizer |
| 10 10 | |
| 11 11 | @type html_tree :: tuple | list |
| 12 | + @type selector :: binary | %Selector{} | [%Selector{}] |
| 12 13 | |
| 13 14 | @doc """ |
| 14 15 | Find elements inside a HTML tree. |
| 16 | + |
| 17 | + Second argument can be either a selector string, a selector struct or an array of selector structs. |
| 15 18 | """ |
| 16 19 | |
| 17 | - @spec find(html_tree, binary) :: html_tree |
| 20 | + @spec find(html_tree, selector) :: html_tree |
| 18 21 | |
| 19 | - def find(html_tree, selector_as_string) do |
| 22 | + def find(html_tree, selector_as_string) when is_binary(selector_as_string) do |
| 20 23 | selectors = get_selectors(selector_as_string) |
| 24 | + find_selectors(html_tree, selectors) |
| 25 | + end |
| 26 | + def find(html_tree, selectors) when is_list(selectors) do |
| 27 | + find_selectors(html_tree, selectors) |
| 28 | + end |
| 29 | + def find(html_tree, %Selector{} = selector) do |
| 30 | + find_selectors(html_tree, [selector]) |
| 31 | + end |
| 21 32 | |
| 33 | + defp find_selectors(html_tree, selectors) do |
| 22 34 | html_tree |
| 23 35 | |> traverse([], selectors, []) |
| 24 36 | |> Enum.reverse |
| @@ -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.7.2" |
| 5 | + @version "0.8.0" |
| 6 6 | |
| 7 7 | def project do |
| 8 8 | [app: :floki, |
| @@ -17,12 +17,12 @@ defmodule Floki.Mixfile do | |
| 17 17 | end |
| 18 18 | |
| 19 19 | def application do |
| 20 | - [applications: [:mochiweb]] |
| 20 | + [applications: [:mochiweb_html]] |
| 21 21 | end |
| 22 22 | |
| 23 23 | defp deps do |
| 24 24 | [ |
| 25 | - {:mochiweb, "~> 2.12.2"}, |
| 25 | + {:mochiweb_html, "~> 2.13"}, |
| 26 26 | {:earmark, "~> 0.1", only: :dev}, |
| 27 27 | {:ex_doc, "~> 0.11", only: :dev}, |
| 28 28 | {:inch_ex,">= 0.0.0", only: :docs} |
| @@ -1,6 +1,6 @@ | |
| 1 1 | Definitions. |
| 2 2 | |
| 3 | - IDENTIFIER = [-A-Za-z0-9_]+ |
| 3 | + IDENTIFIER = [-A-Za-z0-9_:]+ |
| 4 4 | QUOTED = (\".*\"|\'.*\') |
| 5 5 | SYMBOL = [\[\]*] |
| 6 6 | W = [\s\t\r\n\f] |