Sha256: c33471023b0bf3b2936c153e2591658f6b6efc302eaf27d911eff3f3b1f5978f
Contents?: true
Size: 1.86 KB
Versions: 1
Compression:
Stored size: 1.86 KB
Contents
module Hobo class ViewHints def self.enable ActiveSupport::Dependencies.load_paths |= ["#{RAILS_ROOT}/app/viewhints"] end def self.setter(name, default=nil, &block) ivname = name.to_s.remove(/\?$/) metaclass.send :define_method, name do |*args| if args.empty? val = instance_variable_get("@#{ivname}") if val.nil? val = default.is_a?(Proc) ? instance_eval(&default) : default instance_variable_set("@#{ivname}", val) end val else arg = if block instance_exec(*args, &block) else args.first end instance_variable_set("@#{ivname}", arg) end end end setter :model_name, proc { name.sub(/Hints$/, "") } setter :field_names, {} setter :field_help, {} setter :children, proc { model.dependent_collections.sort_by(&:to_s) } do |*args| args end setter :paginate?, proc { !sortable? } setter :sortable?, proc { defined?(ActiveRecord::Acts::List::InstanceMethods) && model < ActiveRecord::Acts::List::InstanceMethods && model.new.try.scope_condition == "1 = 1" } setter :inline_booleans, [] do |*args| if args[0] == true model.columns.select { |c| c.type == :boolean }.*.name else args.*.to_s end end # Accessors class << self def model @model ||= name.sub(/Hints$/, "").constantize end def field_name(field) field_names.fetch(field.to_sym, field.to_s.titleize) end def primary_children children.first end def secondary_children children.rest end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hobo-0.9.0 | lib/hobo/view_hints.rb |