crummy 1.3.6 → 1.5.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.
data/README.textile CHANGED
@@ -10,7 +10,7 @@ Simply add the dependency to your Gemfile:
10
10
 
11
11
  <pre>
12
12
  <code>
13
- gem "crummy", "~> 1.3.6"
13
+ gem "crummy", "~> 1.5.0"
14
14
  </code>
15
15
  </pre>
16
16
 
@@ -98,6 +98,43 @@ A crumb with a nil argument for the link will output an unlinked crumb.
98
98
 
99
99
  With :format => :html_list you can specify additional params: :active_li_class, :li_class, :ul_class, :ul_id
100
100
 
101
+ h3. App-wide configuration
102
+
103
+ You have the option to pre-configure any of the Crummy options in an application-wide configuration. The options above are available to configure, with the exception of @:separator@, as well as many others.
104
+
105
+ The biggest difference is that @:separator@ is not an option. Instead, you have format-specific configuration options: @:html_separator@, @:xml_separator@, and @:html_list_separator@. @:separator@ can still be overridden in the view.
106
+
107
+ Insert the following in a file named @config/initializers/crummy.rb@:
108
+
109
+ <pre>
110
+ <code>
111
+ Crummy.configure do |config|
112
+ config.format = :xml
113
+ end
114
+ </code>
115
+ </pre>
116
+
117
+ Possible parameters for configuration are:
118
+
119
+ <pre>
120
+ <code>
121
+ :format
122
+ :links
123
+ :skip_if_blank
124
+ :html_separator
125
+ :xml_separator
126
+ :html_list_separator
127
+ :first_class
128
+ :last_class
129
+ :ul_id
130
+ :ul_class
131
+ :li_class
132
+ :active_li_class
133
+ </code>
134
+ </pre>
135
+
136
+ See @lib/crummy.rb@ for a list of these parameters and their defaults.
137
+
101
138
  h2. Notes
102
139
 
103
140
  Test library is at "Crummy Test":https://github.com/zachinglis/crummy-test
@@ -120,10 +157,11 @@ h2. Credits
120
157
  * "Max Riveiro":http://github.com/kavu
121
158
  * "Kamil K. Lemański":http://kml.jogger.pl
122
159
  * "Brian Cobb":http://bcobb.net/
123
- * "Kir Shatrov":http://shatrov.tk/
160
+ * "Kir Shatrov":http://github.com/shatrov ("Evrone company":http://evrone.com)
124
161
  * "sugilog":http://github.com/sugilog
125
162
  * "Trond Arve Nordheim":http://github.com/tanordheim
126
163
  * "Jan Szumiec":http://github.com/jasiek
127
164
  * "Jeff Browning":http://github.com/jbrowning
165
+ * "Bill Turner":http://github.com/billturner
128
166
 
129
167
  *Copyright (c) 2008-2011 Zach Inglis, released under the MIT license*
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.3.6
1
+ 1.5.0
data/lib/crummy.rb CHANGED
@@ -1,10 +1,49 @@
1
1
  module Crummy
2
+
3
+ def self.configuration
4
+ @configuration ||= Configuration.new
5
+ end
6
+
7
+ def self.configure
8
+ yield configuration
9
+ end
10
+
11
+ class Configuration
12
+ attr_accessor :format
13
+ attr_accessor :links
14
+ attr_accessor :skip_if_blank
15
+ attr_accessor :html_separator
16
+ attr_accessor :xml_separator
17
+ attr_accessor :html_list_separator
18
+ attr_accessor :first_class
19
+ attr_accessor :last_class
20
+ attr_accessor :ul_id
21
+ attr_accessor :ul_class
22
+ attr_accessor :li_class
23
+ attr_accessor :active_li_class
24
+
25
+ def initialize
26
+ @format = :html
27
+ @html_separator = " &raquo; "
28
+ @xml_separator = "crumb"
29
+ @html_list_separator = ''
30
+ @skip_if_blank = true
31
+ @links = true
32
+ @first_class = ''
33
+ @last_class = ''
34
+ @ul_id = ''
35
+ @ul_class = ''
36
+ @li_class = ''
37
+ @active_li_class = ''
38
+ end
39
+ end
40
+
2
41
  if defined?(Rails::Railtie)
3
42
  require 'crummy/railtie'
4
43
  else
5
44
  require 'crummy/action_controller'
6
45
  require 'crummy/action_view'
7
- ActionController::Base.send :include, Crummy::ControllerMethods
46
+ ActionController::Base.send :include, Crummy::ControllerMethods
8
47
  ActionView::Base.send :include, Crummy::ViewMethods
9
- end
48
+ end
10
49
  end
@@ -27,15 +27,13 @@ module Crummy
27
27
  # render_crumbs(" . ") #=> <a href="/">Home</a> . <a href="/businesses">Businesses</a>
28
28
  #
29
29
  def render_crumbs(crumbs, options = {})
30
- options[:format] = :html if options[:format] == nil
30
+ options[:skip_if_blank] ||= Crummy.configuration.skip_if_blank
31
31
  return '' if options[:skip_if_blank] && crumbs.count < 1
32
- if options[:separator] == nil
33
- options[:separator] = " &raquo; " if options[:format] == :html
34
- options[:separator] = "crumb" if options[:format] == :xml
35
- end
36
- options[:links] = true if options[:links] == nil
37
- options[:first_class] ||= ''
38
- options[:last_class] ||= ''
32
+ options[:format] ||= Crummy.configuration.format
33
+ options[:separator] ||= Crummy.configuration.send(:"#{options[:format]}_separator")
34
+ options[:links] ||= Crummy.configuration.links
35
+ options[:first_class] ||= Crummy.configuration.first_class
36
+ options[:last_class] ||= Crummy.configuration.last_class
39
37
 
40
38
  case options[:format]
41
39
  when :html
@@ -44,17 +42,15 @@ module Crummy
44
42
  end * options[:separator]
45
43
  crumb_string
46
44
  when :html_list
47
- # In html_list format there are no separator, but may be
48
- options[:separator] = "" if options[:separator] == nil
49
- # Lets set default values for special options of html_list format
50
- options[:active_li_class] = "" if options[:active_li_class] == nil
51
- options[:li_class] = "" if options[:li_class] == nil
52
- options[:ul_class] = "" if options[:ul_class] == nil
53
- options[:ul_id] = "" if options[:ul_id] == nil
45
+ # Let's set values for special options of html_list format
46
+ options[:active_li_class] ||= Crummy.configuration.active_li_class
47
+ options[:li_class] ||= Crummy.configuration.li_class
48
+ options[:ul_class] ||= Crummy.configuration.ul_class
49
+ options[:ul_id] ||= Crummy.configuration.ul_id
54
50
  crumb_string = crumbs.collect do |crumb|
55
51
  crumb_to_html_list(crumb, options[:links], options[:li_class], options[:active_li_class], options[:first_class], options[:last_class], (crumb == crumbs.first), (crumb == crumbs.last))
56
52
  end * options[:separator]
57
- crumb_string = "<ul class=\"#{options[:ul_class]}\" id=\"#{options[:ul_id]}\">" + crumb_string + "</ul>"
53
+ crumb_string = content_tag(:ul, crumb_string, :class => options[:ul_class], :id => options[:ul_id])
58
54
  crumb_string
59
55
  when :xml
60
56
  crumbs.collect do |crumb|
@@ -82,12 +78,12 @@ module Crummy
82
78
  html_classes << last_class if is_last
83
79
  html_classes << active_li_class unless url && links
84
80
  html_classes << li_class if !is_first && !is_last && url && links
85
- url && links ? "<li class=\"#{html_classes.join(' ').strip}\"><a href=\"#{url}\">#{name}</a></li>" : "<li class=\"#{html_classes.join(' ').strip}\"><span>#{name}</span></li>"
81
+ content_tag(:li, url && links ? link_to(name, url) : content_tag(:span, name), :class => html_classes.join(' ').strip)
86
82
  end
87
83
 
88
84
  def crumb_to_xml(crumb, links, separator, is_first, is_last)
89
85
  name, url = crumb
90
- url && links ? "<#{separator} href=\"#{url}\">#{name}</#{separator}>" : "<#{separator}>#{name}</#{separator}>"
86
+ content_tag(separator, name, :href => (url && links ? url : nil))
91
87
  end
92
88
  end
93
89
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crummy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.6
4
+ version: 1.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-24 00:00:00.000000000Z
12
+ date: 2012-02-07 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: Crummy is a simple and tasty way to add breadcrumbs to your Rails applications.
15
15
  email: zach+crummy@londonmade.co.uk