1
0
Fork 0
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:
Thorsten Böttger 2011-11-26 18:33:58 +01:00
parent 14061ca752
commit 052c79df01
5 changed files with 44 additions and 42 deletions

View file

@ -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')

View file

@ -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

View file

@ -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

View 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

View file

@ -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