lib/fatcow/model.rb in fatcow-0.1.3 vs lib/fatcow/model.rb in fatcow-0.1.4

- old
+ new

@@ -15,46 +15,50 @@ add: -> { true } } included do def show_icon(**options) - current_state = find_icon_status(:FATCOW_ICON_SHOW_STATUSES) + current_state = find_icon_status(:FATCOW_ICON_SHOW_STATUSES, :DEFAULT_SHOW_STATUSES) return custom_icon(current_state, **options) if current_state custom_icon(nil, **options) if current_state.nil? end def form_icon(**options) - current_state = find_icon_status(:FATCOW_ICON_FORM_STATUSES) + current_state = find_icon_status(:FATCOW_ICON_FORM_STATUSES, :DEFAULT_FORM_STATUSES) return custom_icon(current_state, **options) if current_state custom_icon(nil, **options) if current_state.nil? end - def find_icon_status(statuses_const_key) + def find_icon_status(statuses_const_key, fallback_const_key) statuses = self.class.const_get statuses_const_key + fallback = self.class.const_get fallback_const_key + current_status = statuses.find { |status, proc| instance_exec(&proc) } + current_status = fallback.find { |status, proc| instance_exec(&proc) } if current_status.nil? return nil if current_status.nil? current_status[0] end def custom_icon(status, **options) icon = self.class.const_get :FATCOW_ICON icon.app = self if icon.app.nil? icon.status = status if icon.status != status - icon.size = options[:size] if options[:size] + icon.size = options[:size] if options[:size] && icon.size != options[:size] + icon.size = :regular unless options[:size] && icon.size != :regular icon end end class_methods do def has_icon (icon_name, **statuses) const_set :FATCOW_ICON, Fatcow::Icon.new(nil, icon_name) - const_set :FATCOW_ICON_SHOW_STATUSES, DEFAULT_SHOW_STATUSES.dup.merge(statuses[:show] || {}) - const_set :FATCOW_ICON_FORM_STATUSES, DEFAULT_FORM_STATUSES.dup.merge(statuses[:form] || {}) + const_set :FATCOW_ICON_SHOW_STATUSES, statuses[:show] || {} + const_set :FATCOW_ICON_FORM_STATUSES, statuses[:form] || {} end end end end