class DissociatedIntrospection::WrapInModules

Attributes

ruby_code[R]

Public Class Methods

new(ruby_code:) click to toggle source

@param [DissociatedIntrospection::RubyCode] ruby_code

# File lib/dissociated_introspection/wrap_in_modules.rb, line 4
def initialize(ruby_code:)
  @ruby_code = ruby_code
end

Public Instance Methods

call(modules:) click to toggle source

@param [String] modules @return [DissociatedIntrospection::RubyCode]

# File lib/dissociated_introspection/wrap_in_modules.rb, line 10
def call(modules:)
  return ruby_code if modules.nil? || modules.empty?
  wrap_in_modules(modules)
end

Private Instance Methods

wrap_in_modules(modules) click to toggle source
# File lib/dissociated_introspection/wrap_in_modules.rb, line 19
def wrap_in_modules(modules)
  ruby_string = ruby_code.source_from_ast
  modules.split("::").reverse.each do |module_name|
    ruby_string = wrap_module(module_name, ruby_string)
  end
  RubyCode.build_from_source(ruby_string, parse_with_comments: ruby_code.comments?)
end
wrap_module(module_name, ruby_string) click to toggle source
# File lib/dissociated_introspection/wrap_in_modules.rb, line 27
    def wrap_module(module_name, ruby_string)
      <<-RUBY
    module #{module_name}
      #{ruby_string}
    end
      RUBY
    end