Skip to content

Commit ff3493e

Browse files
authored
Merge pull request #13 from mischov/elixir-1.6
Support Elixir 1.6
2 parents 8610f3c + 1fb430a commit ff3493e

File tree

5 files changed

+174
-117
lines changed

5 files changed

+174
-117
lines changed

.formatter.exs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[
2+
inputs: [
3+
"lib/**/*.{ex,exs}",
4+
"test/**/*.{ex,exs}",
5+
"mix.exs"
6+
]
7+
]

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ matrix:
55
- otp_release: 19.0
66
elixir: 1.3.0
77
- otp_release: 20.2
8-
elixir: 1.5.1
8+
elixir: 1.6.3
99

1010
sudo: false
1111

lib/meeseeks_html5ever.ex

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,31 @@ defmodule MeeseeksHtml5ever do
55
a `Meeseeks.Document`.
66
"""
77

8-
@doc"""
8+
@doc """
99
Parses an HTML string into a `Meseeks.Document`.
1010
"""
1111
def parse_html(html) do
1212
MeeseeksHtml5ever.Native.parse_html(html)
13+
1314
receive do
1415
{:html5ever_nif_result, :ok, result} ->
1516
{:ok, result}
17+
1618
{:html5ever_nif_result, :error, err} ->
1719
{:error, err}
1820
end
1921
end
2022

21-
@doc"""
23+
@doc """
2224
Parses an XML string into a `Meseeks.Document`.
2325
"""
2426
def parse_xml(xml) do
2527
MeeseeksHtml5ever.Native.parse_xml(xml)
28+
2629
receive do
2730
{:html5ever_nif_result, :ok, result} ->
2831
{:ok, result}
32+
2933
{:html5ever_nif_result, :error, err} ->
3034
{:error, err}
3135
end

mix.exs

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,31 @@ defmodule MeeseeksHtml5ever.Mixfile do
44
@version "0.8.1"
55

66
def project do
7-
[app: :meeseeks_html5ever,
8-
name: "MeeseeksHtml5ever",
9-
version: @version,
10-
description: description(),
11-
elixir: "~> 1.3",
12-
deps: deps(),
13-
package: package(),
14-
source_url: "https://github.com/mischov/meeseeks_html5ever",
15-
docs: [main: "MeeseeksHtml5ever"],
16-
build_embedded: Mix.env == :prod,
17-
start_permanent: Mix.env == :prod,
18-
compilers: [:rustler] ++ Mix.compilers(),
19-
rustler_crates: rustler_crates()]
7+
[
8+
app: :meeseeks_html5ever,
9+
name: "MeeseeksHtml5ever",
10+
version: @version,
11+
description: description(),
12+
elixir: "~> 1.3",
13+
deps: deps(),
14+
package: package(),
15+
source_url: "https://github.com/mischov/meeseeks_html5ever",
16+
docs: [main: "MeeseeksHtml5ever"],
17+
build_embedded: Mix.env() == :prod,
18+
start_permanent: Mix.env() == :prod,
19+
compilers: [:rustler] ++ Mix.compilers(),
20+
rustler_crates: rustler_crates()
21+
]
2022
end
2123

2224
def rustler_crates do
23-
[meeseeks_html5ever_nif: [
25+
[
26+
meeseeks_html5ever_nif: [
2427
path: "native/meeseeks_html5ever_nif",
2528
cargo: :system,
2629
default_features: false,
2730
features: [],
28-
mode: :release,
31+
mode: :release
2932
# mode: (if Mix.env == :prod, do: :release, else: :debug),
3033
]
3134
]
@@ -36,11 +39,13 @@ defmodule MeeseeksHtml5ever.Mixfile do
3639
end
3740

3841
defp deps do
39-
[{:rustler, "~> 0.16"},
42+
[
43+
{:rustler, "~> 0.16"},
4044

41-
# docs
42-
{:ex_doc, "~> 0.14", only: :docs},
43-
{:markdown, github: "devinus/markdown", only: :docs}]
45+
# docs
46+
{:ex_doc, "~> 0.14", only: :docs},
47+
{:markdown, github: "devinus/markdown", only: :docs}
48+
]
4449
end
4550

4651
defp description do
@@ -50,11 +55,14 @@ defmodule MeeseeksHtml5ever.Mixfile do
5055
end
5156

5257
defp package do
53-
[maintainers: ["Mischov"],
54-
licenses: ["MIT", "Apache-2.0"],
55-
files: ["lib", "native", "mix.exs", "README.md", "LICENSE-MIT", "LICENSE-APACHE"],
56-
links: %{"GitHub" => "https://github.com/mischov/meeseeks_html5ever",
57-
"Docs" => "https://hexdocs.pm/meeseeks_html5ever"}]
58+
[
59+
maintainers: ["Mischov"],
60+
licenses: ["MIT", "Apache-2.0"],
61+
files: ["lib", "native", "mix.exs", "README.md", "LICENSE-MIT", "LICENSE-APACHE"],
62+
links: %{
63+
"GitHub" => "https://github.com/mischov/meeseeks_html5ever",
64+
"Docs" => "https://hexdocs.pm/meeseeks_html5ever"
65+
}
66+
]
5867
end
59-
6068
end

test/meeseeks_html5ever_test.exs

Lines changed: 127 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -4,84 +4,117 @@ defmodule MeeseeksHtml5everTest do
44

55
test "parse div" do
66
html = "<special:div>Hello, World!</special:div>"
7-
ret = {:ok,
8-
%{__struct__: :"Elixir.Meeseeks.Document",
9-
id_counter: 5,
10-
nodes: %{
11-
1 => %{__struct__: :"Elixir.Meeseeks.Document.Element",
12-
attributes: [],
13-
children: [2, 3],
14-
id: 1,
15-
namespace: "",
16-
parent: nil,
17-
tag: "html"},
18-
2 => %{__struct__: :"Elixir.Meeseeks.Document.Element",
19-
attributes: [],
20-
children: [],
21-
id: 2,
22-
namespace: "",
23-
parent: 1,
24-
tag: "head"},
25-
3 => %{__struct__: :"Elixir.Meeseeks.Document.Element",
26-
attributes: [],
27-
children: [4],
28-
id: 3,
29-
namespace: "",
30-
parent: 1,
31-
tag: "body"},
32-
4 => %{__struct__: :"Elixir.Meeseeks.Document.Element",
33-
attributes: [],
34-
children: [5],
35-
id: 4,
36-
namespace: "special",
37-
parent: 3,
38-
tag: "div"},
39-
5 => %{__struct__: :"Elixir.Meeseeks.Document.Text",
40-
content: "Hello, World!",
41-
id: 5,
42-
parent: 4}},
43-
roots: [1]}}
7+
8+
ret =
9+
{:ok,
10+
%{
11+
__struct__: :"Elixir.Meeseeks.Document",
12+
id_counter: 5,
13+
nodes: %{
14+
1 => %{
15+
__struct__: :"Elixir.Meeseeks.Document.Element",
16+
attributes: [],
17+
children: [2, 3],
18+
id: 1,
19+
namespace: "",
20+
parent: nil,
21+
tag: "html"
22+
},
23+
2 => %{
24+
__struct__: :"Elixir.Meeseeks.Document.Element",
25+
attributes: [],
26+
children: [],
27+
id: 2,
28+
namespace: "",
29+
parent: 1,
30+
tag: "head"
31+
},
32+
3 => %{
33+
__struct__: :"Elixir.Meeseeks.Document.Element",
34+
attributes: [],
35+
children: [4],
36+
id: 3,
37+
namespace: "",
38+
parent: 1,
39+
tag: "body"
40+
},
41+
4 => %{
42+
__struct__: :"Elixir.Meeseeks.Document.Element",
43+
attributes: [],
44+
children: [5],
45+
id: 4,
46+
namespace: "special",
47+
parent: 3,
48+
tag: "div"
49+
},
50+
5 => %{
51+
__struct__: :"Elixir.Meeseeks.Document.Text",
52+
content: "Hello, World!",
53+
id: 5,
54+
parent: 4
55+
}
56+
},
57+
roots: [1]
58+
}}
59+
4460
assert MeeseeksHtml5ever.parse_html(html) == ret
4561
end
4662

4763
test "parse simple document" do
4864
html = "<html><head></head><body><div>Hello, World!</div></body></html>"
49-
ret = {:ok,
50-
%{__struct__: :"Elixir.Meeseeks.Document",
51-
id_counter: 5,
52-
nodes: %{
53-
1 => %{__struct__: :"Elixir.Meeseeks.Document.Element",
54-
attributes: [],
55-
children: [2, 3],
56-
id: 1,
57-
namespace: "",
58-
parent: nil,
59-
tag: "html"},
60-
2 => %{__struct__: :"Elixir.Meeseeks.Document.Element",
61-
attributes: [],
62-
children: [],
63-
id: 2,
64-
namespace: "",
65-
parent: 1,
66-
tag: "head"},
67-
3 => %{__struct__: :"Elixir.Meeseeks.Document.Element",
68-
attributes: [],
69-
children: [4],
70-
id: 3,
71-
namespace: "",
72-
parent: 1,
73-
tag: "body"},
74-
4 => %{__struct__: :"Elixir.Meeseeks.Document.Element",
75-
attributes: [],
76-
children: [5],
77-
id: 4,
78-
namespace: "",
79-
parent: 3,
80-
tag: "div"},
81-
5 => %{__struct__: :"Elixir.Meeseeks.Document.Text",
82-
content: "Hello, World!",
83-
id: 5, parent: 4}},
84-
roots: [1]}}
65+
66+
ret =
67+
{:ok,
68+
%{
69+
__struct__: :"Elixir.Meeseeks.Document",
70+
id_counter: 5,
71+
nodes: %{
72+
1 => %{
73+
__struct__: :"Elixir.Meeseeks.Document.Element",
74+
attributes: [],
75+
children: [2, 3],
76+
id: 1,
77+
namespace: "",
78+
parent: nil,
79+
tag: "html"
80+
},
81+
2 => %{
82+
__struct__: :"Elixir.Meeseeks.Document.Element",
83+
attributes: [],
84+
children: [],
85+
id: 2,
86+
namespace: "",
87+
parent: 1,
88+
tag: "head"
89+
},
90+
3 => %{
91+
__struct__: :"Elixir.Meeseeks.Document.Element",
92+
attributes: [],
93+
children: [4],
94+
id: 3,
95+
namespace: "",
96+
parent: 1,
97+
tag: "body"
98+
},
99+
4 => %{
100+
__struct__: :"Elixir.Meeseeks.Document.Element",
101+
attributes: [],
102+
children: [5],
103+
id: 4,
104+
namespace: "",
105+
parent: 3,
106+
tag: "div"
107+
},
108+
5 => %{
109+
__struct__: :"Elixir.Meeseeks.Document.Text",
110+
content: "Hello, World!",
111+
id: 5,
112+
parent: 4
113+
}
114+
},
115+
roots: [1]
116+
}}
117+
85118
assert MeeseeksHtml5ever.parse_html(html) == ret
86119
end
87120

@@ -107,22 +140,27 @@ defmodule MeeseeksHtml5everTest do
107140

108141
test "parse xml" do
109142
xml = "<special:greeting>Hello, World!</special:greeting>"
110-
ret = {:ok,
111-
%{__struct__: Meeseeks.Document,
112-
id_counter: 2,
113-
nodes: %{
114-
1 => %{__struct__: Meeseeks.Document.Element,
115-
attributes: [],
116-
children: [2],
117-
id: 1,
118-
namespace: "special",
119-
parent: nil,
120-
tag: "greeting"},
121-
2 => %{__struct__: Meeseeks.Document.Text,
122-
content: "Hello, World!",
123-
id: 2,
124-
parent: 1}},
125-
roots: [1]}}
143+
144+
ret =
145+
{:ok,
146+
%{
147+
__struct__: Meeseeks.Document,
148+
id_counter: 2,
149+
nodes: %{
150+
1 => %{
151+
__struct__: Meeseeks.Document.Element,
152+
attributes: [],
153+
children: [2],
154+
id: 1,
155+
namespace: "special",
156+
parent: nil,
157+
tag: "greeting"
158+
},
159+
2 => %{__struct__: Meeseeks.Document.Text, content: "Hello, World!", id: 2, parent: 1}
160+
},
161+
roots: [1]
162+
}}
163+
126164
assert MeeseeksHtml5ever.parse_xml(xml) == ret
127165
end
128166
end

0 commit comments

Comments
 (0)