Sha256: 28cf7b06a85248929b005aa7459c2469bf000251a7495c20438911a54c3d1788

Contents?: true

Size: 836 Bytes

Versions: 12

Compression:

Stored size: 836 Bytes

Contents

module Liquid
  
  # increment is used in a place where one needs to insert a counter
  #     into a template, and needs the counter to survive across
  #     multiple instantiations of the template.
  #     (To achieve the survival, the application must keep the context)
  #
  #     if the variable does not exist, it is created with value 0.

  #   Hello: {% increment variable %}
  #
  # gives you:
  #
  #    Hello: 0
  #    Hello: 1
  #    Hello: 2
  #
  class Increment < Tag
    def initialize(tag_name, markup, tokens)      
      @variable = markup.strip

      super    
    end    
  
    def render(context)
      value = context.environments.first[@variable] ||= 0
      context.environments.first[@variable] = value + 1
      value.to_s
    end
  
    private
  end
  
  Template.register_tag('increment', Increment)
end

Version data entries

12 entries across 12 versions & 3 rubygems

Version Path
liquid-2.5.5 lib/liquid/tags/increment.rb
liquid-2.5.4 lib/liquid/tags/increment.rb
liquid-2.5.3 lib/liquid/tags/increment.rb
liquid-2.5.1 lib/liquid/tags/increment.rb
wordify_liquid-2.5.1 lib/liquid/tags/increment.rb
liquid-2.5.0 lib/liquid/tags/increment.rb
liquid-2.4.1 lib/liquid/tags/increment.rb
liquid-2.4.0 lib/liquid/tags/increment.rb
spinto-liquid-2.3.0.3 lib/liquid/tags/increment.rb
spinto-liquid-2.3.0.2 lib/liquid/tags/increment.rb
spinto-liquid-2.3.0.1 lib/liquid/tags/increment.rb
liquid-2.3.0 lib/liquid/tags/increment.rb