Class: ActiveSupport::CodeGenerator
- Defined in:
- lib/active_support/code_generator.rb
Overview
:nodoc:
Defined Under Namespace
Classes: MethodSet
Class Method Summary collapse
Instance Method Summary collapse
- #class_eval {|@sources| ... } ⇒ Object
- #define_cached_method(canonical_name, namespace:, as: nil, &block) ⇒ Object
- #execute ⇒ Object
-
#initialize(owner, path, line) ⇒ CodeGenerator
constructor
A new instance of CodeGenerator.
Constructor Details
#initialize(owner, path, line) ⇒ CodeGenerator
Returns a new instance of CodeGenerator.
53 54 55 56 57 58 59 |
# File 'lib/active_support/code_generator.rb', line 53 def initialize(owner, path, line) @owner = owner @path = path @line = line @namespaces = Hash.new { |h, k| h[k] = MethodSet.new(k) } @sources = [] end |
Class Method Details
.batch(owner, path, line) ⇒ Object
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/active_support/code_generator.rb', line 41 def batch(owner, path, line) if owner.is_a?(CodeGenerator) yield owner else instance = new(owner, path, line) result = yield instance instance.execute result end end |
Instance Method Details
#class_eval {|@sources| ... } ⇒ Object
61 62 63 |
# File 'lib/active_support/code_generator.rb', line 61 def class_eval yield @sources end |
#define_cached_method(canonical_name, namespace:, as: nil, &block) ⇒ Object
65 66 67 |
# File 'lib/active_support/code_generator.rb', line 65 def define_cached_method(canonical_name, namespace:, as: nil, &block) @namespaces[namespace].define_cached_method(canonical_name, as: as, &block) end |
#execute ⇒ Object
69 70 71 72 73 74 75 76 77 |
# File 'lib/active_support/code_generator.rb', line 69 def execute @namespaces.each_value do |method_set| method_set.apply(@owner, @path, @line - 1) end unless @sources.empty? @owner.class_eval("# frozen_string_literal: true\n" + @sources.join(";"), @path, @line - 1) end end |