Skip to content
This repository was archived by the owner on Apr 27, 2022. It is now read-only.

Commit e46932f

Browse files
committed
rename library, add package metadata
1 parent e6866a5 commit e46932f

File tree

9 files changed

+69
-58
lines changed

9 files changed

+69
-58
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,5 @@ erl_crash.dump
2020
*.ez
2121

2222
/priv/native
23+
24+
/native/*/target

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Html5everErlang
1+
# Html5ever binding for Elixir
22

3-
NIF wrapper of html5ever using Rustler.
3+
NIF binding of html5ever using Rustler.
44

55
It is currently functional, but missing some features and optimization.
66

lib/ex_html5ever.ex renamed to lib/html5ever.ex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
defmodule ExHtml5ever do
1+
defmodule Html5ever do
22
@moduledoc """
33
Documentation for ExHtml5ever.
44
"""
@@ -11,7 +11,7 @@ defmodule ExHtml5ever do
1111
end
1212

1313
defp parse_async(html) do
14-
ExHtml5ever.Native.parse_async(html)
14+
Html5ever.Native.parse_async(html)
1515
receive do
1616
{:html5ever_nif_result, :ok, result} ->
1717
{:ok, result}
@@ -21,7 +21,7 @@ defmodule ExHtml5ever do
2121
end
2222

2323
defp parse_sync(html) do
24-
case ExHtml5ever.Native.parse_sync(html) do
24+
case Html5ever.Native.parse_sync(html) do
2525
{:html5ever_nif_result, :ok, result} ->
2626
{:ok, result}
2727
{:html5ever_nif_result, :error, err} ->

lib/ex_html5ever/native.ex renamed to lib/html5ever/native.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ defmodule NifNotLoadedError do
22
defexception message: "nif not loaded"
33
end
44

5-
defmodule ExHtml5ever.Native do
6-
use Rustler, otp_app: :ex_html5ever, crate: "html5ever_nif"
5+
defmodule Html5ever.Native do
6+
use Rustler, otp_app: :html5ever, crate: "html5ever_nif"
77

88
def parse_async(binary), do: err()
99
def parse_sync(binary), do: err()

mix.exs

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
1-
defmodule ExHtml5ever.Mixfile do
1+
defmodule Html5ever.Mixfile do
22
use Mix.Project
33

44
def project do
5-
[app: :ex_html5ever,
5+
[app: :html5ever,
66
version: "0.1.0",
77
elixir: "~> 1.4",
88
build_embedded: Mix.env == :prod,
99
start_permanent: Mix.env == :prod,
1010
compilers: [:rustler] ++ Mix.compilers(),
1111
rustler_crates: rustler_crates(),
12-
deps: deps()]
12+
deps: deps(),
13+
description: description(),
14+
package: package()]
1315
end
1416

1517
def rustler_crates do
@@ -19,7 +21,8 @@ defmodule ExHtml5ever.Mixfile do
1921
cargo: :system,
2022
default_features: false,
2123
features: [],
22-
mode: :release,#(if Mix.env == :prod, do: :release, else: :debug),
24+
mode: :release,
25+
# mode: (if Mix.env == :prod, do: :release, else: :debug),
2326
]
2427
]
2528
end
@@ -42,6 +45,23 @@ defmodule ExHtml5ever.Mixfile do
4245
#
4346
# Type "mix help deps" for more examples and options
4447
defp deps do
45-
[{:rustler, "~> 0.6"}]
48+
[{:rustler, "~> 0.6"},
49+
{:ex_doc, ">= 0.0.0", only: :dev}]
4650
end
51+
52+
defp description do
53+
"""
54+
NIF binding of html5ever using rustler.
55+
"""
56+
end
57+
58+
defp package do
59+
[
60+
files: ["lib", "native", "mix.exs", "README.md"],
61+
maintainers: ["hansihe"],
62+
licenses: ["MIT", "Apache-2.0"],
63+
links: %{"GitHub" => "https://github.com/hansihe/html5ever_elixir"},
64+
]
65+
end
66+
4767
end

mix.lock

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
%{"rustler": {:hex, :rustler, "0.6.0", "ba67a5e3d662876f2bf7ef5478bb3be03a7baa40e96950456526fdee29673530", [:mix], []}}
1+
%{"earmark": {:hex, :earmark, "1.1.0", "8c2bf85d725050a92042bc1edf362621004d43ca6241c756f39612084e95487f", [:mix], []},
2+
"ex_doc": {:hex, :ex_doc, "0.14.5", "c0433c8117e948404d93ca69411dd575ec6be39b47802e81ca8d91017a0cf83c", [:mix], [{:earmark, "~> 1.0", [hex: :earmark, optional: false]}]},
3+
"rustler": {:hex, :rustler, "0.6.0", "ba67a5e3d662876f2bf7ef5478bb3be03a7baa40e96950456526fdee29673530", [:mix], []}}

native/html5ever_nif/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ fn parse_sync<'a>(env: NifEnv<'a>, args: &Vec<NifTerm<'a>>) -> NifResult<NifTerm
247247
}
248248

249249
rustler_export_nifs!(
250-
"Elixir.ExHtml5ever.Native",
250+
"Elixir.Html5ever.Native",
251251
[("parse_async", 1, parse_async),
252252
("parse_sync", 1, parse_sync)],
253253
Some(on_load)

test/ex_html5ever_test.exs

Lines changed: 0 additions & 44 deletions
This file was deleted.

test/html5ever_test.exs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
defmodule Html5everTest do
2+
use ExUnit.Case
3+
doctest Html5ever
4+
5+
def read_html(name) do
6+
dir = to_string(:code.priv_dir(:html5ever)) <> "/test_data/"
7+
File.read!(dir <> name)
8+
end
9+
10+
test "parse basic html" do
11+
html = "<html><head></head><body></body></html>"
12+
ret = {:ok, [{"html", [], [{"head", [], []}, {"body", [], []}]}]}
13+
assert Html5ever.parse(html) == ret
14+
end
15+
16+
test "parse example.com html" do
17+
html = read_html("example.html")
18+
assert match?({:ok, _}, Html5ever.parse(html))
19+
end
20+
21+
test "parse drudgereport.com html" do
22+
html = read_html("drudgereport.html")
23+
assert match?({:ok, _}, Html5ever.parse(html))
24+
end
25+
26+
test "unbalanced worst case" do
27+
html = String.duplicate("<div>", 100)
28+
assert match?({:ok, _}, Html5ever.parse(html))
29+
end
30+
31+
end

0 commit comments

Comments
 (0)