sitemap_generator_ftbpro 5.0.4

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 (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