Class: Foobara::FilesGenerator

Inherits:
Object
  • Object
show all
Includes:
TruncatedInspect
Defined in:
foobara-files-generator-0.0.5/src/files_generator.rb,
foobara-files-generator-0.0.5/lib/foobara/files_generator/bundler_actions.rb

Defined Under Namespace

Modules: BundlerActions

Constant Summary

Constants included from TruncatedInspect

TruncatedInspect::MAX_LENGTH

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from TruncatedInspect

#inspect, truncating

Constructor Details

#initialize(relevant_manifest) ⇒ FilesGenerator

Returns a new instance of FilesGenerator.



33
34
35
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 33

def initialize(relevant_manifest)
  self.relevant_manifest = relevant_manifest
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name) ⇒ Object



127
128
129
130
131
132
133
134
135
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 127

def method_missing(method_name, *, &)
  if relevant_manifest.respond_to?(method_name)
    relevant_manifest.send(method_name, *, &)
  else
    # :nocov:
    super
    # :nocov:
  end
end

Instance Attribute Details

#belongs_to_dependency_groupObject

Returns the value of attribute belongs_to_dependency_group.



31
32
33
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 31

def belongs_to_dependency_group
  @belongs_to_dependency_group
end

#relevant_manifestObject

Returns the value of attribute relevant_manifest.



31
32
33
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 31

def relevant_manifest
  @relevant_manifest
end

Class Method Details

.generator_for(manifest) ⇒ Object



26
27
28
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 26

def generator_for(manifest)
  generators_for(manifest).first
end

.generators_for(manifest) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 14

def generators_for(manifest)
  if manifest.is_a?(FilesGenerator)
    return [manifest]
  end

  generator_classes = manifest_to_generator_classes(manifest)

  Util.array(generator_classes).map do |generator_class|
    generator_class.new(manifest)
  end
end

.manifest_to_generator_classes(_manifest) ⇒ Object



8
9
10
11
12
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 8

def manifest_to_generator_classes(_manifest)
  # :nocov:
  raise "subclass responsibility"
  # :nocov:
end

Instance Method Details

#==(other) ⇒ Object



141
142
143
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 141

def ==(other)
  self.class == other.class && relevant_manifest == other.relevant_manifest
end

#absolute_template_pathObject



94
95
96
97
98
99
100
101
102
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 94

def absolute_template_path
  path = template_path

  if path.is_a?(::Array)
    path = path.join("/")
  end

  Pathname.new("#{templates_dir}/#{path}").cleanpath.to_s
end

#applicable?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 53

def applicable?
  true
end

#dependenciesObject



67
68
69
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 67

def dependencies
  []
end

#dependencies_to_generateObject



71
72
73
74
75
76
77
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 71

def dependencies_to_generate
  if dependencies.is_a?(::Set)
    dependencies
  else
    Util.array(dependencies)
  end
end

#eql?(other) ⇒ Boolean

Returns:

  • (Boolean)


145
146
147
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 145

def eql?(other)
  self == other
end

#erb_templateObject



114
115
116
117
118
119
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 114

def erb_template
  # erb = ERB.new(template_string.gsub("\n<% end %>", "<% end %>"))
  erb = ERB.new(template_string)
  erb.filename = absolute_template_path
  erb
end

#generate(elements_to_generate) ⇒ Object



79
80
81
82
83
84
85
86
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 79

def generate(elements_to_generate)
  dependencies_to_generate.each do |dependency|
    elements_to_generate << dependency
  end

  # Render the template
  erb_template.result(binding)
end

#generator_forObject



63
64
65
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 63

def generator_for(...)
  self.class.generator_for(...)
end

#generators_forObject



57
58
59
60
61
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 57

def generators_for(...)
  # :nocov:
  self.class.generators_for(...)
  # :nocov:
end

#hashObject



149
150
151
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 149

def hash
  relevant_manifest.hash
end

#path_to_rootObject



121
122
123
124
125
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 121

def path_to_root
  size = target_path.size - 1

  (["../"] * size).join
end

#respond_to_missing?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


137
138
139
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 137

def respond_to_missing?(method_name, include_private = false)
  relevant_manifest.respond_to?(method_name, include_private)
end

#target_dirObject



49
50
51
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 49

def target_dir
  target_path[0..-2]
end

#target_pathObject



37
38
39
40
41
42
43
44
45
46
47
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 37

def target_path
  *path, file = template_path

  if file.end_with?(".erb")
    [*path, file[0..-5]]
  else
    # :nocov:
    raise "expected a .erb extension. Maybe override #target_path"
    # :nocov:
  end
end

#template_pathObject



88
89
90
91
92
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 88

def template_path
  # :nocov:
  raise "Subclass responsibility"
  # :nocov:
end

#template_stringObject



110
111
112
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 110

def template_string
  File.read(absolute_template_path)
end

#templates_dirObject



104
105
106
107
108
# File 'foobara-files-generator-0.0.5/src/files_generator.rb', line 104

def templates_dir
  # :nocov:
  "#{Dir.pwd}/templates"
  # :nocov:
end