tidy-ext 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/Rakefile +2 -4
- data/VERSION +1 -1
- data/ext/tidy/ruby-tidy.c +31 -19
- data/spec/tidy/compat_spec.rb +26 -5
- data/spec/tidy/tidy_spec.rb +0 -1
- metadata +11 -7
- data/README +0 -12
data/.gitignore
CHANGED
data/Rakefile
CHANGED
@@ -10,10 +10,8 @@ begin
|
|
10
10
|
require 'jeweler'
|
11
11
|
Jeweler::Tasks.new do |gem|
|
12
12
|
gem.name = "tidy-ext"
|
13
|
-
gem.summary = "HTML Tidy library implemented as a Ruby extension."
|
14
|
-
gem.description =
|
15
|
-
Tidies up web pages.
|
16
|
-
EOS
|
13
|
+
gem.summary = "W3C HTML Tidy library implemented as a Ruby extension."
|
14
|
+
gem.description = "Tidy up web pages."
|
17
15
|
gem.email = "carl.douglas@gmail.com"
|
18
16
|
gem.homepage = "http://github.com/carld/tidy"
|
19
17
|
gem.authors = ["Carl Douglas"]
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.8
|
data/ext/tidy/ruby-tidy.c
CHANGED
@@ -34,16 +34,25 @@ static void rb_tidy_free(void *ptr)
|
|
34
34
|
}
|
35
35
|
|
36
36
|
/* create a new tidy doc */
|
37
|
-
|
38
|
-
static VALUE rb_tidy_new(VALUE class, VALUE hash)
|
37
|
+
static VALUE rb_tidy_new(int argc, VALUE *argv, VALUE class)
|
39
38
|
{
|
40
|
-
VALUE argv[1];
|
41
39
|
TidyDoc tdoc = tidyCreate();
|
42
|
-
VALUE
|
43
|
-
|
40
|
+
VALUE options;
|
41
|
+
VALUE access = INT2NUM(4);
|
42
|
+
VALUE errors = rb_ary_new();
|
43
|
+
|
44
|
+
VALUE self = Data_Wrap_Struct(class, 0, rb_tidy_free, (struct _TidyDoc *)tdoc);
|
45
|
+
|
46
|
+
rb_scan_args(argc, argv, "01", &options);
|
47
|
+
options = NIL_P(options) ? rb_hash_new() : options;
|
48
|
+
|
49
|
+
rb_iv_set(self, "@options", options);
|
50
|
+
rb_iv_set(self, "@access", access);
|
51
|
+
rb_iv_set(self, "@errors", errors);
|
52
|
+
|
53
|
+
rb_obj_call_init(self, 0, NULL);
|
44
54
|
|
45
|
-
|
46
|
-
return tdata;
|
55
|
+
return self;
|
47
56
|
}
|
48
57
|
|
49
58
|
/* parse the given input and return the tidy errors and output */
|
@@ -52,6 +61,7 @@ static VALUE rb_tidy_parse(VALUE self, VALUE input)
|
|
52
61
|
VALUE array;
|
53
62
|
VALUE access;
|
54
63
|
VALUE errors;
|
64
|
+
VALUE options;
|
55
65
|
|
56
66
|
TidyDoc tdoc;
|
57
67
|
TidyBuffer output;
|
@@ -75,6 +85,8 @@ static VALUE rb_tidy_parse(VALUE self, VALUE input)
|
|
75
85
|
access = rb_iv_get(self, "@access");
|
76
86
|
tidyOptSetInt( tdoc, TidyAccessibilityCheckLevel, NUM2UINT(access));
|
77
87
|
|
88
|
+
options = rb_iv_get(self, "@options");
|
89
|
+
|
78
90
|
if (status >= 0) {
|
79
91
|
|
80
92
|
int is_input_source = 0;
|
@@ -114,10 +126,12 @@ static VALUE rb_tidy_parse(VALUE self, VALUE input)
|
|
114
126
|
contentWarnings += tidyWarningCount( tdoc );
|
115
127
|
accessWarnings += tidyAccessWarningCount( tdoc );
|
116
128
|
|
117
|
-
|
129
|
+
VALUE show_warnings = rb_hash_aref(options, ID2SYM(rb_intern("show_warnings")));
|
130
|
+
|
131
|
+
if (contentErrors > 0 || (show_warnings == Qtrue && contentWarnings > 0)) {
|
118
132
|
errors = rb_str_new2(errbuf.bp);
|
119
133
|
} else {
|
120
|
-
errors =
|
134
|
+
errors = rb_str_new2("");
|
121
135
|
}
|
122
136
|
|
123
137
|
rb_iv_set(self, "@errors", errors);
|
@@ -133,18 +147,16 @@ static VALUE rb_tidy_parse(VALUE self, VALUE input)
|
|
133
147
|
|
134
148
|
static VALUE rb_tidy_init(VALUE self)
|
135
149
|
{
|
136
|
-
VALUE access = INT2NUM(4);
|
137
|
-
VALUE errors = rb_ary_new();
|
138
|
-
|
139
|
-
rb_iv_set(self, "@access", access);
|
140
|
-
rb_iv_set(self, "@errors", errors);
|
141
|
-
|
142
150
|
return self;
|
143
151
|
}
|
144
152
|
|
145
|
-
static VALUE rb_tidy_open(VALUE class, VALUE
|
153
|
+
static VALUE rb_tidy_open(VALUE class, VALUE options)
|
146
154
|
{
|
147
|
-
VALUE
|
155
|
+
VALUE args[1];
|
156
|
+
VALUE tidy;
|
157
|
+
|
158
|
+
args[0] = options;
|
159
|
+
tidy = rb_tidy_new(1, args, class);
|
148
160
|
|
149
161
|
if (rb_block_given_p()) {
|
150
162
|
rb_yield(tidy);
|
@@ -181,13 +193,13 @@ void Init_tidy()
|
|
181
193
|
|
182
194
|
rb_define_class_variable(cTidy, "@@path", rb_str_new2("tidy-is-built-in"));
|
183
195
|
|
184
|
-
rb_define_singleton_method(cTidy, "new", rb_tidy_new,
|
196
|
+
rb_define_singleton_method(cTidy, "new", rb_tidy_new, -1);
|
185
197
|
rb_define_singleton_method(cTidy, "open", rb_tidy_open, 1);
|
186
198
|
rb_define_singleton_method(cTidy, "path", rb_tidy_path_get, 0);
|
187
199
|
rb_define_singleton_method(cTidy, "path=", rb_tidy_path_set, 1);
|
188
200
|
|
189
|
-
rb_define_method(cTidy, "parse", rb_tidy_parse, 1);
|
190
201
|
rb_define_method(cTidy, "initialize", rb_tidy_init, 0);
|
202
|
+
rb_define_method(cTidy, "parse", rb_tidy_parse, 1);
|
191
203
|
rb_define_method(cTidy, "clean", rb_tidy_clean, 1);
|
192
204
|
|
193
205
|
rb_define_attr(cTidy, "access", 1, 1);
|
data/spec/tidy/compat_spec.rb
CHANGED
@@ -28,17 +28,38 @@ describe "tidy compatibility methods" do
|
|
28
28
|
|
29
29
|
it "should parse a string" do
|
30
30
|
tidy = Tidy.open({}) do |tidy|
|
31
|
-
|
32
|
-
|
31
|
+
html = tidy.clean("<html><body>String</body></html>")
|
32
|
+
html.should_not be_empty
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
36
|
it "should be able to parse more than one string consecutively" do
|
37
37
|
tidy = Tidy.open({}) do |tidy|
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
html1 = tidy.clean("<html><body>String</body></html>")
|
39
|
+
errors1 = tidy.errors
|
40
|
+
html2 = tidy.clean("<html><body>String</body></html>")
|
41
|
+
errors2 = tidy.errors
|
42
|
+
|
43
|
+
errors1.should == errors2
|
41
44
|
end
|
42
45
|
end
|
43
46
|
|
47
|
+
it "should observe the show_warnings entry in the option hash" do
|
48
|
+
errors1 = nil
|
49
|
+
errors2 = nil
|
50
|
+
|
51
|
+
tidy = Tidy.open({:show_warnings => false}) do |tidy|
|
52
|
+
html = tidy.clean("<html><body>String</body></html>")
|
53
|
+
errors1 = tidy.errors
|
54
|
+
puts errors1
|
55
|
+
end
|
56
|
+
|
57
|
+
tidy = Tidy.open({:show_warnings => true}) do |tidy|
|
58
|
+
html = tidy.clean("<html><body>String</body></html>")
|
59
|
+
errors2 = tidy.errors
|
60
|
+
puts errors2
|
61
|
+
end
|
62
|
+
|
63
|
+
errors1.should_not == errors2
|
64
|
+
end
|
44
65
|
end
|
data/spec/tidy/tidy_spec.rb
CHANGED
@@ -28,7 +28,6 @@ describe "tidy class methods" do
|
|
28
28
|
it "should be able to parse more than one string consecutively" do
|
29
29
|
errors1, html1 = subject.parse("<html><body>String</body></html>")
|
30
30
|
errors2, html2 = subject.parse("<html><head><title>hello</title></head><body>String</body></html>")
|
31
|
-
errors1.should_not == errors2
|
32
31
|
end
|
33
32
|
|
34
33
|
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tidy-ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 11
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
9
|
+
- 8
|
10
|
+
version: 0.1.8
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Carl Douglas
|
@@ -14,11 +15,11 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-06-
|
18
|
+
date: 2010-06-11 00:00:00 +10:00
|
18
19
|
default_executable:
|
19
20
|
dependencies: []
|
20
21
|
|
21
|
-
description:
|
22
|
+
description: Tidy up web pages.
|
22
23
|
email: carl.douglas@gmail.com
|
23
24
|
executables: []
|
24
25
|
|
@@ -29,7 +30,6 @@ extra_rdoc_files:
|
|
29
30
|
files:
|
30
31
|
- .gitignore
|
31
32
|
- LICENSE
|
32
|
-
- README
|
33
33
|
- Rakefile
|
34
34
|
- VERSION
|
35
35
|
- ext/tidy/access.c
|
@@ -101,25 +101,29 @@ rdoc_options:
|
|
101
101
|
require_paths:
|
102
102
|
- lib
|
103
103
|
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
+
none: false
|
104
105
|
requirements:
|
105
106
|
- - ">="
|
106
107
|
- !ruby/object:Gem::Version
|
108
|
+
hash: 3
|
107
109
|
segments:
|
108
110
|
- 0
|
109
111
|
version: "0"
|
110
112
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
111
114
|
requirements:
|
112
115
|
- - ">="
|
113
116
|
- !ruby/object:Gem::Version
|
117
|
+
hash: 3
|
114
118
|
segments:
|
115
119
|
- 0
|
116
120
|
version: "0"
|
117
121
|
requirements: []
|
118
122
|
|
119
123
|
rubyforge_project:
|
120
|
-
rubygems_version: 1.3.
|
124
|
+
rubygems_version: 1.3.7
|
121
125
|
signing_key:
|
122
126
|
specification_version: 3
|
123
|
-
summary: HTML Tidy library implemented as a Ruby extension.
|
127
|
+
summary: W3C HTML Tidy library implemented as a Ruby extension.
|
124
128
|
test_files: []
|
125
129
|
|