middleman-search_engine_sitemap 1.1.0 → 1.2.0

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