sitemap_generator_ftbpro 5.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +13 -0
- data/Gemfile.lock +35 -0
- data/MIT-LICENSE +20 -0
- data/README.md +1139 -0
- data/Rakefile +43 -0
- data/VERSION +1 -0
- data/lib/capistrano/sitemap_generator.rb +1 -0
- data/lib/capistrano/tasks/sitemap_generator.cap +36 -0
- data/lib/sitemap_generator/adapters/file_adapter.rb +43 -0
- data/lib/sitemap_generator/adapters/fog_adapter.rb +28 -0
- data/lib/sitemap_generator/adapters/s3_adapter.rb +41 -0
- data/lib/sitemap_generator/adapters/wave_adapter.rb +21 -0
- data/lib/sitemap_generator/adapters.rb +0 -0
- data/lib/sitemap_generator/application.rb +49 -0
- data/lib/sitemap_generator/builder/sitemap_file.rb +171 -0
- data/lib/sitemap_generator/builder/sitemap_index_file.rb +149 -0
- data/lib/sitemap_generator/builder/sitemap_index_url.rb +28 -0
- data/lib/sitemap_generator/builder/sitemap_url.rb +250 -0
- data/lib/sitemap_generator/builder.rb +8 -0
- data/lib/sitemap_generator/core_ext/big_decimal.rb +45 -0
- data/lib/sitemap_generator/core_ext/numeric.rb +48 -0
- data/lib/sitemap_generator/core_ext.rb +3 -0
- data/lib/sitemap_generator/helpers/number_helper.rb +237 -0
- data/lib/sitemap_generator/interpreter.rb +80 -0
- data/lib/sitemap_generator/link_set.rb +665 -0
- data/lib/sitemap_generator/railtie.rb +7 -0
- data/lib/sitemap_generator/sitemap_location.rb +192 -0
- data/lib/sitemap_generator/sitemap_namer.rb +75 -0
- data/lib/sitemap_generator/tasks.rb +53 -0
- data/lib/sitemap_generator/templates.rb +41 -0
- data/lib/sitemap_generator/utilities.rb +181 -0
- data/lib/sitemap_generator.rb +82 -0
- data/lib/tasks/sitemap_generator_tasks.rake +1 -0
- data/rails/install.rb +2 -0
- data/rails/uninstall.rb +2 -0
- data/spec/blueprint.rb +15 -0
- data/spec/files/sitemap.create.rb +12 -0
- data/spec/files/sitemap.groups.rb +49 -0
- data/spec/sitemap_generator/adapters/s3_adapter_spec.rb +23 -0
- data/spec/sitemap_generator/alternate_sitemap_spec.rb +79 -0
- data/spec/sitemap_generator/application_spec.rb +69 -0
- data/spec/sitemap_generator/builder/sitemap_file_spec.rb +110 -0
- data/spec/sitemap_generator/builder/sitemap_index_file_spec.rb +124 -0
- data/spec/sitemap_generator/builder/sitemap_index_url_spec.rb +28 -0
- data/spec/sitemap_generator/builder/sitemap_url_spec.rb +186 -0
- data/spec/sitemap_generator/core_ext/bigdecimal_spec.rb +20 -0
- data/spec/sitemap_generator/core_ext/numeric_spec.rb +43 -0
- data/spec/sitemap_generator/file_adaptor_spec.rb +20 -0
- data/spec/sitemap_generator/geo_sitemap_spec.rb +30 -0
- data/spec/sitemap_generator/helpers/number_helper_spec.rb +196 -0
- data/spec/sitemap_generator/interpreter_spec.rb +90 -0
- data/spec/sitemap_generator/link_set_spec.rb +864 -0
- data/spec/sitemap_generator/mobile_sitemap_spec.rb +27 -0
- data/spec/sitemap_generator/news_sitemap_spec.rb +42 -0
- data/spec/sitemap_generator/pagemap_sitemap_spec.rb +57 -0
- data/spec/sitemap_generator/sitemap_generator_spec.rb +582 -0
- data/spec/sitemap_generator/sitemap_groups_spec.rb +144 -0
- data/spec/sitemap_generator/sitemap_location_spec.rb +210 -0
- data/spec/sitemap_generator/sitemap_namer_spec.rb +96 -0
- data/spec/sitemap_generator/templates_spec.rb +24 -0
- data/spec/sitemap_generator/utilities/existence_spec.rb +26 -0
- data/spec/sitemap_generator/utilities/hash_spec.rb +57 -0
- data/spec/sitemap_generator/utilities/rounding_spec.rb +31 -0
- data/spec/sitemap_generator/utilities_spec.rb +101 -0
- data/spec/sitemap_generator/video_sitemap_spec.rb +117 -0
- data/spec/spec_helper.rb +24 -0
- data/spec/support/file_macros.rb +39 -0
- data/spec/support/schemas/siteindex.xsd +73 -0
- data/spec/support/schemas/sitemap-geo.xsd +41 -0
- data/spec/support/schemas/sitemap-mobile.xsd +32 -0
- data/spec/support/schemas/sitemap-news.xsd +159 -0
- data/spec/support/schemas/sitemap-pagemap.xsd +97 -0
- data/spec/support/schemas/sitemap-video.xsd +643 -0
- data/spec/support/schemas/sitemap.xsd +115 -0
- data/spec/support/xml_macros.rb +67 -0
- data/templates/sitemap.rb +27 -0
- 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
|