rss-nokogiri 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. data/.gemtest +0 -0
  2. data/.gitignore +19 -0
  3. data/.gitmodules +3 -0
  4. data/BSDL +22 -0
  5. data/COPYING +56 -0
  6. data/COPYING.ja +51 -0
  7. data/Gemfile +4 -0
  8. data/LEGAL +8 -0
  9. data/README.markdown +51 -0
  10. data/Rakefile +12 -0
  11. data/lib/rss/nokogiri.rb +92 -0
  12. data/rss-nokogiri.gemspec +24 -0
  13. data/test/regression/dot.png +0 -0
  14. data/test/regression/rss-assertions.rb +2090 -0
  15. data/test/regression/rss-testcase.rb +478 -0
  16. data/test/regression/test_1.0.rb +295 -0
  17. data/test/regression/test_2.0.rb +409 -0
  18. data/test/regression/test_accessor.rb +103 -0
  19. data/test/regression/test_atom.rb +681 -0
  20. data/test/regression/test_content.rb +104 -0
  21. data/test/regression/test_dublincore.rb +279 -0
  22. data/test/regression/test_image.rb +214 -0
  23. data/test/regression/test_inherit.rb +40 -0
  24. data/test/regression/test_itunes.rb +347 -0
  25. data/test/regression/test_maker_0.9.rb +474 -0
  26. data/test/regression/test_maker_1.0.rb +516 -0
  27. data/test/regression/test_maker_2.0.rb +757 -0
  28. data/test/regression/test_maker_atom_entry.rb +393 -0
  29. data/test/regression/test_maker_atom_feed.rb +454 -0
  30. data/test/regression/test_maker_content.rb +47 -0
  31. data/test/regression/test_maker_dc.rb +149 -0
  32. data/test/regression/test_maker_image.rb +62 -0
  33. data/test/regression/test_maker_itunes.rb +471 -0
  34. data/test/regression/test_maker_slash.rb +37 -0
  35. data/test/regression/test_maker_sy.rb +44 -0
  36. data/test/regression/test_maker_taxo.rb +81 -0
  37. data/test/regression/test_maker_trackback.rb +41 -0
  38. data/test/regression/test_maker_xml-stylesheet.rb +83 -0
  39. data/test/regression/test_parser.rb +62 -0
  40. data/test/regression/test_parser_1.0.rb +528 -0
  41. data/test/regression/test_parser_2.0.rb +122 -0
  42. data/test/regression/test_parser_atom_entry.rb +163 -0
  43. data/test/regression/test_parser_atom_feed.rb +276 -0
  44. data/test/regression/test_setup_maker_0.9.rb +246 -0
  45. data/test/regression/test_setup_maker_1.0.rb +550 -0
  46. data/test/regression/test_setup_maker_2.0.rb +308 -0
  47. data/test/regression/test_setup_maker_atom_entry.rb +409 -0
  48. data/test/regression/test_setup_maker_atom_feed.rb +445 -0
  49. data/test/regression/test_setup_maker_itunes.rb +144 -0
  50. data/test/regression/test_setup_maker_slash.rb +38 -0
  51. data/test/regression/test_slash.rb +64 -0
  52. data/test/regression/test_syndication.rb +125 -0
  53. data/test/regression/test_taxonomy.rb +172 -0
  54. data/test/regression/test_to_s.rb +670 -0
  55. data/test/regression/test_trackback.rb +135 -0
  56. data/test/regression/test_version.rb +9 -0
  57. data/test/regression/test_xml-stylesheet.rb +108 -0
  58. metadata +220 -0
@@ -0,0 +1,135 @@
1
+ require "cgi"
2
+ require "rexml/document"
3
+
4
+ require "rss-testcase"
5
+
6
+ require "rss/1.0"
7
+ require "rss/2.0"
8
+ require "rss/trackback"
9
+
10
+ module RSS
11
+ class TestTrackBack < TestCase
12
+
13
+ def setup
14
+ @prefix = "trackback"
15
+ @uri = "http://madskills.com/public/xml/rss/module/trackback/"
16
+
17
+ @parents = %w(item)
18
+
19
+ @elems = {
20
+ :ping => "http://bar.com/tb.cgi?tb_id=rssplustrackback",
21
+ :about => "http://foo.com/trackback/tb.cgi?tb_id=20020923",
22
+ }
23
+
24
+ @content_nodes = @elems.collect do |name, value|
25
+ "<#{@prefix}:#{name} rdf:resource=\"#{CGI.escapeHTML(value.to_s)}\"/>"
26
+ end.join("\n")
27
+
28
+ @content_nodes2 = @elems.collect do |name, value|
29
+ "<#{@prefix}:#{name}>#{CGI.escapeHTML(value.to_s)}</#{@prefix}:#{name}>"
30
+ end.join("\n")
31
+
32
+ @rss_source = make_RDF(<<-EOR, {@prefix => @uri})
33
+ #{make_channel()}
34
+ #{make_image()}
35
+ #{make_item(@content_nodes)}
36
+ #{make_textinput()}
37
+ EOR
38
+
39
+ @rss = Parser.parse(@rss_source)
40
+
41
+ @rss20_source = make_rss20(nil, {@prefix => @uri}) do
42
+ make_channel20(nil) do
43
+ make_item20(@content_nodes2)
44
+ end
45
+ end
46
+
47
+ @rss20 = Parser.parse(@rss20_source, false)
48
+ end
49
+
50
+ def test_parser
51
+
52
+ assert_nothing_raised do
53
+ Parser.parse(@rss_source)
54
+ end
55
+
56
+ @elems.find_all{|k, v| k == :ping}.each do |tag, value|
57
+ assert_too_much_tag(tag.to_s, "item") do
58
+ Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
59
+ #{make_channel()}
60
+ #{make_item(("<" + @prefix + ":" + tag.to_s + " rdf:resource=\"" +
61
+ CGI.escapeHTML(value.to_s) +
62
+ "\"/>") * 2)}
63
+ EOR
64
+ end
65
+ end
66
+
67
+ @elems.find_all{|k, v| k == :about}.each do |tag, value|
68
+ assert_missing_tag("trackback:ping", "item") do
69
+ Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
70
+ #{make_channel()}
71
+ #{make_item(("<" + @prefix + ":" + tag.to_s + " rdf:resource=\"" +
72
+ CGI.escapeHTML(value.to_s) +
73
+ "\"/>") * 2)}
74
+ EOR
75
+ end
76
+
77
+ end
78
+
79
+ end
80
+
81
+ def test_accessor
82
+
83
+ new_value = {
84
+ :ping => "http://baz.com/trackback/tb.cgi?tb_id=20030808",
85
+ :about => "http://hoge.com/trackback/tb.cgi?tb_id=90030808",
86
+ }
87
+
88
+ @elems.each do |name, value|
89
+ @parents.each do |parent|
90
+ accessor = "#{RSS::TRACKBACK_PREFIX}_#{name}"
91
+ target = @rss.__send__(parent)
92
+ target20 = @rss20.channel.__send__(parent, -1)
93
+ assert_equal(value, target.__send__(accessor))
94
+ assert_equal(value, target20.__send__(accessor))
95
+ if name == :about
96
+ # abount is zero or more
97
+ target.__send__("#{accessor}=", 0, new_value[name].to_s)
98
+ target20.__send__("#{accessor}=", 0, new_value[name].to_s)
99
+ else
100
+ target.__send__("#{accessor}=", new_value[name].to_s)
101
+ target20.__send__("#{accessor}=", new_value[name].to_s)
102
+ end
103
+ assert_equal(new_value[name], target.__send__(accessor))
104
+ assert_equal(new_value[name], target20.__send__(accessor))
105
+ end
106
+ end
107
+
108
+ end
109
+
110
+ def test_to_s
111
+
112
+ @elems.each do |name, value|
113
+ excepted = %Q!<#{@prefix}:#{name} rdf:resource="#{CGI.escapeHTML(value)}"/>!
114
+ @parents.each do |parent|
115
+ meth = "#{RSS::TRACKBACK_PREFIX}_#{name}_element"
116
+ meth << "s" if name == :about
117
+ assert_equal(excepted, @rss.__send__(parent).__send__(meth))
118
+ end
119
+ end
120
+
121
+ REXML::Document.new(@rss_source).root.each_element do |parent|
122
+ if @parents.include?(parent.name)
123
+ parent.each_element do |elem|
124
+ if elem.namespace == @uri
125
+ assert_equal(elem.attributes["resource"], @elems[elem.name.intern])
126
+ end
127
+ end
128
+ end
129
+ end
130
+
131
+ end
132
+
133
+ end
134
+ end
135
+
@@ -0,0 +1,9 @@
1
+ require "rss-testcase"
2
+
3
+ module RSS
4
+ class TestVersion < TestCase
5
+ def test_version
6
+ assert_equal("0.2.7", ::RSS::VERSION)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,108 @@
1
+ require "rexml/document"
2
+
3
+ require "rss-testcase"
4
+
5
+ require "rss/1.0"
6
+ require "rss/xml-stylesheet"
7
+
8
+ module RSS
9
+ class TestXMLStyleSheet < TestCase
10
+
11
+ def test_accessor
12
+ [
13
+ {:href => "a.xsl", :type => "text/xsl"},
14
+ {:media => "print", :title => "FOO"},
15
+ {:charset => "UTF-8", :alternate => "yes"},
16
+ ].each do |attrs|
17
+ assert_xml_stylesheet_attrs(attrs, XMLStyleSheet.new(attrs))
18
+ end
19
+ end
20
+
21
+ def test_to_s
22
+ [
23
+ {:href => "a.xsl", :type => "text/xsl"},
24
+ {:type => "text/xsl"},
25
+ {:href => "a.xsl", :guess_type => "text/xsl"},
26
+ {:href => "a.css", :type => "text/css"},
27
+ {:href => "a.css", :type => "text/xsl",
28
+ :guess_type => "text/css"},
29
+ {:href => "a.xsl", :type => "text/xsl",
30
+ :title => "sample", :media => "printer",
31
+ :charset => "UTF-8", :alternate => "yes"},
32
+ {:href => "a.css", :guess_type => "text/css",
33
+ :alternate => "no"},
34
+ {:type => "text/xsl", :title => "sample",
35
+ :media => "printer", :charset => "UTF-8",
36
+ :alternate => "yes"},
37
+ ].each do |attrs|
38
+ target, contents = parse_pi(XMLStyleSheet.new(attrs).to_s)
39
+ assert_xml_stylesheet(target, attrs, XMLStyleSheet.new(contents))
40
+ end
41
+ end
42
+
43
+ def test_bad_alternate
44
+ %w(a ___ ??? BAD_ALTERNATE).each do |value|
45
+ xss = XMLStyleSheet.new
46
+ assert_raise(NotAvailableValueError) do
47
+ xss.alternate = value
48
+ end
49
+ xss.do_validate = false
50
+ assert_nothing_raised do
51
+ xss.alternate = value
52
+ end
53
+ assert_nil(xss.alternate)
54
+ end
55
+ end
56
+
57
+ def test_parse
58
+ [
59
+ [{:href => "a.xsl", :type => "text/xsl"},],
60
+ [{:media => "print", :title => "FOO"},],
61
+ [{:charset => "UTF-8", :alternate => "yes"},],
62
+ [{:href => "a.xsl", :type => "text/xsl"},
63
+ {:type => "text/xsl"},
64
+ {:href => "a.xsl", :guess_type => "text/xsl"},
65
+ {:href => "a.css", :type => "text/css"},
66
+ {:href => "a.css", :type => "text/xsl",
67
+ :guess_type => "text/css"},
68
+ {:href => "a.xsl", :type => "text/xsl",
69
+ :title => "sample", :media => "printer",
70
+ :charset => "UTF-8", :alternate => "yes"},
71
+ {:href => "a.css", :guess_type => "text/css",
72
+ :alternate => "no"},
73
+ {:type => "text/xsl", :title => "sample",
74
+ :media => "printer", :charset => "UTF-8",
75
+ :alternate => "yes"},],
76
+ ].each do |xsss|
77
+ doc = REXML::Document.new(make_sample_RDF)
78
+ root = doc.root
79
+ xsss.each do |xss|
80
+ content = xss.collect do |key, name|
81
+ %Q[#{key}="#{name}"]
82
+ end.join(" ")
83
+ pi = REXML::Instruction.new("xml-stylesheet", content)
84
+ root.previous_sibling = pi
85
+ end
86
+ rss = Parser.parse(doc.to_s)
87
+ have_href_xsss = xsss.find_all {|xss| xss.has_key?(:href)}
88
+ assert_equal(have_href_xsss.size, rss.xml_stylesheets.size)
89
+ rss.xml_stylesheets.each_with_index do |stylesheet, i|
90
+ target, = parse_pi(stylesheet.to_s)
91
+ assert_xml_stylesheet(target, have_href_xsss[i], stylesheet)
92
+ end
93
+ end
94
+ end
95
+
96
+ def parse_pi(pi)
97
+ /\A\s*<\?(\S+)([^?]*\?+(?:[^?>][^?]*\?+)*)>\s*\z/ =~ pi
98
+ target = $1
99
+ dummy = REXML::Document.new("<dummy #{$2.to_s.chop}/>").root
100
+ contents = {}
101
+ dummy.attributes.each do |name, value|
102
+ contents[name] = value
103
+ end
104
+ [target, contents]
105
+ end
106
+
107
+ end
108
+ end
metadata ADDED
@@ -0,0 +1,220 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rss-nokogiri
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - KITAITI Makoto
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-15 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: &25262820 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *25262820
25
+ - !ruby/object:Gem::Dependency
26
+ name: yard
27
+ requirement: &25261020 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *25261020
36
+ - !ruby/object:Gem::Dependency
37
+ name: redcarpet
38
+ requirement: &25260120 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *25260120
47
+ - !ruby/object:Gem::Dependency
48
+ name: pry
49
+ requirement: &25272100 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *25272100
58
+ - !ruby/object:Gem::Dependency
59
+ name: pry-doc
60
+ requirement: &25269240 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *25269240
69
+ - !ruby/object:Gem::Dependency
70
+ name: nokogiri
71
+ requirement: &25266240 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: *25266240
80
+ description: Enable starndard bundled RSS library to use Nokogiri as a parser.
81
+ email:
82
+ - KitaitiMakoto@gmail.com
83
+ executables: []
84
+ extensions: []
85
+ extra_rdoc_files: []
86
+ files:
87
+ - .gemtest
88
+ - .gitignore
89
+ - .gitmodules
90
+ - BSDL
91
+ - COPYING
92
+ - COPYING.ja
93
+ - Gemfile
94
+ - LEGAL
95
+ - README.markdown
96
+ - Rakefile
97
+ - lib/rss/nokogiri.rb
98
+ - rss-nokogiri.gemspec
99
+ - test/regression/dot.png
100
+ - test/regression/rss-assertions.rb
101
+ - test/regression/rss-testcase.rb
102
+ - test/regression/test_1.0.rb
103
+ - test/regression/test_2.0.rb
104
+ - test/regression/test_accessor.rb
105
+ - test/regression/test_atom.rb
106
+ - test/regression/test_content.rb
107
+ - test/regression/test_dublincore.rb
108
+ - test/regression/test_image.rb
109
+ - test/regression/test_inherit.rb
110
+ - test/regression/test_itunes.rb
111
+ - test/regression/test_maker_0.9.rb
112
+ - test/regression/test_maker_1.0.rb
113
+ - test/regression/test_maker_2.0.rb
114
+ - test/regression/test_maker_atom_entry.rb
115
+ - test/regression/test_maker_atom_feed.rb
116
+ - test/regression/test_maker_content.rb
117
+ - test/regression/test_maker_dc.rb
118
+ - test/regression/test_maker_image.rb
119
+ - test/regression/test_maker_itunes.rb
120
+ - test/regression/test_maker_slash.rb
121
+ - test/regression/test_maker_sy.rb
122
+ - test/regression/test_maker_taxo.rb
123
+ - test/regression/test_maker_trackback.rb
124
+ - test/regression/test_maker_xml-stylesheet.rb
125
+ - test/regression/test_parser.rb
126
+ - test/regression/test_parser_1.0.rb
127
+ - test/regression/test_parser_2.0.rb
128
+ - test/regression/test_parser_atom_entry.rb
129
+ - test/regression/test_parser_atom_feed.rb
130
+ - test/regression/test_setup_maker_0.9.rb
131
+ - test/regression/test_setup_maker_1.0.rb
132
+ - test/regression/test_setup_maker_2.0.rb
133
+ - test/regression/test_setup_maker_atom_entry.rb
134
+ - test/regression/test_setup_maker_atom_feed.rb
135
+ - test/regression/test_setup_maker_itunes.rb
136
+ - test/regression/test_setup_maker_slash.rb
137
+ - test/regression/test_slash.rb
138
+ - test/regression/test_syndication.rb
139
+ - test/regression/test_taxonomy.rb
140
+ - test/regression/test_to_s.rb
141
+ - test/regression/test_trackback.rb
142
+ - test/regression/test_version.rb
143
+ - test/regression/test_xml-stylesheet.rb
144
+ homepage: https://gitorious.org/rss/nokogiri
145
+ licenses: []
146
+ post_install_message:
147
+ rdoc_options: []
148
+ require_paths:
149
+ - lib
150
+ required_ruby_version: !ruby/object:Gem::Requirement
151
+ none: false
152
+ requirements:
153
+ - - ! '>='
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ segments:
157
+ - 0
158
+ hash: 4596551081724417508
159
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
+ none: false
161
+ requirements:
162
+ - - ! '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ segments:
166
+ - 0
167
+ hash: 4596551081724417508
168
+ requirements: []
169
+ rubyforge_project:
170
+ rubygems_version: 1.8.8
171
+ signing_key:
172
+ specification_version: 3
173
+ summary: Parse RSS/Atom using Nokogiri
174
+ test_files:
175
+ - test/regression/dot.png
176
+ - test/regression/rss-assertions.rb
177
+ - test/regression/rss-testcase.rb
178
+ - test/regression/test_1.0.rb
179
+ - test/regression/test_2.0.rb
180
+ - test/regression/test_accessor.rb
181
+ - test/regression/test_atom.rb
182
+ - test/regression/test_content.rb
183
+ - test/regression/test_dublincore.rb
184
+ - test/regression/test_image.rb
185
+ - test/regression/test_inherit.rb
186
+ - test/regression/test_itunes.rb
187
+ - test/regression/test_maker_0.9.rb
188
+ - test/regression/test_maker_1.0.rb
189
+ - test/regression/test_maker_2.0.rb
190
+ - test/regression/test_maker_atom_entry.rb
191
+ - test/regression/test_maker_atom_feed.rb
192
+ - test/regression/test_maker_content.rb
193
+ - test/regression/test_maker_dc.rb
194
+ - test/regression/test_maker_image.rb
195
+ - test/regression/test_maker_itunes.rb
196
+ - test/regression/test_maker_slash.rb
197
+ - test/regression/test_maker_sy.rb
198
+ - test/regression/test_maker_taxo.rb
199
+ - test/regression/test_maker_trackback.rb
200
+ - test/regression/test_maker_xml-stylesheet.rb
201
+ - test/regression/test_parser.rb
202
+ - test/regression/test_parser_1.0.rb
203
+ - test/regression/test_parser_2.0.rb
204
+ - test/regression/test_parser_atom_entry.rb
205
+ - test/regression/test_parser_atom_feed.rb
206
+ - test/regression/test_setup_maker_0.9.rb
207
+ - test/regression/test_setup_maker_1.0.rb
208
+ - test/regression/test_setup_maker_2.0.rb
209
+ - test/regression/test_setup_maker_atom_entry.rb
210
+ - test/regression/test_setup_maker_atom_feed.rb
211
+ - test/regression/test_setup_maker_itunes.rb
212
+ - test/regression/test_setup_maker_slash.rb
213
+ - test/regression/test_slash.rb
214
+ - test/regression/test_syndication.rb
215
+ - test/regression/test_taxonomy.rb
216
+ - test/regression/test_to_s.rb
217
+ - test/regression/test_trackback.rb
218
+ - test/regression/test_version.rb
219
+ - test/regression/test_xml-stylesheet.rb
220
+ has_rdoc: