Current section

86 Versions

Jump to

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]