Sha256: c80dc2d6f9a3205c89b799fc6ea966364f976fd0a25dfdb03d9955f065f99205
Contents?: true
Size: 1.68 KB
Versions: 2
Compression:
Stored size: 1.68 KB
Contents
module Formic class Base attr_reader :page, :options attr_accessor :template, :content def self.default_template given_default_template @template = given_default_template end def self.template @template || self.superclass.template end def template return @template || self.class.template end def initialize page, *args, &block @page = page @options = {:class => []} _initialize *args, &block @options[:class].unshift( self.class.to_s.split('::').last.underscore ) self.formics.unshift self end def to_s rendered = self.page.render :partial => self.template, :locals => {:element => self} self.formics.shift return rendered end def method_missing method, *args, &block _initialize *args, &block self.add_class(method.to_s) return self end def _initialize options={}, &block self.merge_options options @content = block if block_given? return self end def has_class? classname return self.options[:class].include? classname end def formics @page.instance_variable_set(:@formics, []) unless @page.instance_variable_get(:@formics) @page.instance_variable_get(:@formics) end def merge_options new_options classes = [@options[:class], new_options[:class]].reject {|element| element.nil?} classes = classes.flatten.join(' ').split(' ').uniq @options.merge!(new_options).merge!(:class => classes) end def add_class classname self.options[:class].push classname end def options @options[:class] = @options[:class].uniq return @options end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
formic-0.2.5 | lib/formic/base.rb |
formic-0.2.1 | lib/formic/base.rb |