middleman-breadcrumbs 0.3.3 → 0.4.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: f28f33311aeea9d77f7ec173c0bdc852d06b968b
4
- data.tar.gz: 2bffa6753dc31d7b112d9a2f300a9660215017b3
3
+ metadata.gz: cb327948a5ee3560e75c08cc83863aeeaf8eb696
4
+ data.tar.gz: cf55b9802002900e4968cdbe9065abfb2f8d35a6
5
5
  SHA512:
6
- metadata.gz: 20bc774d51ba1982b1132b2e7c4342d2145e28895b97fc99bb6e38fe128575088e0bd1756ca54c7f0b4b85ca410776416e03ea5c280c92c054d86f84492913e9
7
- data.tar.gz: f3dbfdfdf09cb4a734bcad7aa714cb117f0a43c24fc393b1b10770a3f371acf9b8caabea33d13b79976bfbfa63578d937446e66bdff8ab3ef14e32a62ad99723
6
+ metadata.gz: 9c823d04dc7ab7a6a69b79e72284cb50a948dc290083617545acb21d65443f587f12666ab01a6a2e35788deccf28eb8195a8e56e536d7d5820ab2ea618aafc44
7
+ data.tar.gz: 3d878201540499d3e3d4fd584dac972279273be754810e0a75530d534079d03b3457a2737cb0839b74e27f67239d8cc2ad48172cb91c428e456739407213d1be
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.4.0 / 2016-04-26
6
+
7
+ * Create config options for default separator and wrapper. [#8]
8
+ * Require Middleman 4.
9
+
5
10
  ## 0.3.3 / 2015-12-09
6
11
 
7
12
  * Fix loading bug. [#6]
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # middleman-breadcrumbs
4
4
 
5
- Breadcrumbs helper for Middleman
5
+ Breadcrumbs helper for [Middleman](https://middlemanapp.com/)
6
6
 
7
7
  ## Installation
8
8
 
@@ -10,23 +10,28 @@ Install the gem as usual: put `gem 'middleman-breadcrumbs'` in Gemfile, then run
10
10
 
11
11
  Put `activate :breadcrumbs` in config.rb (*not* in the `configure :build` block).
12
12
 
13
- ## Usage
13
+ ## Configuration
14
+
15
+ This gem has two configuration options, which are set in the [usual way for Middleman extensions](https://middlemanapp.com/advanced/configuration/#configuring-extensions).
14
16
 
15
- In your view files, just call `breadcrumbs(current_page)` to display breadcrumbs.
17
+ <dl>
18
+ <dt>`:separator`</dt>
19
+ <dd>String that separates the breadcrumb levels. Default is ` > `.</dd>
20
+ <dt>`:wrapper`</dt>
21
+ <dd>Tag name (as a symbol) in which to wrap each breadcrumb level. Default is `nil`, which means no wrapping.</dd>
22
+ </dl>
16
23
 
17
- ### Options
24
+ For example, if you wanted to wrap the breadcrumb levels in `<li>` elements and separate them with bullets, you would put the following in `config.rb`:
18
25
 
19
- #### `:separator`
26
+ ```ruby
27
+ activate :breadcrumbs, separator: ' • ', wrapper: :li
28
+ ```
20
29
 
21
- The breadcrumb levels are separated with ` > ` by default. If you want a different separator, use the `:separator` option—e.g., `breadcrumbs(current_page, separator: '|||')`.
22
30
 
23
- #### `:wrapper`
31
+ ## Usage
24
32
 
25
- If you want to wrap each breadcrumb level in a tag, pass the tag name to the `:wrapper` option. For example, if you want your breadcrumbs in a list:
33
+ In your view files, just call `breadcrumbs(current_page)` to display breadcrumbs. If you want to override the separator or wrapper defined in the `config.rb` file, pass the appropriate options to the `breadcrumbs` method:
26
34
 
27
35
  ```erb
28
- <ul>
29
- <%= breadcrumbs current_page, wrapper: :li, separator: nil %>
30
- </ul>
36
+ <%= breadcrumbs(current_page, separator: ' ||| ', wrapper: :div) %>
31
37
  ```
32
- This will wrap each breadcrumb level in a `<li>` element.
@@ -1,5 +1,3 @@
1
1
  Dir[File.join File.dirname(__FILE__), 'middleman-breadcrumbs', '**', '*.rb'].each {|file| puts file; require file }
2
2
 
3
- Breadcrumbs.helpers BreadcrumbsHelper
4
-
5
- ::Middleman::Extensions.register :breadcrumbs, Breadcrumbs
3
+ ::Middleman::Extensions.register :breadcrumbs, Breadcrumbs
@@ -1,9 +1,32 @@
1
1
  require 'middleman'
2
2
  require File.join(File.dirname(__FILE__), 'version')
3
+ require 'rack/utils'
4
+ require 'padrino-helpers'
3
5
 
4
6
  class Breadcrumbs < Middleman::Extension
5
7
  include BreadcrumbsVersion
6
- def initialize(app, options_hash={}, &block)
8
+ include Padrino::Helpers
9
+
10
+ option :separator, ' > ', 'Default separator between breadcrumb levels'
11
+ option :wrapper, nil, 'Name of tag (as symbol) in which to wrap each breadcrumb level, or nil for no wrapping'
12
+
13
+ expose_to_template :breadcrumbs
14
+
15
+ def initialize(app, options_hash = {}, &block)
7
16
  super
17
+ @separator = options.separator
18
+ @wrapper = options.wrapper
19
+ end
20
+
21
+ def breadcrumbs(page, separator: @separator, wrapper: @wrapper)
22
+ hierarchy = [page]
23
+ hierarchy.unshift hierarchy.first.parent while hierarchy.first.parent
24
+ hierarchy.collect {|page| wrap link_to(page.data.title, "/#{page.path}"), wrapper: wrapper }.join(h separator)
25
+ end
26
+
27
+ private
28
+
29
+ def wrap(content, wrapper: wrapper)
30
+ wrapper ? content_tag(wrapper) { content } : content
8
31
  end
9
32
  end
@@ -1,3 +1,3 @@
1
1
  module BreadcrumbsVersion
2
- VERSION = '0.3.3'
2
+ VERSION = '0.4.0'
3
3
  end
@@ -14,10 +14,10 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.required_ruby_version = '>= 2.0'
16
16
 
17
- s.add_runtime_dependency "middleman", '>= 3.3.5'
17
+ s.add_runtime_dependency "middleman", '>= 4.0.0'
18
18
  [
19
19
  'byebug',
20
- ['guard', '~> 2.10.5'],
20
+ ['guard', '>= 2.10.5'],
21
21
  'guard-minitest',
22
22
  ['faker', '~> 1.5.0'],
23
23
  'rake'
@@ -1,35 +1,23 @@
1
1
  require_relative './spec_helper'
2
2
  require 'ostruct'
3
- require 'middleman-breadcrumbs/breadcrumbs_helper'
3
+ require 'middleman-breadcrumbs/breadcrumbs'
4
4
 
5
- describe BreadcrumbsHelper do
5
+ describe Breadcrumbs do
6
6
  before do
7
- @helper = Object.new
8
- @helper_class = @helper.singleton_class
9
- end
10
-
11
- describe '.included' do
12
- describe 'link_to is defined' do
13
- it 'does not include Padrino::Helpers' do
14
- methods = @helper_class.instance_methods
15
- @helper_class.stub :instance_methods, methods + [:link_to] do
16
- @helper_class.send :include, BreadcrumbsHelper
17
- @helper_class.wont_include Padrino::Helpers
18
- end
7
+ @app = Class.new do
8
+ [:after_configuration, :initialized, :instance_available].each do |method|
9
+ define_method(method) { true }
19
10
  end
20
- end
11
+ end.new
12
+ @helper = Breadcrumbs.new @app
13
+ end
21
14
 
22
- describe 'link_to is not defined' do
23
- it 'includes Padrino::Helpers' do
24
- @helper_class.send :include, BreadcrumbsHelper
25
- @helper_class.must_include Padrino::Helpers
26
- end
27
- end
15
+ it 'includes Padrino::Helpers' do
16
+ Breadcrumbs.must_include Padrino::Helpers
28
17
  end
29
18
 
30
19
  describe '#breadcrumbs' do
31
20
  before do
32
- @helper.singleton_class.send :include, BreadcrumbsHelper
33
21
  self.singleton_class.send :include, Padrino::Helpers
34
22
  @page = page
35
23
  end
@@ -52,7 +40,6 @@ describe BreadcrumbsHelper do
52
40
  describe 'specified' do
53
41
  it 'joins all links to parent pages with the specified separator' do
54
42
  separator = Faker::Lorem.characters(5)
55
-
56
43
  @helper.breadcrumbs(@page, separator: separator).must_equal breadcrumb_links.join separator
57
44
  end
58
45
 
@@ -64,8 +51,23 @@ describe BreadcrumbsHelper do
64
51
  end
65
52
 
66
53
  describe 'not specified' do
67
- it 'uses " > " as the separator' do
68
- @helper.breadcrumbs(@page).must_equal breadcrumb_links.join ' &gt; '
54
+ describe 'default separator' do
55
+ describe 'specified in config' do
56
+ before do
57
+ @default_separator = Faker::Lorem.characters(5)
58
+ @helper = Breadcrumbs.new @app, separator: @default_separator
59
+ end
60
+
61
+ it 'uses the specified default separator' do
62
+ @helper.breadcrumbs(@page).must_equal breadcrumb_links.join @default_separator
63
+ end
64
+ end
65
+
66
+ describe 'not specified in config' do
67
+ it 'uses " > " as the separator' do
68
+ @helper.breadcrumbs(@page).must_equal breadcrumb_links.join ' &gt; '
69
+ end
70
+ end
69
71
  end
70
72
  end
71
73
  end
@@ -80,8 +82,24 @@ describe BreadcrumbsHelper do
80
82
  end
81
83
 
82
84
  describe 'not specified' do
83
- it 'does not wrap breadcrumbs in tags' do
84
- @helper.breadcrumbs(@page, separator: nil).must_equal breadcrumb_links.join
85
+ describe 'default wrapper' do
86
+ describe 'specified in config' do
87
+ before do
88
+ @default_wrapper = Faker::Lorem.word.to_sym
89
+ @helper = Breadcrumbs.new @app, wrapper: @default_wrapper
90
+ end
91
+
92
+ it 'wraps breadcrumbs in the specified element type' do
93
+ wrapped_links = breadcrumb_links.collect {|link| content_tag(@default_wrapper) { link } }
94
+ @helper.breadcrumbs(@page, separator: nil).must_equal wrapped_links.join
95
+ end
96
+ end
97
+
98
+ describe 'not specified in config' do
99
+ it 'does not wrap breadcrumbs in tags' do
100
+ @helper.breadcrumbs(@page, separator: nil).must_equal breadcrumb_links.join
101
+ end
102
+ end
85
103
  end
86
104
  end
87
105
  end
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-breadcrumbs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marnen Laibow-Koser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-10 00:00:00.000000000 Z
11
+ date: 2016-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: middleman
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 3.3.5
19
+ version: 4.0.0
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
- version: 3.3.5
26
+ version: 4.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: byebug
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: :development
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: guard
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 2.10.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: 2.10.5
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: guard-minitest
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: faker
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: 1.5.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: 1.5.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
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: Breadcrumbs helper for Middleman
@@ -112,10 +112,9 @@ files:
112
112
  - bin/setup
113
113
  - lib/middleman-breadcrumbs.rb
114
114
  - lib/middleman-breadcrumbs/breadcrumbs.rb
115
- - lib/middleman-breadcrumbs/breadcrumbs_helper.rb
116
115
  - lib/middleman-breadcrumbs/version.rb
117
116
  - middleman-breadcrumbs.gemspec
118
- - spec/breadcrumbs_helper_spec.rb
117
+ - spec/breadcrumbs_spec.rb
119
118
  - spec/spec_helper.rb
120
119
  homepage: http://github.com/marnen/middleman-breadcrumbs
121
120
  licenses:
@@ -127,20 +126,20 @@ require_paths:
127
126
  - lib
128
127
  required_ruby_version: !ruby/object:Gem::Requirement
129
128
  requirements:
130
- - - '>='
129
+ - - ">="
131
130
  - !ruby/object:Gem::Version
132
131
  version: '2.0'
133
132
  required_rubygems_version: !ruby/object:Gem::Requirement
134
133
  requirements:
135
- - - '>='
134
+ - - ">="
136
135
  - !ruby/object:Gem::Version
137
136
  version: '0'
138
137
  requirements: []
139
138
  rubyforge_project:
140
- rubygems_version: 2.4.6
139
+ rubygems_version: 2.4.5
141
140
  signing_key:
142
141
  specification_version: 4
143
142
  summary: Breadcrumbs helper for Middleman
144
143
  test_files:
145
- - spec/breadcrumbs_helper_spec.rb
144
+ - spec/breadcrumbs_spec.rb
146
145
  - spec/spec_helper.rb
@@ -1,20 +0,0 @@
1
- require 'rack/utils'
2
- require 'padrino-helpers'
3
-
4
- module BreadcrumbsHelper
5
- def self.included(klass)
6
- klass.send(:include, Padrino::Helpers) unless klass.instance_methods.include? :link_to
7
- end
8
-
9
- def breadcrumbs(page, separator: ' > ', wrapper: nil)
10
- hierarchy = [page]
11
- hierarchy.unshift hierarchy.first.parent while hierarchy.first.parent
12
- hierarchy.collect {|page| wrap link_to(page.data.title, "/#{page.path}"), wrapper: wrapper }.join(h separator)
13
- end
14
-
15
- private
16
-
17
- def wrap(content, wrapper: wrapper)
18
- wrapper ? content_tag(wrapper) { content } : content
19
- end
20
- end