Module: Constant::Controls::Script

Defined in:
lib/constant/controls/script.rb

Defined Under Namespace

Classes: Example

Class Method Summary collapse

Class Method Details

.top_level_import(origin_name: nil, inner_constants: nil) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/constant/controls/script.rb', line 6

def self.top_level_import(origin_name: nil, inner_constants: nil)
  origin_name ||= "SomeOrigin"
  inner_constants ||= ["SomeInnerConstant"]

  inner_constant_definitions = inner_constants.map do |inner_constant_name|
    "#{inner_constant_name} = ::Module.new"
  end

  inner_constant_resolutions = inner_constants.map do |inner_constant_name|
    "puts #{inner_constant_name}.name"
  end

  definitions = inner_constant_definitions.join("\n")
  resolutions = inner_constant_resolutions.join("\n")

  source = <<~RUBY
    require "constant"

    module #{origin_name}
    #{definitions}
    end

    include Constant::Import

    import #{origin_name}

    #{resolutions}
  RUBY

  Example.new(source)
end