Class: Foobara::Generators::Generate
- Inherits:
-
Command
- Object
- Command
- Foobara::Generators::Generate
show all
- Defined in:
- foobara-files-generator-0.2.4/src/generate.rb
Constant Summary
TruncatedInspect::MAX_LENGTH
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods inherited from Command
install!
install_state_machine_callback_methods
#inspect, truncating
Methods included from Concern
foobara_class_methods_module_for, foobara_concern?, included
Instance Attribute Details
#element_to_generate ⇒ Object
Returns the value of attribute element_to_generate.
8
9
10
|
# File 'src/generate.rb', line 8
def element_to_generate
@element_to_generate
end
|
Instance Method Details
#base_generator ⇒ Object
10
11
12
13
14
|
# File 'src/generate.rb', line 10
def base_generator
raise "subclass responsibility"
end
|
#each_element_to_generate ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'src/generate.rb', line 28
def each_element_to_generate
until elements_to_generate.empty?
element_to_generate = elements_to_generate.first
elements_to_generate.delete(element_to_generate)
generators = if element_to_generate.is_a?(FilesGenerator)
if generated.include?(element_to_generate)
[]
else
elements_to_generate << element_to_generate.relevant_manifest
[element_to_generate]
end
else
if generated_elements.include?(element_to_generate)
next
end
generated_elements << element_to_generate
base_generator.generators_for(element_to_generate).select do |generator|
generator.applicable? && !generated.include?(generator)
end
end
generators.each do |generator|
self.element_to_generate = generator
generated << generator
yield
end
end
end
|
#elements_to_generate ⇒ Object
16
17
18
|
# File 'src/generate.rb', line 16
def elements_to_generate
@elements_to_generate ||= Set.new
end
|
#generate_element ⇒ Object
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'src/generate.rb', line 61
def generate_element
return unless element_to_generate.applicable?
path = Util.array(element_to_generate.target_path).join("/")
generated_code = element_to_generate.generate(elements_to_generate)
if generated_code.is_a?(::String)
generated_code = ::Foobara::FilesGenerator::Types::GeneratedFile.new(content: generated_code)
end
paths_to_source_code[path] = generated_code
end
|
#generated ⇒ Object
20
21
22
|
# File 'src/generate.rb', line 20
def generated
@generated ||= Set.new
end
|
#generated_elements ⇒ Object
24
25
26
|
# File 'src/generate.rb', line 24
def generated_elements
@generated_elements ||= Set.new
end
|
#include_non_templated_files ⇒ Object
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'src/generate.rb', line 76
def include_non_templated_files
templates_dir_pathname = Pathname.new(templates_dir)
Find.find(templates_dir) do |file_path|
next if File.directory?(file_path)
next if file_path.end_with?(".erb")
file_path = Pathname.new(file_path)
relative_path = file_path.relative_path_from(templates_dir_pathname)
content = File.read(file_path)
paths_to_source_code[relative_path.to_s] =
::Foobara::FilesGenerator::Types::GeneratedFile.new(content:)
end
end
|
#paths_to_source_code ⇒ Object
98
99
100
|
# File 'src/generate.rb', line 98
def paths_to_source_code
@paths_to_source_code ||= {}
end
|
#templates_dir ⇒ Object
94
95
96
|
# File 'src/generate.rb', line 94
def templates_dir
base_generator.templates_dir
end
|