middleman-search_engine_sitemap 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ae627731f21974a3a2e38d52098652c47040b6be
4
- data.tar.gz: 73712986634d22b38e255cc312d75f5458ab4e81
3
+ metadata.gz: 82d6ccd1ba637f06ce4a5dedd39154b24a4b9079
4
+ data.tar.gz: eddcd8d0e1c1f38d3b568e450396a5ccb321d3bf
5
5
  SHA512:
6
- metadata.gz: 1e71619fa7b3443298bb0c4d1d63eb9069cc3269f9330f5dc984ae927fb86db416287b8f1ff03e066eb88e20d41384f353f6002fa929ee97bd31ef072dc9cef4
7
- data.tar.gz: ef3cbab203d35d618eef89da51e0e7c186009eead3b072a6cd643959bf5481f16525f50a14e612e357a3618158635a703404171dd1c1422787e13c5362a4364e
6
+ metadata.gz: 509ad95ca794f96b6667c0981a97d09f12d293a1e348bc70e04ee056558866261d262f154c7e930b1fec3d7fddf75e53f00bdabff40f32d2e7d152d4f43e1456
7
+ data.tar.gz: 8a6a95138e433a28387542bd2570e56f9578260949c22a051e2c67f973dfecac7cf526483ebe357650e137dff80162f8d8210fcf2bbd75ca9089ef0152d1ac8c
data/.travis.yml CHANGED
@@ -1,7 +1,8 @@
1
1
  language: ruby
2
2
  cache: bundler
3
3
  rvm:
4
- - 1.9.3
5
4
  - 2.0.0
6
5
  - 2.1.0
7
6
  - 2.1.1
7
+ - 2.1.2
8
+ - 2.1.5
data/README.md CHANGED
@@ -24,10 +24,6 @@ And then execute:
24
24
 
25
25
  $ bundle
26
26
 
27
- Or install it yourself as:
28
-
29
- $ gem install middleman-search_engine_sitemap
30
-
31
27
  ## Usage
32
28
 
33
29
  Place the following inside your `config.rb`:
@@ -65,6 +61,8 @@ You would then be able to use `hidden: true` in place of `hide_from_sitemap: tru
65
61
 
66
62
  Pages have a priority of 0.5 and a change frequency of `monthly` by default.
67
63
 
64
+ ### Specifying priority and change frequency for a page
65
+
68
66
  You can change these values by passing in options to the `activate` directive:
69
67
 
70
68
  ```ruby
@@ -72,8 +70,6 @@ activate :search_engine_sitemap, default_priority: 0.5,
72
70
  default_change_frequency: "monthly"
73
71
  ```
74
72
 
75
- ### Specifying priority and change frequency for a page
76
-
77
73
  You can override the priority or change frequency for a particular page by using frontmatter:
78
74
 
79
75
  ```erb
@@ -106,6 +102,18 @@ Possible values are: `always`, `hourly`, `daily`, `weekly`, `monthly`, `yearly`,
106
102
 
107
103
  The default value is `monthly`.
108
104
 
105
+ ### Customising the URL
106
+
107
+ Sometimes, you might want to perform some processing the URL:
108
+
109
+ ```ruby
110
+ activate :search_engine_sitemap, process_url: -> (url) { url.chomp('/') }
111
+ ```
112
+
113
+ The example above would remove a trailing slash from a URL.
114
+
115
+ The value passed into `process_url` is any object that responds to `call`.
116
+
109
117
  ## Contributing
110
118
 
111
119
  1. Fork it ( http://github.com/Aupajo/middleman-search_engine_sitemap/fork )
@@ -11,6 +11,7 @@ module Middleman
11
11
  option :default_change_frequency, 'monthly', 'Default page priority for search engine sitemap'
12
12
  option :sitemap_xml_path, 'sitemap.xml', 'Path to search engine sitemap'
13
13
  option :exclude_attr, 'hide_from_sitemap'
14
+ option :process_url, nil, 'Proc for processing a URL'
14
15
 
15
16
  def after_configuration
16
17
  register_extension_templates
@@ -24,6 +25,10 @@ module Middleman
24
25
  is_page?(resource) && not_excluded?(resource)
25
26
  end
26
27
 
28
+ def process_url(url)
29
+ options.process_url ? options.process_url.call(url) : url
30
+ end
31
+
27
32
  helpers do
28
33
  def resources_for_sitemap
29
34
  sitemap.resources.select do |resource|
@@ -81,4 +86,4 @@ module Middleman
81
86
  end
82
87
  end
83
88
 
84
- ::Middleman::Extensions.register(:search_engine_sitemap, ::Middleman::SearchEngineSitemap::Extension)
89
+ ::Middleman::Extensions.register(:search_engine_sitemap, ::Middleman::SearchEngineSitemap::Extension)
@@ -2,10 +2,10 @@ xml.instruct!
2
2
  xml.urlset 'xmlns' => 'http://www.sitemaps.org/schemas/sitemap/0.9' do
3
3
  resources_for_sitemap.each do |page|
4
4
  xml.url do
5
- xml.loc File.join(url_root, page.url)
5
+ xml.loc extensions[:search_engine_sitemap].process_url(File.join(url_root, page.url))
6
6
  xml.lastmod File.mtime(page.source_file).iso8601
7
7
  xml.changefreq page.data.change_frequency || default_change_frequency
8
8
  xml.priority page.data.priority || default_priority
9
9
  end
10
10
  end
11
- end
11
+ end
@@ -1,5 +1,5 @@
1
1
  module Middleman
2
2
  module SearchEngineSitemap
3
- VERSION = "1.1.0"
3
+ VERSION = "1.2.0"
4
4
  end
5
5
  end
@@ -1,5 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require 'nokogiri'
3
+ require 'pathname'
3
4
 
4
5
  describe "Search engine sitemaps", :feature do
5
6
  include XmlHelpers
@@ -8,13 +9,13 @@ describe "Search engine sitemaps", :feature do
8
9
  run_site 'dummy' do
9
10
  set :url_root, 'http://example.com'
10
11
  activate :search_engine_sitemap
11
-
12
+
12
13
  ignore '/ignored.html'
13
14
  end
14
15
 
15
16
  visit '/sitemap.xml'
16
-
17
- schema = File.expand_path('../../../sitemap.xsd', __FILE__)
17
+
18
+ schema = Pathname(__dir__) + '../../sitemap.xsd'
18
19
  doc = Nokogiri::XML(last_response.body)
19
20
  expect(doc).to validate_against_schema(schema)
20
21
 
@@ -73,4 +74,21 @@ describe "Search engine sitemaps", :feature do
73
74
  expect(doc.to_s).not_to include('http://example.com/ignored/')
74
75
  expect(doc.to_s).not_to include('http://example.com/ignored-in-frontmatter/')
75
76
  end
76
- end
77
+
78
+ it "supports custom URL processing" do
79
+ run_site 'dummy' do
80
+ set :url_root, 'http://example.com'
81
+ activate :directory_indexes
82
+ activate :search_engine_sitemap, process_url: ->(url) { url.upcase }
83
+ end
84
+
85
+ visit '/sitemap.xml'
86
+ doc = Nokogiri::XML(last_response.body)
87
+
88
+ expect(doc).to contain_node('url').with_children(
89
+ 'loc' => 'HTTP://EXAMPLE.COM/HOME/',
90
+ 'priority' => '0.5',
91
+ 'changefreq' => 'monthly'
92
+ )
93
+ end
94
+ end
data/spec/spec_helper.rb CHANGED
@@ -7,8 +7,5 @@ support_files_pattern = File.expand_path('../support/**/*.rb', __FILE__)
7
7
  Dir.glob(support_files_pattern).each { |f| require f }
8
8
 
9
9
  RSpec.configure do |config|
10
- # Will be the default in RSpec 3
11
- config.treat_symbols_as_metadata_keys_with_true_values = true
12
-
13
10
  config.include MiddlemanServerHelpers, :feature
14
- end
11
+ end
@@ -2,19 +2,17 @@ module XmlHelpers
2
2
  extend RSpec::Matchers::DSL
3
3
 
4
4
  matcher :validate_against_schema do |schema|
5
- @schema = schema
6
-
7
5
  match do |actual|
8
- xsd = Nokogiri::XML::Schema(File.read(@schema))
6
+ xsd = Nokogiri::XML::Schema(schema.read)
9
7
  @validation_errors = xsd.validate(actual)
10
8
  @validation_errors.empty?
11
9
  end
12
10
 
13
- failure_message_for_should do |actual|
11
+ failure_message do |actual|
14
12
  num_errors = @validation_errors.length
15
13
  error_count = "#{num_errors} error#{'s' if num_errors > 1}"
16
14
 
17
- "expected XML to validate against #{@schema}, got #{error_count}:\n" +
15
+ "expected XML to validate against #{schema}, got #{error_count}:\n" +
18
16
  @validation_errors.each_with_index.map do |error, i|
19
17
  " #{i + 1}. #{error}"
20
18
  end.join("\n")
@@ -36,7 +34,7 @@ module XmlHelpers
36
34
  @attributes = attributes
37
35
  end
38
36
 
39
- failure_message_for_should do |doc|
37
+ failure_message do |doc|
40
38
  expected_xml = "<#{name}>\n"
41
39
 
42
40
  if @attributes
@@ -48,4 +46,4 @@ module XmlHelpers
48
46
  "expected XML to contain:\n\n#{expected_xml}\n\ninstead got:\n\n#{doc.to_s}"
49
47
  end
50
48
  end
51
- end
49
+ end
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-search_engine_sitemap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pete Nicholls
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-20 00:00:00.000000000 Z
11
+ date: 2014-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: middleman-core
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: builder
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.5'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.5'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: nokogiri
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  description: Adds a sitemap.xml file (following the sitemaps.org protocol) to your
@@ -102,8 +102,8 @@ executables: []
102
102
  extensions: []
103
103
  extra_rdoc_files: []
104
104
  files:
105
- - .gitignore
106
- - .travis.yml
105
+ - ".gitignore"
106
+ - ".travis.yml"
107
107
  - Gemfile
108
108
  - LICENSE.txt
109
109
  - README.md
@@ -133,17 +133,17 @@ require_paths:
133
133
  - lib
134
134
  required_ruby_version: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - '>='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  required_rubygems_version: !ruby/object:Gem::Requirement
140
140
  requirements:
141
- - - '>='
141
+ - - ">="
142
142
  - !ruby/object:Gem::Version
143
143
  version: '0'
144
144
  requirements: []
145
145
  rubyforge_project:
146
- rubygems_version: 2.0.3
146
+ rubygems_version: 2.2.2
147
147
  signing_key:
148
148
  specification_version: 4
149
149
  summary: Adds a sitemap.xml file to your Middleman site for search engines.