middleman-breadcrumbs 0.3.3 → 0.4.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: 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