mirror of
https://github.com/aasm/aasm
synced 2023-03-27 23:22:41 -04:00
locator is a supporting class
This commit is contained in:
parent
14061ca752
commit
052c79df01
5 changed files with 44 additions and 42 deletions
|
@ -5,7 +5,7 @@ require File.join(File.dirname(__FILE__), 'aasm', 'base')
|
|||
require File.join(File.dirname(__FILE__), 'aasm', 'supporting_classes', 'state_transition')
|
||||
require File.join(File.dirname(__FILE__), 'aasm', 'supporting_classes', 'event')
|
||||
require File.join(File.dirname(__FILE__), 'aasm', 'supporting_classes', 'state')
|
||||
require File.join(File.dirname(__FILE__), 'aasm', 'supporting_classes', 'localizer')
|
||||
require File.join(File.dirname(__FILE__), 'aasm', 'state_machine')
|
||||
require File.join(File.dirname(__FILE__), 'aasm', 'persistence')
|
||||
require File.join(File.dirname(__FILE__), 'aasm', 'aasm')
|
||||
require File.join(File.dirname(__FILE__), 'aasm', 'localizer')
|
||||
|
|
|
@ -67,7 +67,7 @@ module AASM
|
|||
end
|
||||
|
||||
def human_event_name(event)
|
||||
AASM::Localizer.new.human_event_name(self, event)
|
||||
AASM::SupportingClasses::Localizer.new.human_event_name(self, event)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -106,7 +106,7 @@ module AASM
|
|||
end
|
||||
|
||||
def human_state
|
||||
AASM::Localizer.new.human_state(self)
|
||||
AASM::SupportingClasses::Localizer.new.human_state(self)
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
module AASM
|
||||
class Localizer
|
||||
def human_event_name(klass, event)
|
||||
defaults = ancestors_list(klass).map do |ancestor|
|
||||
:"#{i18n_scope(klass)}.events.#{i18n_klass(ancestor)}.#{event}"
|
||||
end << event.to_s.humanize
|
||||
|
||||
I18n.translate(defaults.shift, :default => defaults, :raise => true)
|
||||
end
|
||||
|
||||
def human_state(obj)
|
||||
klass = obj.class
|
||||
defaults = ancestors_list(klass).map do |ancestor|
|
||||
:"#{i18n_scope(klass)}.attributes.#{i18n_klass(ancestor)}.#{klass.aasm_column}.#{obj.aasm_current_state}"
|
||||
end << obj.aasm_current_state.to_s.humanize
|
||||
|
||||
I18n.translate(defaults.shift, :default => defaults, :raise => true)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# added for rails 2.x compatibility
|
||||
def i18n_scope(klass)
|
||||
klass.respond_to?(:i18n_scope) ? klass.i18n_scope : :activerecord
|
||||
end
|
||||
|
||||
# added for rails < 3.0.3 compatibility
|
||||
def i18n_klass(klass)
|
||||
klass.model_name.respond_to?(:i18n_key) ? klass.model_name.i18n_key : klass.name.underscore
|
||||
end
|
||||
|
||||
def ancestors_list(klass)
|
||||
klass.ancestors.select do |ancestor|
|
||||
ancestor.respond_to?(:model_name) unless ancestor == ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
end
|
||||
end # AASM
|
40
lib/aasm/supporting_classes/localizer.rb
Normal file
40
lib/aasm/supporting_classes/localizer.rb
Normal file
|
@ -0,0 +1,40 @@
|
|||
module AASM
|
||||
module SupportingClasses
|
||||
class Localizer
|
||||
def human_event_name(klass, event)
|
||||
defaults = ancestors_list(klass).map do |ancestor|
|
||||
:"#{i18n_scope(klass)}.events.#{i18n_klass(ancestor)}.#{event}"
|
||||
end << event.to_s.humanize
|
||||
|
||||
I18n.translate(defaults.shift, :default => defaults, :raise => true)
|
||||
end
|
||||
|
||||
def human_state(obj)
|
||||
klass = obj.class
|
||||
defaults = ancestors_list(klass).map do |ancestor|
|
||||
:"#{i18n_scope(klass)}.attributes.#{i18n_klass(ancestor)}.#{klass.aasm_column}.#{obj.aasm_current_state}"
|
||||
end << obj.aasm_current_state.to_s.humanize
|
||||
|
||||
I18n.translate(defaults.shift, :default => defaults, :raise => true)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# added for rails 2.x compatibility
|
||||
def i18n_scope(klass)
|
||||
klass.respond_to?(:i18n_scope) ? klass.i18n_scope : :activerecord
|
||||
end
|
||||
|
||||
# added for rails < 3.0.3 compatibility
|
||||
def i18n_klass(klass)
|
||||
klass.model_name.respond_to?(:i18n_key) ? klass.model_name.i18n_key : klass.name.underscore
|
||||
end
|
||||
|
||||
def ancestors_list(klass)
|
||||
klass.ancestors.select do |ancestor|
|
||||
ancestor.respond_to?(:model_name) unless ancestor == ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
end
|
||||
end # SupportingClasses
|
||||
end # AASM
|
|
@ -18,7 +18,7 @@ class LocalizerTestModel < ActiveRecord::Base
|
|||
aasm_event :open
|
||||
end
|
||||
|
||||
describe AASM::Localizer do
|
||||
describe AASM::SupportingClasses::Localizer do
|
||||
before(:all) do
|
||||
I18n.load_path << 'spec/en.yml'
|
||||
I18n.default_locale = :en
|
||||
|
|
Loading…
Add table
Reference in a new issue