| Module | Merb::Helpers::Text |
| In: |
merb-helpers/lib/merb-helpers/text_helpers.rb
|
Allows you to cycle through elements in an array
| values<Array>: | Array of objects to cycle through |
| values<Hash>: | Last element of array can be a hash with the key of :name to specify the name of the cycle |
<%= 5.times { cycle("odd! ","even! "} %>
Generates:
odd! even! odd! even! odd!
# File merb-helpers/lib/merb-helpers/text_helpers.rb, line 21
21: def cycle(*values)
22: options = extract_options_from_args!(values) || {}
23: key = (options[:name] || :default).to_sym
24: (@cycle_positions ||= {})[key] ||= {:position => -1, :values => values}
25: unless values == @cycle_positions[key][:values]
26: @cycle_positions[key] = {:position => -1, :values => values}
27: end
28: current = @cycle_positions[key][:position]
29: @cycle_positions[key][:position] = current + 1
30: values.at( (current + 1) % values.length).to_s
31: end
Allows you to reset a cycle
| name<Symbol|String>: | Name of the cycle |
True if successful, otherwise nil
<%= cycle("odd! ","even! ","what comes after even?") %> <%= cycle("odd! ","even! ","what comes after even?") %> <% reset_cycle %> <%= cycle("odd! ","even! ","what comes after even?") %>
Generates:
odd! even! odd!
# File merb-helpers/lib/merb-helpers/text_helpers.rb, line 53
53: def reset_cycle(name = :default)
54: (@cycle_positions[name.to_sym] = nil) &&
55: true if @cycle_positions && @cycle_positions[name.to_sym]
56: end