Skip to content

Commit 30df8f7

Browse files
authored
perf build class, better show_source (#43)
1 parent 29c1dc0 commit 30df8f7

File tree

1 file changed

+13
-36
lines changed

1 file changed

+13
-36
lines changed

lib/enum_machine/build_value_class.rb

Lines changed: 13 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -27,51 +27,28 @@ def can?(enum_value)
2727
enum_values.each do |enum_value|
2828
enum_name = enum_value.underscore
2929

30-
class_eval <<-RUBY, __FILE__, __LINE__ + 1
31-
# def active?
32-
# self == 'active'
33-
# end
34-
35-
def #{enum_name}?
36-
self == '#{enum_value}'
37-
end
38-
RUBY
30+
define_method(:"#{enum_name}?") do
31+
self == enum_value
32+
end
3933

4034
if machine&.transitions?
41-
class_eval <<-RUBY, __FILE__, __LINE__ + 1
42-
# def can_active?
43-
# possible_transitions.include?('canceled')
44-
# end
45-
46-
def can_#{enum_name}?
47-
possible_transitions.include?('#{enum_value}')
48-
end
49-
RUBY
35+
define_method(:"can_#{enum_name}?") do
36+
possible_transitions.include?(enum_value)
37+
end
5038
end
5139
end
5240

5341
aliases.each_key do |key|
54-
class_eval <<-RUBY, __FILE__, __LINE__ + 1
55-
# def forming?
56-
# machine.fetch_alias('forming').include?(self)
57-
# end
58-
59-
def #{key}?
60-
machine.fetch_alias('#{key}').include?(self)
61-
end
62-
RUBY
42+
define_method(:"#{key}?") do
43+
machine.fetch_alias(key).include?(self)
44+
end
6345
end
6446

6547
if i18n_scope
66-
class_eval <<-RUBY, __FILE__, __LINE__ + 1
67-
# def human_name
68-
# ::I18n.t(self, scope: "enums.product.state", default: self)
69-
# end
70-
71-
def human_name
72-
::I18n.t(self, scope: "enums.#{i18n_scope}", default: self)
73-
end
74-
RUBY
48+
full_scope = "enums.#{i18n_scope}"
49+
define_method(:human_name) do
50+
::I18n.t(self, scope: full_scope, default: self)
51+
end
7552
end
7653
end
7754
end

0 commit comments

Comments
 (0)