Sha256: 41d5f2fa4acccb31219ca96bca55c37b6b01c8c72a038a410b9256c956746f06
Contents?: true
Size: 884 Bytes
Versions: 2
Compression:
Stored size: 884 Bytes
Contents
module ExpressTemplates module Components class ForEach < Components::Container attr :collection, :member def initialize(*args) iterator = args.shift options = args.first.kind_of?(Hash) ? args.shift : {} expander = args.shift @collection, @member = nil, (options[:as]||"item") if iterator.kind_of?(Symbol) @collection = iterator.to_s @member = collection.sub(/^@/, '').singularize elsif iterator.kind_of?(Proc) @collection = "(#{iterator.source}.call)" elsif iterator.kind_of?(String) @collection = "(#{iterator}.call)" else raise "ForEach unknown iterator: #{iterator}" end end def compile %Q((#{@collection}.each_with_index.map do |#{@member}, #{@member}_index|#{compile_children}\nend).join) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
express_templates-0.3.1 | lib/express_templates/components/for_each.rb |
express_templates-0.3.0 | lib/express_templates/components/for_each.rb |