Class: Hanami::CLI::RubyFileGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/hanami/cli/ruby_file_generator.rb

Overview

Since:

  • 2.0.0

Defined Under Namespace

Classes: GeneratedUnparseableCodeError

Constant Summary collapse

INDENT =

Since:

  • 2.0.0

"  "

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(class_name: nil, parent_class: nil, modules: [], header: [], body: []) ⇒ RubyFileGenerator

Returns a new instance of RubyFileGenerator.

Since:

  • 2.0.0



42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/hanami/cli/ruby_file_generator.rb', line 42

def initialize(
  class_name: nil,
  parent_class: nil,
  modules: [],
  header: [],
  body: []
)
  @class_name = class_name
  @parent_class = parent_class
  @modules = modules
  @header = header.any? ? (header + [""]) : []
  @body = body
end

Class Method Details

.class(class_name, **args) ⇒ Object

Since:

  • 2.0.0



28
29
30
# File 'lib/hanami/cli/ruby_file_generator.rb', line 28

def self.class(class_name, **args)
  new(class_name: class_name, **args).to_s
end

.module(*names, **args) ⇒ Object

Since:

  • 2.0.0



32
33
34
35
36
37
38
39
40
# File 'lib/hanami/cli/ruby_file_generator.rb', line 32

def self.module(*names, **args)
  module_names = if names.first.is_a?(Array)
                   names.first
                 else
                   names
                 end

  new(modules: module_names, class_name: nil, parent_class: nil, **args).to_s
end

Instance Method Details

#to_sObject

Since:

  • 2.0.0



56
57
58
59
60
61
# File 'lib/hanami/cli/ruby_file_generator.rb', line 56

def to_s
  definition = lines(modules).map { |line| "#{line}\n" }.join
  source_code = [header, definition].flatten.join("\n")
  ensure_parseable!(source_code)
  source_code
end