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

Commit 583f635

Browse files
authored
Merge pull request rusterlium#10 from mfeckie/master
Update rustler and address unused code
2 parents f234146 + ddeae34 commit 583f635

File tree

6 files changed

+33
-74
lines changed

6 files changed

+33
-74
lines changed

mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ defmodule Html5ever.Mixfile do
4545
#
4646
# Type "mix help deps" for more examples and options
4747
defp deps do
48-
[{:rustler, "~> 0.17.0"},
48+
[{:rustler, "~> 0.18.0"},
4949
{:ex_doc, ">= 0.0.0", only: :dev}]
5050
end
5151

mix.lock

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1-
%{"earmark": {:hex, :earmark, "1.1.0", "8c2bf85d725050a92042bc1edf362621004d43ca6241c756f39612084e95487f", [:mix], [], "hexpm"},
1+
%{
2+
"earmark": {:hex, :earmark, "1.1.0", "8c2bf85d725050a92042bc1edf362621004d43ca6241c756f39612084e95487f", [:mix], [], "hexpm"},
23
"ex_doc": {:hex, :ex_doc, "0.14.5", "c0433c8117e948404d93ca69411dd575ec6be39b47802e81ca8d91017a0cf83c", [:mix], [{:earmark, "~> 1.0", [hex: :earmark, repo: "hexpm", optional: false]}], "hexpm"},
3-
"rustler": {:hex, :rustler, "0.17.0", "919c03b77abcf4f6ded2a3433b08829b0ec57b9f382af0ae24e4d1e229a7069e", [:mix], [], "hexpm"}}
4+
"rustler": {:hex, :rustler, "0.18.0", "db4bd0c613d83a1badc31be90ddada6f9821de29e4afd15c53a5da61882e4f2d", [:mix], [], "hexpm"},
5+
}

native/html5ever_nif/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ path = "src/lib.rs"
99
crate-type = ["dylib"]
1010

1111
[dependencies]
12-
rustler = "^0.17"
13-
rustler_codegen = "^0.17"
12+
rustler = "^0.18"
13+
rustler_codegen = "^0.18"
1414
#rustler = { path = "../../../Rustler/" }
1515
#rustler_codegen = { path = "../../../Rustler/rustler_codegen/" }
1616

native/html5ever_nif/src/flat_dom.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
use ::html5ever;
2-
use ::markup5ever;
3-
41
use html5ever::{ QualName, Attribute };
52
use html5ever::tree_builder::{ TreeSink, QuirksMode, NodeOrText, ElementFlags };
63
use markup5ever::ExpandedName;
@@ -115,11 +112,11 @@ impl TreeSink for FlatSink {
115112
}
116113

117114
// TODO: Log this or something
118-
fn parse_error(&mut self, msg: Cow<'static, str>) {}
119-
fn set_quirks_mode(&mut self, mode: QuirksMode) {}
115+
fn parse_error(&mut self, _msg: Cow<'static, str>) {}
116+
fn set_quirks_mode(&mut self, _mode: QuirksMode) {}
120117

121118
fn get_document(&mut self) -> Self::Handle { NodeHandle(0) }
122-
fn get_template_contents(&mut self, target: &Self::Handle) -> Self::Handle {
119+
fn get_template_contents(&mut self, _target: &Self::Handle) -> Self::Handle {
123120
panic!("Templates not supported");
124121
}
125122

native/html5ever_nif/src/lib.rs

Lines changed: 23 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -2,49 +2,36 @@
22
extern crate rustler;
33
#[macro_use]
44
extern crate lazy_static;
5-
extern crate tendril;
65
extern crate scoped_pool;
6+
extern crate tendril;
77

88
extern crate html5ever;
99
extern crate markup5ever;
1010

1111
use std::panic;
1212

13-
use rustler::{Env, Term, NifResult, Error, Encoder, Decoder};
14-
use rustler::types::binary::Binary;
1513
use rustler::env::OwnedEnv;
14+
use rustler::types::binary::Binary;
15+
use rustler::{Decoder, Encoder, Env, Error, NifResult, Term};
1616

1717
use html5ever::rcdom::RcDom;
18-
use html5ever::driver::ParseOpts;
19-
use html5ever::tokenizer::TokenizerOpts;
20-
use html5ever::tree_builder::TreeBuilderOpts;
21-
use html5ever::tree_builder::QuirksMode;
2218
use tendril::TendrilSink;
2319

24-
use ::common::{ QNW, STW };
25-
2620
mod common;
27-
mod rc_dom;
2821
mod flat_dom;
22+
mod rc_dom;
2923

3024
mod atoms {
3125
rustler_atoms! {
3226
atom html5ever_nif_result;
3327

3428
atom ok;
3529
atom error;
36-
atom nil;
3730
atom nif_panic;
3831

3932
atom doctype;
4033
atom comment;
4134

42-
atom discard_bom;
43-
atom scripting_enabled;
44-
atom iframe_srcdoc;
45-
atom drop_doctype;
46-
atom error_level;
47-
4835
atom none;
4936
atom some;
5037
atom all;
@@ -71,40 +58,6 @@ impl<'a> Decoder<'a> for ErrorLevel {
7158
}
7259
}
7360

74-
fn term_to_configs(term: Term) -> NifResult<ParseOpts> {
75-
if atoms::nil() == term {
76-
Ok(ParseOpts::default())
77-
} else {
78-
let env = term.get_env();
79-
80-
let errors: ErrorLevel = term.map_get(atoms::error_level().to_term(env))?.decode()?;
81-
82-
let discard_bom: bool = term.map_get(atoms::discard_bom().to_term(env))?.decode()?;
83-
let scripting_enabled: bool = term.map_get(atoms::scripting_enabled().to_term(env))?
84-
.decode()?;
85-
let iframe_srcdoc: bool = term.map_get(atoms::iframe_srcdoc().to_term(env))?.decode()?;
86-
let drop_doctype: bool = term.map_get(atoms::drop_doctype().to_term(env))?.decode()?;
87-
88-
Ok(ParseOpts {
89-
tokenizer: TokenizerOpts {
90-
exact_errors: errors == ErrorLevel::All,
91-
discard_bom: discard_bom,
92-
profile: false,
93-
initial_state: None,
94-
last_start_tag_name: None,
95-
},
96-
tree_builder: TreeBuilderOpts {
97-
exact_errors: errors == ErrorLevel::All,
98-
scripting_enabled: scripting_enabled,
99-
iframe_srcdoc: iframe_srcdoc,
100-
drop_doctype: drop_doctype,
101-
ignore_missing_rules: false,
102-
quirks_mode: QuirksMode::NoQuirks,
103-
},
104-
})
105-
}
106-
}
107-
10861
// Thread pool for `parse_async`.
10962
// TODO: How do we decide on pool size?
11063
lazy_static! {
@@ -140,7 +93,11 @@ fn parse_async<'a>(env: Env<'a>, args: &[Term<'a>]) -> NifResult<Term<'a>> {
14093
let result = parser.one(std::str::from_utf8(binary.as_slice()).unwrap());
14194

14295
let result_term = rc_dom::handle_to_term(inner_env, &result.document);
143-
(atoms::html5ever_nif_result(), atoms::ok(), result_term.unwrap()).encode(inner_env)
96+
(
97+
atoms::html5ever_nif_result(),
98+
atoms::ok(),
99+
result_term.unwrap(),
100+
).encode(inner_env)
144101
}) {
145102
Ok(term) => term,
146103
Err(err) => {
@@ -174,7 +131,11 @@ fn parse_sync<'a>(env: Env<'a>, args: &[Term<'a>]) -> NifResult<Term<'a>> {
174131

175132
let result_term = rc_dom::handle_to_term(env, &result.document);
176133

177-
Ok((atoms::html5ever_nif_result(), atoms::ok(), result_term.unwrap()).encode(env))
134+
Ok((
135+
atoms::html5ever_nif_result(),
136+
atoms::ok(),
137+
result_term.unwrap(),
138+
).encode(env))
178139
}
179140

180141
fn flat_parse_sync<'a>(env: Env<'a>, args: &[Term<'a>]) -> NifResult<Term<'a>> {
@@ -192,14 +153,15 @@ fn flat_parse_sync<'a>(env: Env<'a>, args: &[Term<'a>]) -> NifResult<Term<'a>> {
192153
Ok((atoms::html5ever_nif_result(), atoms::ok(), result_term).encode(env))
193154
}
194155

195-
rustler_export_nifs!("Elixir.Html5ever.Native",
196-
[
197-
("parse_async", 1, parse_async),
198-
("parse_sync", 1, parse_sync),
199-
("flat_parse_sync", 1, flat_parse_sync)
200-
],
201-
Some(on_load));
202-
156+
rustler_export_nifs!(
157+
"Elixir.Html5ever.Native",
158+
[
159+
("parse_async", 1, parse_async),
160+
("parse_sync", 1, parse_sync),
161+
("flat_parse_sync", 1, flat_parse_sync)
162+
],
163+
Some(on_load)
164+
);
203165

204166
fn on_load<'a>(_env: Env<'a>, _load_info: Term<'a>) -> bool {
205167
true

native/html5ever_nif/src/rc_dom.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
use ::rustler::{Env, Term, Encoder};
22
use ::html5ever::rcdom::{Handle, NodeData};
3-
use ::html5ever::QualName;
4-
use ::tendril::StrTendril;
53

64
use ::common::{ QNW, STW };
75

0 commit comments

Comments
 (0)