gretel 3.0.0.beta3 → 3.0.0.beta4
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 +4 -4
 - data/CHANGELOG.md +2 -0
 - data/README.md +21 -3
 - data/lib/gretel/link.rb +2 -1
 - data/lib/gretel/renderer.rb +13 -14
 - data/lib/gretel/version.rb +1 -1
 - data/lib/gretel/view_helpers.rb +11 -1
 - data/test/helper_methods_test.rb +43 -1
 - metadata +1 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: f60e571dd44601cf9e016949eaf99b93e7620c32
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: eb4b93afaf41a5faaccd58e7fb6996e692c87eda
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: e755b624fad2a00daf9aaf8fbd2deb7f094d0b3b6a14137edc0a6111ba209067349527aa1d66ad898a2ce7a47376c776026f700ce2eb77ea0cba9768e8805bd5
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: cbedcf2047c946abbbd64ae8b6d2a2c8086ca6f17d7a0a77b7c3b655b73911dbec6e3da248f14b433237b18f2a2620b0ed5a9d0f67ccefa446ad01d898b150de
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -11,6 +11,8 @@ Version 3.0 
     | 
|
| 
       11 
11 
     | 
    
         
             
            * Support for rendering the breadcrumbs in different styles like ul- and ol lists, and for use with [Twitter Bootstrap](http://getbootstrap.com/). See the `:style` option in the readme for more info.
         
     | 
| 
       12 
12 
     | 
    
         
             
            * The `:show_root_alone` option is now called `:display_single_fragment` and can be used to display the breadcrumbs only when there are more than one link, also if it is not the root breadcrumb.
         
     | 
| 
       13 
13 
     | 
    
         
             
            * Links yielded from `<%= breadcrumbs do |links| %>` now have a `current?` helper that returns true if the link is the last in the trail.
         
     | 
| 
      
 14 
     | 
    
         
            +
            * New view helper: `parent_breadcrumb` returns the parent breadcrumb link (with `#key`, `#text`, and `#url`). You can supply options like `:autoroot` etc.
         
     | 
| 
      
 15 
     | 
    
         
            +
              If you supply a block, it will yield the parent breadcrumb if it is present.
         
     | 
| 
       14 
16 
     | 
    
         | 
| 
       15 
17 
     | 
    
         
             
            Version 2.1
         
     | 
| 
       16 
18 
     | 
    
         
             
            -----------
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -17,8 +17,11 @@ New in version 3.0 :muscle: 
     | 
|
| 
       17 
17 
     | 
    
         
             
            * Defining breadcrumbs using `Gretel::Crumbs.layout do ... end` in an initializer has been removed. See below for details on how to upgrade.
         
     | 
| 
       18 
18 
     | 
    
         
             
            * The `:show_root_alone` option is now called `:display_single_fragment` and can be used to hide the breadcrumbs when there is only one link, also if it is not the root breadcrumb.
         
     | 
| 
       19 
19 
     | 
    
         
             
              The old `:show_root_alone` option is still supported until Gretel version 4.0 and will show a deprecation warning when it's used.
         
     | 
| 
      
 20 
     | 
    
         
            +
            * Links yielded from `<%= breadcrumbs do |links| %>` now have a `current?` helper that returns true if the link is the last in the trail.
         
     | 
| 
      
 21 
     | 
    
         
            +
            * New view helper: `parent_breadcrumb` returns the parent breadcrumb link (with `#key`, `#text`, and `#url`). You can supply options like `:autoroot` etc.
         
     | 
| 
      
 22 
     | 
    
         
            +
              If you supply a block, it will yield the parent breadcrumb if it is present.
         
     | 
| 
       20 
23 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
            I hope you find these changes as useful as I did  
     | 
| 
      
 24 
     | 
    
         
            +
            I hope you find these changes as useful as I did – if you have more suggestions, please create an [Issue](https://github.com/lassebunk/gretel/issues) or [Pull Request](https://github.com/lassebunk/gretel/pulls).
         
     | 
| 
       22 
25 
     | 
    
         | 
| 
       23 
26 
     | 
    
         
             
            See below for more info or the [changelog](https://github.com/lassebunk/gretel/blob/master/CHANGELOG.md) for less significant changes.
         
     | 
| 
       24 
27 
     | 
    
         | 
| 
         @@ -28,7 +31,7 @@ Installation 
     | 
|
| 
       28 
31 
     | 
    
         
             
            In your *Gemfile*:
         
     | 
| 
       29 
32 
     | 
    
         | 
| 
       30 
33 
     | 
    
         
             
            ```ruby
         
     | 
| 
       31 
     | 
    
         
            -
            gem "gretel", "3.0.0. 
     | 
| 
      
 34 
     | 
    
         
            +
            gem "gretel", "3.0.0.beta4"
         
     | 
| 
       32 
35 
     | 
    
         
             
            ```
         
     | 
| 
       33 
36 
     | 
    
         | 
| 
       34 
37 
     | 
    
         
             
            And run:
         
     | 
| 
         @@ -230,6 +233,21 @@ If you supply a block to the `breadcrumbs` method, it will yield an array with t 
     | 
|
| 
       230 
233 
     | 
    
         
             
            <% end %>
         
     | 
| 
       231 
234 
     | 
    
         
             
            ```
         
     | 
| 
       232 
235 
     | 
    
         | 
| 
      
 236 
     | 
    
         
            +
            Getting the parent breadcrumb
         
     | 
| 
      
 237 
     | 
    
         
            +
            -----------------------------
         
     | 
| 
      
 238 
     | 
    
         
            +
             
     | 
| 
      
 239 
     | 
    
         
            +
            If you want to add a link to the parent breadcrumb in the trail, you can use the `parent_breadcrumb` view helper.
         
     | 
| 
      
 240 
     | 
    
         
            +
            By default it returns a link instance that has the properties `#key`, `#text`, and `#url`.
         
     | 
| 
      
 241 
     | 
    
         
            +
            You can supply options like `autoroot: false` etc.
         
     | 
| 
      
 242 
     | 
    
         
            +
             
     | 
| 
      
 243 
     | 
    
         
            +
            If you supply a block, it will yield the link if it is present:
         
     | 
| 
      
 244 
     | 
    
         
            +
             
     | 
| 
      
 245 
     | 
    
         
            +
            ```erb
         
     | 
| 
      
 246 
     | 
    
         
            +
            <% parent_breadcrumb do |parent| %>
         
     | 
| 
      
 247 
     | 
    
         
            +
              <%= link_to "Back to #{link.text}", link.url %>
         
     | 
| 
      
 248 
     | 
    
         
            +
            <% end %>
         
     | 
| 
      
 249 
     | 
    
         
            +
            ```
         
     | 
| 
      
 250 
     | 
    
         
            +
             
     | 
| 
       233 
251 
     | 
    
         
             
            Setting breadcrumb trails
         
     | 
| 
       234 
252 
     | 
    
         
             
            --------------------------------
         
     | 
| 
       235 
253 
     | 
    
         | 
| 
         @@ -277,7 +295,7 @@ The product view will now have the breadcrumb trail from the first page (reviews 
     | 
|
| 
       277 
295 
     | 
    
         
             
            The default trail param is `params[:trail]`. You can change it in an initializer:
         
     | 
| 
       278 
296 
     | 
    
         | 
| 
       279 
297 
     | 
    
         
             
            ```ruby
         
     | 
| 
       280 
     | 
    
         
            -
            Gretel 
     | 
| 
      
 298 
     | 
    
         
            +
            Gretel.trail_param = :other_param
         
     | 
| 
       281 
299 
     | 
    
         
             
            ```
         
     | 
| 
       282 
300 
     | 
    
         | 
| 
       283 
301 
     | 
    
         
             
            ### Note
         
     | 
    
        data/lib/gretel/link.rb
    CHANGED
    
    
    
        data/lib/gretel/renderer.rb
    CHANGED
    
    | 
         @@ -58,10 +58,10 @@ module Gretel 
     | 
|
| 
       58 
58 
     | 
    
         
             
                  content_tag(options[:container_tag], html, id: options[:id], class: options[:class])
         
     | 
| 
       59 
59 
     | 
    
         
             
                end
         
     | 
| 
       60 
60 
     | 
    
         | 
| 
       61 
     | 
    
         
            -
                #  
     | 
| 
       62 
     | 
    
         
            -
                def  
     | 
| 
      
 61 
     | 
    
         
            +
                # Array of links transformed by +options+ (like +:autoroot+ etc.) to be used in a view.
         
     | 
| 
      
 62 
     | 
    
         
            +
                def links_with(options = {})
         
     | 
| 
       63 
63 
     | 
    
         
             
                  options = options_for_render(options)
         
     | 
| 
       64 
     | 
    
         
            -
                   
     | 
| 
      
 64 
     | 
    
         
            +
                  links_for_render(options)
         
     | 
| 
       65 
65 
     | 
    
         
             
                end
         
     | 
| 
       66 
66 
     | 
    
         | 
| 
       67 
67 
     | 
    
         
             
                # Returns encoded trail for the breadcrumb.
         
     | 
| 
         @@ -69,6 +69,11 @@ module Gretel 
     | 
|
| 
       69 
69 
     | 
    
         
             
                  @trail ||= Gretel::Trail.encode(links)
         
     | 
| 
       70 
70 
     | 
    
         
             
                end
         
     | 
| 
       71 
71 
     | 
    
         | 
| 
      
 72 
     | 
    
         
            +
                # Proxy for +context.link_to+ that can be overridden by plugins.
         
     | 
| 
      
 73 
     | 
    
         
            +
                def link_to(*args)
         
     | 
| 
      
 74 
     | 
    
         
            +
                  context.link_to(*args)
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
       72 
77 
     | 
    
         
             
                private
         
     | 
| 
       73 
78 
     | 
    
         | 
| 
       74 
79 
     | 
    
         
             
                attr_reader :context, :breadcrumb_key, :breadcrumb_args
         
     | 
| 
         @@ -148,7 +153,7 @@ module Gretel 
     | 
|
| 
       148 
153 
     | 
    
         | 
| 
       149 
154 
     | 
    
         
             
                  # Handle autoroot
         
     | 
| 
       150 
155 
     | 
    
         
             
                  if options[:autoroot] && out.map(&:key).exclude?(:root) && Gretel::Crumbs.crumb_defined?(:root)
         
     | 
| 
       151 
     | 
    
         
            -
                    out.unshift *Gretel::Crumb.new( 
     | 
| 
      
 156 
     | 
    
         
            +
                    out.unshift *Gretel::Crumb.new(context, :root).links
         
     | 
| 
       152 
157 
     | 
    
         
             
                  end
         
     | 
| 
       153 
158 
     | 
    
         | 
| 
       154 
159 
     | 
    
         
             
                  # Handle show root alone
         
     | 
| 
         @@ -172,10 +177,10 @@ module Gretel 
     | 
|
| 
       172 
177 
     | 
    
         
             
                def render_semantic_fragment(fragment_tag, text, url, options = {})
         
     | 
| 
       173 
178 
     | 
    
         
             
                  if fragment_tag
         
     | 
| 
       174 
179 
     | 
    
         
             
                    text = content_tag(:span, text, itemprop: "title")
         
     | 
| 
       175 
     | 
    
         
            -
                    text =  
     | 
| 
      
 180 
     | 
    
         
            +
                    text = link_to(text, url, itemprop: "url") if url.present?
         
     | 
| 
       176 
181 
     | 
    
         
             
                    content_tag(fragment_tag, text, class: options[:class], itemscope: "", itemtype: "http://data-vocabulary.org/Breadcrumb")
         
     | 
| 
       177 
182 
     | 
    
         
             
                  elsif url.present?
         
     | 
| 
       178 
     | 
    
         
            -
                    content_tag(:div,  
     | 
| 
      
 183 
     | 
    
         
            +
                    content_tag(:div, link_to(content_tag(:span, text, itemprop: "title"), url, class: options[:class], itemprop: "url"), itemscope: "", itemtype: "http://data-vocabulary.org/Breadcrumb")
         
     | 
| 
       179 
184 
     | 
    
         
             
                  else
         
     | 
| 
       180 
185 
     | 
    
         
             
                    content_tag(:div, content_tag(:span, text, class: options[:class], itemprop: "title"), itemscope: "", itemtype: "http://data-vocabulary.org/Breadcrumb")
         
     | 
| 
       181 
186 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -184,10 +189,10 @@ module Gretel 
     | 
|
| 
       184 
189 
     | 
    
         
             
                # Renders regular, non-semantic fragment HTML.
         
     | 
| 
       185 
190 
     | 
    
         
             
                def render_nonsemantic_fragment(fragment_tag, text, url, options = {})
         
     | 
| 
       186 
191 
     | 
    
         
             
                  if fragment_tag
         
     | 
| 
       187 
     | 
    
         
            -
                    text =  
     | 
| 
      
 192 
     | 
    
         
            +
                    text = link_to(text, url) if url.present?
         
     | 
| 
       188 
193 
     | 
    
         
             
                    content_tag(fragment_tag, text, class: options[:class])
         
     | 
| 
       189 
194 
     | 
    
         
             
                  elsif url.present?
         
     | 
| 
       190 
     | 
    
         
            -
                     
     | 
| 
      
 195 
     | 
    
         
            +
                    link_to(text, url, class: options[:class])
         
     | 
| 
       191 
196 
     | 
    
         
             
                  elsif options[:class].present?
         
     | 
| 
       192 
197 
     | 
    
         
             
                    content_tag(:span, text, class: options[:class])
         
     | 
| 
       193 
198 
     | 
    
         
             
                  else
         
     | 
| 
         @@ -195,12 +200,6 @@ module Gretel 
     | 
|
| 
       195 
200 
     | 
    
         
             
                  end
         
     | 
| 
       196 
201 
     | 
    
         
             
                end
         
     | 
| 
       197 
202 
     | 
    
         | 
| 
       198 
     | 
    
         
            -
                # Renders a link. It is really just a proxy for +link_to+, but this can be
         
     | 
| 
       199 
     | 
    
         
            -
                # used in plugins that want to change how links are rendered.
         
     | 
| 
       200 
     | 
    
         
            -
                def render_link(name, url, options = {})
         
     | 
| 
       201 
     | 
    
         
            -
                  link_to(name, url, options)
         
     | 
| 
       202 
     | 
    
         
            -
                end
         
     | 
| 
       203 
     | 
    
         
            -
             
     | 
| 
       204 
203 
     | 
    
         
             
                # Proxy to view context
         
     | 
| 
       205 
204 
     | 
    
         
             
                def method_missing(method, *args, &block)
         
     | 
| 
       206 
205 
     | 
    
         
             
                  context.send(method, *args, &block)
         
     | 
    
        data/lib/gretel/version.rb
    CHANGED
    
    
    
        data/lib/gretel/view_helpers.rb
    CHANGED
    
    | 
         @@ -25,12 +25,22 @@ module Gretel 
     | 
|
| 
       25 
25 
     | 
    
         
             
                #   <% end %>
         
     | 
| 
       26 
26 
     | 
    
         
             
                def breadcrumbs(options = {}, &block)
         
     | 
| 
       27 
27 
     | 
    
         
             
                  if block_given?
         
     | 
| 
       28 
     | 
    
         
            -
                    gretel_renderer. 
     | 
| 
      
 28 
     | 
    
         
            +
                    yield gretel_renderer.links_with(options)
         
     | 
| 
       29 
29 
     | 
    
         
             
                  else
         
     | 
| 
       30 
30 
     | 
    
         
             
                    gretel_renderer.render(options)
         
     | 
| 
       31 
31 
     | 
    
         
             
                  end
         
     | 
| 
       32 
32 
     | 
    
         
             
                end
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
      
 34 
     | 
    
         
            +
                # Returns or yields parent breadcrumb (second-to-last in the trail) if it is present.
         
     | 
| 
      
 35 
     | 
    
         
            +
                def parent_breadcrumb(options = {}, &block)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  parent = gretel_renderer.links_with(options)[-2]
         
     | 
| 
      
 37 
     | 
    
         
            +
                  if block_given? && parent
         
     | 
| 
      
 38 
     | 
    
         
            +
                    yield parent
         
     | 
| 
      
 39 
     | 
    
         
            +
                  else
         
     | 
| 
      
 40 
     | 
    
         
            +
                    parent
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
       34 
44 
     | 
    
         
             
                # Encoded breadcrumb trail to be used in URLs.
         
     | 
| 
       35 
45 
     | 
    
         
             
                def breadcrumb_trail
         
     | 
| 
       36 
46 
     | 
    
         
             
                  gretel_renderer.trail
         
     | 
    
        data/test/helper_methods_test.rb
    CHANGED
    
    | 
         @@ -153,6 +153,40 @@ class HelperMethodsTest < ActionView::TestCase 
     | 
|
| 
       153 
153 
     | 
    
         
             
                              [:multiple_links_with_parent, "Contact form", "/about/contact/form"]], out
         
     | 
| 
       154 
154 
     | 
    
         
             
              end
         
     | 
| 
       155 
155 
     | 
    
         | 
| 
      
 156 
     | 
    
         
            +
              test "parent breadcrumb" do
         
     | 
| 
      
 157 
     | 
    
         
            +
                breadcrumb :multiple_links_with_parent
         
     | 
| 
      
 158 
     | 
    
         
            +
             
     | 
| 
      
 159 
     | 
    
         
            +
                parent = parent_breadcrumb
         
     | 
| 
      
 160 
     | 
    
         
            +
                assert_equal [:multiple_links_with_parent, "Contact", "/about/contact"],
         
     | 
| 
      
 161 
     | 
    
         
            +
                             [parent.key, parent.text, parent.url]
         
     | 
| 
      
 162 
     | 
    
         
            +
              end
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
              test "yields parent breadcrumb" do
         
     | 
| 
      
 165 
     | 
    
         
            +
                breadcrumb :multiple_links_with_parent
         
     | 
| 
      
 166 
     | 
    
         
            +
             
     | 
| 
      
 167 
     | 
    
         
            +
                out = parent_breadcrumb do |parent|
         
     | 
| 
      
 168 
     | 
    
         
            +
                  [parent.key, parent.text, parent.url]
         
     | 
| 
      
 169 
     | 
    
         
            +
                end
         
     | 
| 
      
 170 
     | 
    
         
            +
                assert_equal [:multiple_links_with_parent, "Contact", "/about/contact"],
         
     | 
| 
      
 171 
     | 
    
         
            +
                             out
         
     | 
| 
      
 172 
     | 
    
         
            +
              end
         
     | 
| 
      
 173 
     | 
    
         
            +
             
     | 
| 
      
 174 
     | 
    
         
            +
              test "parent breadcrumb returns nil if not present" do
         
     | 
| 
      
 175 
     | 
    
         
            +
                breadcrumb :basic
         
     | 
| 
      
 176 
     | 
    
         
            +
             
     | 
| 
      
 177 
     | 
    
         
            +
                assert_nil parent_breadcrumb(autoroot: false)
         
     | 
| 
      
 178 
     | 
    
         
            +
              end
         
     | 
| 
      
 179 
     | 
    
         
            +
             
     | 
| 
      
 180 
     | 
    
         
            +
              test "parent breadcrumb yields only if present" do
         
     | 
| 
      
 181 
     | 
    
         
            +
                breadcrumb :basic
         
     | 
| 
      
 182 
     | 
    
         
            +
             
     | 
| 
      
 183 
     | 
    
         
            +
                out = parent_breadcrumb(autoroot: false) do
         
     | 
| 
      
 184 
     | 
    
         
            +
                  "yielded"
         
     | 
| 
      
 185 
     | 
    
         
            +
                end
         
     | 
| 
      
 186 
     | 
    
         
            +
             
     | 
| 
      
 187 
     | 
    
         
            +
                assert_nil out
         
     | 
| 
      
 188 
     | 
    
         
            +
              end
         
     | 
| 
      
 189 
     | 
    
         
            +
             
     | 
| 
       156 
190 
     | 
    
         
             
              test "sets current on last link in array" do
         
     | 
| 
       157 
191 
     | 
    
         
             
                breadcrumb :multiple_links_with_parent
         
     | 
| 
       158 
192 
     | 
    
         | 
| 
         @@ -279,7 +313,7 @@ class HelperMethodsTest < ActionView::TestCase 
     | 
|
| 
       279 
313 
     | 
    
         
             
              end
         
     | 
| 
       280 
314 
     | 
    
         | 
| 
       281 
315 
     | 
    
         
             
              test "different trail param" do
         
     | 
| 
       282 
     | 
    
         
            -
                Gretel 
     | 
| 
      
 316 
     | 
    
         
            +
                Gretel.trail_param = :mytest
         
     | 
| 
       283 
317 
     | 
    
         
             
                params[:mytest] = "667ea523f92bdb3a086494575b18f587170e482b_W1siYmFzaWMiLCJBYm91dCIsMCwiL2Fib3V0Il1d"
         
     | 
| 
       284 
318 
     | 
    
         
             
                breadcrumb :multiple_links
         
     | 
| 
       285 
319 
     | 
    
         | 
| 
         @@ -287,6 +321,14 @@ class HelperMethodsTest < ActionView::TestCase 
     | 
|
| 
       287 
321 
     | 
    
         
             
                             breadcrumbs
         
     | 
| 
       288 
322 
     | 
    
         
             
              end
         
     | 
| 
       289 
323 
     | 
    
         | 
| 
      
 324 
     | 
    
         
            +
              test "unknown trail" do
         
     | 
| 
      
 325 
     | 
    
         
            +
                params[:trail] = "notfound"
         
     | 
| 
      
 326 
     | 
    
         
            +
                breadcrumb :multiple_links
         
     | 
| 
      
 327 
     | 
    
         
            +
             
     | 
| 
      
 328 
     | 
    
         
            +
                assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <a href="/about/contact">Contact</a> › <span class="current">Contact form</span></div>},
         
     | 
| 
      
 329 
     | 
    
         
            +
                             breadcrumbs
         
     | 
| 
      
 330 
     | 
    
         
            +
              end
         
     | 
| 
      
 331 
     | 
    
         
            +
             
     | 
| 
       290 
332 
     | 
    
         
             
              # Configuration reload
         
     | 
| 
       291 
333 
     | 
    
         | 
| 
       292 
334 
     | 
    
         
             
              test "reload configuration when file is changed" do
         
     |