11
11
12
12
use core:: prelude:: * ;
13
13
14
+ use util:: tendril:: IntoTendril ;
14
15
use tokenizer:: { TokenizerOpts , Tokenizer , TokenSink } ;
15
16
use tree_builder:: { TreeBuilderOpts , TreeBuilder , TreeSink } ;
16
17
17
18
use core:: default:: Default ;
18
19
use core:: option;
19
- use collections:: string:: String ;
20
20
21
21
use string_cache:: { Atom , QualName } ;
22
22
23
- /// Convenience function to turn a single `String` into an iterator.
24
- pub fn one_input ( x : String ) -> option:: IntoIter < String > {
23
+ /// Convenience function to turn a single value into an iterator.
24
+ pub fn one_input < T > ( x : T ) -> option:: IntoIter < T > {
25
25
Some ( x) . into_iter ( )
26
26
}
27
27
@@ -33,14 +33,11 @@ pub fn one_input(x: String) -> option::IntoIter<String> {
33
33
/// let mut sink = MySink;
34
34
/// tokenize_to(&mut sink, one_input(my_str), Default::default());
35
35
/// ```
36
- pub fn tokenize_to <
37
- Sink : TokenSink ,
38
- It : Iterator < Item =String >
39
- > (
40
- sink : Sink ,
41
- input : It ,
42
- opts : TokenizerOpts ) -> Sink {
43
-
36
+ pub fn tokenize_to < Sink , T , It > ( sink : Sink , input : It , opts : TokenizerOpts ) -> Sink
37
+ where Sink : TokenSink ,
38
+ T : IntoTendril ,
39
+ It : Iterator < Item =T > ,
40
+ {
44
41
let mut tok = Tokenizer :: new ( sink, opts) ;
45
42
for s in input {
46
43
tok. feed ( s) ;
@@ -67,14 +64,11 @@ pub struct ParseOpts {
67
64
/// let mut sink = MySink;
68
65
/// parse_to(&mut sink, one_input(my_str), Default::default());
69
66
/// ```
70
- pub fn parse_to <
71
- Sink : TreeSink ,
72
- It : Iterator < Item =String >
73
- > (
74
- sink : Sink ,
75
- input : It ,
76
- opts : ParseOpts ) -> Sink {
77
-
67
+ pub fn parse_to < Sink , T , It > ( sink : Sink , input : It , opts : ParseOpts ) -> Sink
68
+ where Sink : TreeSink ,
69
+ T : IntoTendril ,
70
+ It : Iterator < Item =T > ,
71
+ {
78
72
let tb = TreeBuilder :: new ( sink, opts. tree_builder ) ;
79
73
let mut tok = Tokenizer :: new ( tb, opts. tokenizer ) ;
80
74
for s in input {
@@ -92,15 +86,14 @@ pub fn parse_to<
92
86
/// let mut sink = MySink;
93
87
/// parse_fragment_to(&mut sink, one_input(my_str), context_token, Default::default());
94
88
/// ```
95
- pub fn parse_fragment_to <
96
- Sink : TreeSink ,
97
- It : Iterator < Item =String >
98
- > (
99
- sink : Sink ,
100
- input : It ,
101
- context : Atom ,
102
- opts : ParseOpts ) -> Sink {
103
-
89
+ pub fn parse_fragment_to < Sink , T , It > ( sink : Sink ,
90
+ input : It ,
91
+ context : Atom ,
92
+ opts : ParseOpts ) -> Sink
93
+ where Sink : TreeSink ,
94
+ T : IntoTendril ,
95
+ It : Iterator < Item =T >
96
+ {
104
97
let mut sink = sink;
105
98
let context_elem = sink. create_element ( QualName :: new ( ns ! ( HTML ) , context) , vec ! ( ) ) ;
106
99
let tb = TreeBuilder :: new_for_fragment ( sink, context_elem, None , opts. tree_builder ) ;
@@ -132,9 +125,10 @@ pub trait ParseResult {
132
125
/// ```ignore
133
126
/// let dom: RcDom = parse(one_input(my_str), Default::default());
134
127
/// ```
135
- pub fn parse < Output , It > ( input : It , opts : ParseOpts ) -> Output
128
+ pub fn parse < Output , T , It > ( input : It , opts : ParseOpts ) -> Output
136
129
where Output : ParseResult ,
137
- It : Iterator < Item =String > ,
130
+ T : IntoTendril ,
131
+ It : Iterator < Item =T > ,
138
132
{
139
133
let sink = parse_to ( Default :: default ( ) , input, opts) ;
140
134
ParseResult :: get_result ( sink)
@@ -147,9 +141,10 @@ pub fn parse<Output, It>(input: It, opts: ParseOpts) -> Output
147
141
/// ```ignore
148
142
/// let dom: RcDom = parse_fragment(one_input(my_str), context_token, Default::default());
149
143
/// ```
150
- pub fn parse_fragment < Output , It > ( input : It , context : Atom , opts : ParseOpts ) -> Output
144
+ pub fn parse_fragment < Output , T , It > ( input : It , context : Atom , opts : ParseOpts ) -> Output
151
145
where Output : ParseResult ,
152
- It : Iterator < Item =String > ,
146
+ T : IntoTendril ,
147
+ It : Iterator < Item =T > ,
153
148
{
154
149
let sink = parse_fragment_to ( Default :: default ( ) , input, context, opts) ;
155
150
ParseResult :: get_result ( sink)
0 commit comments