sitemap_generator_ftbpro 5.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +13 -0
  3. data/Gemfile.lock +35 -0
  4. data/MIT-LICENSE +20 -0
  5. data/README.md +1139 -0
  6. data/Rakefile +43 -0
  7. data/VERSION +1 -0
  8. data/lib/capistrano/sitemap_generator.rb +1 -0
  9. data/lib/capistrano/tasks/sitemap_generator.cap +36 -0
  10. data/lib/sitemap_generator/adapters/file_adapter.rb +43 -0
  11. data/lib/sitemap_generator/adapters/fog_adapter.rb +28 -0
  12. data/lib/sitemap_generator/adapters/s3_adapter.rb +41 -0
  13. data/lib/sitemap_generator/adapters/wave_adapter.rb +21 -0
  14. data/lib/sitemap_generator/adapters.rb +0 -0
  15. data/lib/sitemap_generator/application.rb +49 -0
  16. data/lib/sitemap_generator/builder/sitemap_file.rb +171 -0
  17. data/lib/sitemap_generator/builder/sitemap_index_file.rb +149 -0
  18. data/lib/sitemap_generator/builder/sitemap_index_url.rb +28 -0
  19. data/lib/sitemap_generator/builder/sitemap_url.rb +250 -0
  20. data/lib/sitemap_generator/builder.rb +8 -0
  21. data/lib/sitemap_generator/core_ext/big_decimal.rb +45 -0
  22. data/lib/sitemap_generator/core_ext/numeric.rb +48 -0
  23. data/lib/sitemap_generator/core_ext.rb +3 -0
  24. data/lib/sitemap_generator/helpers/number_helper.rb +237 -0
  25. data/lib/sitemap_generator/interpreter.rb +80 -0
  26. data/lib/sitemap_generator/link_set.rb +665 -0
  27. data/lib/sitemap_generator/railtie.rb +7 -0
  28. data/lib/sitemap_generator/sitemap_location.rb +192 -0
  29. data/lib/sitemap_generator/sitemap_namer.rb +75 -0
  30. data/lib/sitemap_generator/tasks.rb +53 -0
  31. data/lib/sitemap_generator/templates.rb +41 -0
  32. data/lib/sitemap_generator/utilities.rb +181 -0
  33. data/lib/sitemap_generator.rb +82 -0
  34. data/lib/tasks/sitemap_generator_tasks.rake +1 -0
  35. data/rails/install.rb +2 -0
  36. data/rails/uninstall.rb +2 -0
  37. data/spec/blueprint.rb +15 -0
  38. data/spec/files/sitemap.create.rb +12 -0
  39. data/spec/files/sitemap.groups.rb +49 -0
  40. data/spec/sitemap_generator/adapters/s3_adapter_spec.rb +23 -0
  41. data/spec/sitemap_generator/alternate_sitemap_spec.rb +79 -0
  42. data/spec/sitemap_generator/application_spec.rb +69 -0
  43. data/spec/sitemap_generator/builder/sitemap_file_spec.rb +110 -0
  44. data/spec/sitemap_generator/builder/sitemap_index_file_spec.rb +124 -0
  45. data/spec/sitemap_generator/builder/sitemap_index_url_spec.rb +28 -0
  46. data/spec/sitemap_generator/builder/sitemap_url_spec.rb +186 -0
  47. data/spec/sitemap_generator/core_ext/bigdecimal_spec.rb +20 -0
  48. data/spec/sitemap_generator/core_ext/numeric_spec.rb +43 -0
  49. data/spec/sitemap_generator/file_adaptor_spec.rb +20 -0
  50. data/spec/sitemap_generator/geo_sitemap_spec.rb +30 -0
  51. data/spec/sitemap_generator/helpers/number_helper_spec.rb +196 -0
  52. data/spec/sitemap_generator/interpreter_spec.rb +90 -0
  53. data/spec/sitemap_generator/link_set_spec.rb +864 -0
  54. data/spec/sitemap_generator/mobile_sitemap_spec.rb +27 -0
  55. data/spec/sitemap_generator/news_sitemap_spec.rb +42 -0
  56. data/spec/sitemap_generator/pagemap_sitemap_spec.rb +57 -0
  57. data/spec/sitemap_generator/sitemap_generator_spec.rb +582 -0
  58. data/spec/sitemap_generator/sitemap_groups_spec.rb +144 -0
  59. data/spec/sitemap_generator/sitemap_location_spec.rb +210 -0
  60. data/spec/sitemap_generator/sitemap_namer_spec.rb +96 -0
  61. data/spec/sitemap_generator/templates_spec.rb +24 -0
  62. data/spec/sitemap_generator/utilities/existence_spec.rb +26 -0
  63. data/spec/sitemap_generator/utilities/hash_spec.rb +57 -0
  64. data/spec/sitemap_generator/utilities/rounding_spec.rb +31 -0
  65. data/spec/sitemap_generator/utilities_spec.rb +101 -0
  66. data/spec/sitemap_generator/video_sitemap_spec.rb +117 -0
  67. data/spec/spec_helper.rb +24 -0
  68. data/spec/support/file_macros.rb +39 -0
  69. data/spec/support/schemas/siteindex.xsd +73 -0
  70. data/spec/support/schemas/sitemap-geo.xsd +41 -0
  71. data/spec/support/schemas/sitemap-mobile.xsd +32 -0
  72. data/spec/support/schemas/sitemap-news.xsd +159 -0
  73. data/spec/support/schemas/sitemap-pagemap.xsd +97 -0
  74. data/spec/support/schemas/sitemap-video.xsd +643 -0
  75. data/spec/support/schemas/sitemap.xsd +115 -0
  76. data/spec/support/xml_macros.rb +67 -0
  77. data/templates/sitemap.rb +27 -0
  78. metadata +226 -0
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe "SitemapGenerator" do
4
+
5
+ it "should add the mobile sitemap element" do
6
+ loc = 'http://www.example.com/mobile_page.html'
7
+ format = 'html'
8
+
9
+ mobile_xml_fragment = SitemapGenerator::Builder::SitemapUrl.new('mobile_page.html',
10
+ :host => 'http://www.example.com',
11
+ :mobile => true
12
+ ).to_xml
13
+
14
+ # Check that the options were parsed correctly
15
+ doc = Nokogiri::XML.parse("<root xmlns:mobile='#{SitemapGenerator::SCHEMAS['mobile']}'>#{mobile_xml_fragment}</root>")
16
+ url = doc.at_xpath("//url")
17
+ url.should_not be_nil
18
+ url.at_xpath("loc").text.should == loc
19
+
20
+ mobile = url.at_xpath("mobile:mobile")
21
+ mobile.should_not be_nil
22
+
23
+ # Google's documentation and published schema don't match some valid elements may
24
+ # not validate.
25
+ xml_fragment_should_validate_against_schema(mobile, 'sitemap-mobile', 'xmlns:mobile' => SitemapGenerator::SCHEMAS['mobile'])
26
+ end
27
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe "SitemapGenerator" do
4
+
5
+ it "should add the news sitemap element" do
6
+ loc = 'http://www.example.com/my_article.html'
7
+
8
+ news_xml_fragment = SitemapGenerator::Builder::SitemapUrl.new('my_article.html', {
9
+ :host => 'http://www.example.com',
10
+
11
+ :news => {
12
+ :publication_name => "Example",
13
+ :publication_language => "en",
14
+ :title => "My Article",
15
+ :keywords => "my article, articles about myself",
16
+ :stock_tickers => "SAO:PETR3",
17
+ :publication_date => "2011-08-22",
18
+ :access => "Subscription",
19
+ :genres => "PressRelease"
20
+ }
21
+ }).to_xml
22
+
23
+ doc = Nokogiri::XML.parse("<root xmlns:news='#{SitemapGenerator::SCHEMAS['news']}'>#{news_xml_fragment}</root>")
24
+
25
+ url = doc.at_xpath("//url")
26
+ loc = url.at_xpath("loc")
27
+ loc.text.should == 'http://www.example.com/my_article.html'
28
+
29
+ news = doc.at_xpath("//news:news")
30
+
31
+ news.at_xpath('//news:title').text.should == "My Article"
32
+ news.at_xpath("//news:keywords").text.should == "my article, articles about myself"
33
+ news.at_xpath("//news:stock_tickers").text.should == "SAO:PETR3"
34
+ news.at_xpath("//news:publication_date").text.should == "2011-08-22"
35
+ news.at_xpath("//news:access").text.should == "Subscription"
36
+ news.at_xpath("//news:genres").text.should == "PressRelease"
37
+ news.at_xpath("//news:name").text.should == "Example"
38
+ news.at_xpath("//news:language").text.should == "en"
39
+
40
+ xml_fragment_should_validate_against_schema(news, 'sitemap-news', 'xmlns:news' => SitemapGenerator::SCHEMAS['news'])
41
+ end
42
+ end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ describe "SitemapGenerator" do
4
+ let(:schema) { SitemapGenerator::SCHEMAS['pagemap'] }
5
+
6
+ it "should add the pagemap sitemap element" do
7
+ pagemap_xml_fragment = SitemapGenerator::Builder::SitemapUrl.new('my_page.html', {
8
+ :host => 'http://www.example.com',
9
+
10
+ :pagemap => {
11
+ :dataobjects => [
12
+ {
13
+ :type => 'document',
14
+ :id => 'hibachi',
15
+ :attributes => [
16
+ {:name => 'name', :value => 'Dragon'},
17
+ {:name => 'review', :value => 3.5},
18
+ ]
19
+ },
20
+ {
21
+ :type => 'stats',
22
+ :attributes => [
23
+ {:name => 'installs', :value => 2000},
24
+ {:name => 'comments', :value => 200},
25
+ ]
26
+ }
27
+ ]
28
+ }
29
+ }).to_xml
30
+
31
+ # Nokogiri is a fickle beast. We have to add the namespace and define
32
+ # the prefix in order for XPath queries to work. And then we have to
33
+ # reingest because otherwise Nokogiri doesn't use it.
34
+ doc = Nokogiri::XML.parse(pagemap_xml_fragment)
35
+ doc.root.add_namespace_definition('pagemap', schema)
36
+ doc = Nokogiri::XML.parse(doc.to_xml)
37
+
38
+ url = doc.at_xpath("//url")
39
+ loc = url.at_xpath("loc")
40
+ loc.text.should == 'http://www.example.com/my_page.html'
41
+
42
+ pagemap = doc.at_xpath('//pagemap:PageMap', 'pagemap' => schema)
43
+ pagemap.element_children.count.should == 2
44
+ dataobject = pagemap.at_xpath('//pagemap:DataObject')
45
+ dataobject.attributes['type'].value.should == 'document'
46
+ dataobject.attributes['id'].value.should == 'hibachi'
47
+ dataobject.element_children.count.should == 2
48
+ first_attribute = dataobject.element_children.first
49
+ second_attribute = dataobject.element_children.last
50
+ first_attribute.text.should == 'Dragon'
51
+ first_attribute.attributes['name'].value.should == 'name'
52
+ second_attribute.text.should == '3.5'
53
+ second_attribute.attributes['name'].value.should == 'review'
54
+
55
+ xml_fragment_should_validate_against_schema(pagemap, 'sitemap-pagemap', 'xmlns:pagemap' => schema)
56
+ end
57
+ end