diff --git a/lib/aasm/core/event.rb b/lib/aasm/core/event.rb index fed9e09d..b3722820 100644 --- a/lib/aasm/core/event.rb +++ b/lib/aasm/core/event.rb @@ -4,7 +4,7 @@ module AASM::Core class Event include AASM::DslHelper - attr_reader :name, :state_machine, :options + attr_reader :name, :state_machine, :options, :default_display_name def initialize(name, state_machine, options = {}, &block) @name = name @@ -13,6 +13,7 @@ def initialize(name, state_machine, options = {}, &block) @valid_transitions = {} @guards = Array(options[:guard] || options[:guards] || options[:if]) @unless = Array(options[:unless]) #TODO: This could use a better name + @default_display_name = name.to_s.gsub(/_/, ' ').capitalize # from aasm4 @options = options # QUESTION: .dup ? diff --git a/lib/aasm/core/state.rb b/lib/aasm/core/state.rb index 5c4d4ed0..b32455cc 100644 --- a/lib/aasm/core/state.rb +++ b/lib/aasm/core/state.rb @@ -2,7 +2,7 @@ module AASM::Core class State - attr_reader :name, :state_machine, :options + attr_reader :name, :state_machine, :options, :default_display_name def initialize(name, klass, state_machine, options={}) @name = name diff --git a/lib/aasm/localizer.rb b/lib/aasm/localizer.rb index acb7d4b3..41da4ca1 100644 --- a/lib/aasm/localizer.rb +++ b/lib/aasm/localizer.rb @@ -5,7 +5,7 @@ def human_event_name(klass, event) list << :"#{i18n_scope(klass)}.events.#{i18n_klass(ancestor)}.#{event}" list end - translate_queue(checklist) || I18n.translate(checklist.shift, :default => event.to_s.gsub(/_/, ' ').capitalize) + translate_queue(checklist) || I18n.translate(checklist.shift, :default => default_display_name(event)) end def human_state_name(klass, state) @@ -14,7 +14,7 @@ def human_state_name(klass, state) list << item_for(klass, state, ancestor, :old_style => true) list end - translate_queue(checklist) || I18n.translate(checklist.shift, :default => state.to_s.gsub(/_/, ' ').capitalize) + translate_queue(checklist) || I18n.translate(checklist.shift, :default => default_display_name(state)) end private @@ -52,5 +52,13 @@ def ancestors_list(klass) ancestor.respond_to?(:model_name) && not_active_record_base end end + + def default_display_name(object) # Can use better arguement name + if object.respond_to?(:default_display_name) + object.default_display_name + else + object.to_s.gsub(/_/, ' ').capitalize + end + end end end # AASM