From f7e51cf1454cc8d38ecb07143e81d9e9b143d88e Mon Sep 17 00:00:00 2001 From: Ermolaev Andrey Date: Sun, 15 Dec 2024 21:33:10 +0300 Subject: [PATCH] perf build class, better show_source --- lib/enum_machine/build_value_class.rb | 49 +++++++-------------------- 1 file changed, 13 insertions(+), 36 deletions(-) diff --git a/lib/enum_machine/build_value_class.rb b/lib/enum_machine/build_value_class.rb index 99552cd..41c7346 100644 --- a/lib/enum_machine/build_value_class.rb +++ b/lib/enum_machine/build_value_class.rb @@ -27,51 +27,28 @@ def can?(enum_value) enum_values.each do |enum_value| enum_name = enum_value.underscore - class_eval <<-RUBY, __FILE__, __LINE__ + 1 - # def active? - # self == 'active' - # end - - def #{enum_name}? - self == '#{enum_value}' - end - RUBY + define_method(:"#{enum_name}?") do + self == enum_value + end if machine&.transitions? - class_eval <<-RUBY, __FILE__, __LINE__ + 1 - # def can_active? - # possible_transitions.include?('canceled') - # end - - def can_#{enum_name}? - possible_transitions.include?('#{enum_value}') - end - RUBY + define_method(:"can_#{enum_name}?") do + possible_transitions.include?(enum_value) + end end end aliases.each_key do |key| - class_eval <<-RUBY, __FILE__, __LINE__ + 1 - # def forming? - # machine.fetch_alias('forming').include?(self) - # end - - def #{key}? - machine.fetch_alias('#{key}').include?(self) - end - RUBY + define_method(:"#{key}?") do + machine.fetch_alias(key).include?(self) + end end if i18n_scope - class_eval <<-RUBY, __FILE__, __LINE__ + 1 - # def human_name - # ::I18n.t(self, scope: "enums.product.state", default: self) - # end - - def human_name - ::I18n.t(self, scope: "enums.#{i18n_scope}", default: self) - end - RUBY + full_scope = "enums.#{i18n_scope}" + define_method(:human_name) do + ::I18n.t(self, scope: full_scope, default: self) + end end end end