Class: NitroKit::SchemaBuilder::Component
- Inherits:
-
Object
- Object
- NitroKit::SchemaBuilder::Component
- Defined in:
- lib/nitro_kit/schema_builder.rb
Instance Attribute Summary collapse
-
#files ⇒ Object
readonly
Returns the value of attribute files.
-
#gems ⇒ Object
readonly
Returns the value of attribute gems.
-
#modules ⇒ Object
readonly
Returns the value of attribute modules.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#unresolved_dependencies ⇒ Object
readonly
Returns the value of attribute unresolved_dependencies.
Instance Method Summary collapse
- #all_files ⇒ Object
- #all_gems ⇒ Object
- #all_modules ⇒ Object
- #dependencies ⇒ Object
- #has_dependencies? ⇒ Boolean
-
#initialize(schema, name, dependencies:, files:, modules:, gems:) ⇒ Component
constructor
A new instance of Component.
- #resolve! ⇒ Object
- #resolved? ⇒ Boolean
Constructor Details
#initialize(schema, name, dependencies:, files:, modules:, gems:) ⇒ Component
Returns a new instance of Component.
4 5 6 7 8 9 10 11 12 |
# File 'lib/nitro_kit/schema_builder.rb', line 4 def initialize(schema, name, dependencies:, files:, modules:, gems:) @schema = schema @name = name @unresolved_dependencies = dependencies @files = files @modules = modules @gems = gems @resolved = false end |
Instance Attribute Details
#files ⇒ Object (readonly)
Returns the value of attribute files.
14 15 16 |
# File 'lib/nitro_kit/schema_builder.rb', line 14 def files @files end |
#gems ⇒ Object (readonly)
Returns the value of attribute gems.
14 15 16 |
# File 'lib/nitro_kit/schema_builder.rb', line 14 def gems @gems end |
#modules ⇒ Object (readonly)
Returns the value of attribute modules.
14 15 16 |
# File 'lib/nitro_kit/schema_builder.rb', line 14 def modules @modules end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
14 15 16 |
# File 'lib/nitro_kit/schema_builder.rb', line 14 def name @name end |
#unresolved_dependencies ⇒ Object (readonly)
Returns the value of attribute unresolved_dependencies.
14 15 16 |
# File 'lib/nitro_kit/schema_builder.rb', line 14 def unresolved_dependencies @unresolved_dependencies end |
Instance Method Details
#all_files ⇒ Object
38 39 40 |
# File 'lib/nitro_kit/schema_builder.rb', line 38 def all_files (files + dependencies.flat_map(&:files)).sort end |
#all_gems ⇒ Object
46 47 48 |
# File 'lib/nitro_kit/schema_builder.rb', line 46 def all_gems (gems + dependencies.flat_map(&:gems)).sort end |
#all_modules ⇒ Object
42 43 44 |
# File 'lib/nitro_kit/schema_builder.rb', line 42 def all_modules (modules + dependencies.flat_map(&:modules)).sort end |
#dependencies ⇒ Object
16 17 18 19 |
# File 'lib/nitro_kit/schema_builder.rb', line 16 def dependencies raise "Component not resolved" unless resolved? @dependencies end |
#has_dependencies? ⇒ Boolean
50 51 52 53 54 |
# File 'lib/nitro_kit/schema_builder.rb', line 50 def has_dependencies? return true if gems.any? return true if modules.any? false end |
#resolve! ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/nitro_kit/schema_builder.rb', line 21 def resolve! raise "Component already resolved" if resolved? @dependencies = @unresolved_dependencies .each_with_object(Set.new) do |name, list| list.add(name) list.merge(@schema.find(name).unresolved_dependencies) end .map { |name| @schema.find(name) } @resolved = true end |
#resolved? ⇒ Boolean
34 35 36 |
# File 'lib/nitro_kit/schema_builder.rb', line 34 def resolved? @resolved end |