rss-nokogiri 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: