Sha256: 67bf0812de5e9b48a0d2c59858af9b7ca8172f685f96181509e7c58213d36d0e

Contents?: true

Size: 946 Bytes

Versions: 12

Compression:

Stored size: 946 Bytes

Contents

module Liquid

  # decrement 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.
  #     NOTE: decrement is a pre-decrement, --i,
  #           while increment is post:      i++.
  #
  #     (To achieve the survival, the application must keep the context)
  #
  #     if the variable does not exist, it is created with value 0.

  #   Hello: {% decrement variable %}
  #
  # gives you:
  #
  #    Hello: -1
  #    Hello: -2
  #    Hello: -3
  #
  class Decrement < Tag
    def initialize(tag_name, markup, options)
      super
      @variable = markup.strip
    end

    def render(context)
      value = context.environments.first[@variable] ||= 0
      value = value - 1
      context.environments.first[@variable] = value
      value.to_s
    end

    private
  end

  Template.register_tag('decrement'.freeze, Decrement)
end

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
locomotivecms-liquid-4.0.0 lib/liquid/tags/decrement.rb
liquid-3.0.6 lib/liquid/tags/decrement.rb
liquid-3.0.5 lib/liquid/tags/decrement.rb
liquid-3.0.4 lib/liquid/tags/decrement.rb
liquid-3.0.3 lib/liquid/tags/decrement.rb
liquid-3.0.2 lib/liquid/tags/decrement.rb
locomotivecms-liquid-4.0.0.alpha2 lib/liquid/tags/decrement.rb
locomotivecms-liquid-4.0.0.alpha1 lib/liquid/tags/decrement.rb
locomotivecms-liquid-4.0.0.alpha lib/liquid/tags/decrement.rb
liquid-3.0.1 lib/liquid/tags/decrement.rb
liquid-3.0.0 lib/liquid/tags/decrement.rb
liquid-3.0.0.rc1 lib/liquid/tags/decrement.rb