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.
6 7 8 9 10 11 12 13 14 |
# File 'lib/nitro_kit/schema_builder.rb', line 6 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.
16 17 18 |
# File 'lib/nitro_kit/schema_builder.rb', line 16 def files @files end |
#gems ⇒ Object (readonly)
Returns the value of attribute gems.
16 17 18 |
# File 'lib/nitro_kit/schema_builder.rb', line 16 def gems @gems end |
#modules ⇒ Object (readonly)
Returns the value of attribute modules.
16 17 18 |
# File 'lib/nitro_kit/schema_builder.rb', line 16 def modules @modules end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
16 17 18 |
# File 'lib/nitro_kit/schema_builder.rb', line 16 def name @name end |
#unresolved_dependencies ⇒ Object (readonly)
Returns the value of attribute unresolved_dependencies.
16 17 18 |
# File 'lib/nitro_kit/schema_builder.rb', line 16 def unresolved_dependencies @unresolved_dependencies end |
Instance Method Details
#all_files ⇒ Object
46 47 48 |
# File 'lib/nitro_kit/schema_builder.rb', line 46 def all_files (files + dependencies.flat_map(&:files)).sort end |
#all_gems ⇒ Object
54 55 56 |
# File 'lib/nitro_kit/schema_builder.rb', line 54 def all_gems (gems + dependencies.flat_map(&:gems)).sort end |
#all_modules ⇒ Object
50 51 52 |
# File 'lib/nitro_kit/schema_builder.rb', line 50 def all_modules (modules + dependencies.flat_map(&:modules)).sort end |
#dependencies ⇒ Object
18 19 20 21 |
# File 'lib/nitro_kit/schema_builder.rb', line 18 def dependencies raise "Component not resolved" unless resolved? @dependencies end |
#has_dependencies? ⇒ Boolean
58 59 60 61 62 |
# File 'lib/nitro_kit/schema_builder.rb', line 58 def has_dependencies? return true if gems.any? return true if modules.any? false end |
#resolve! ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/nitro_kit/schema_builder.rb', line 23 def resolve! raise "Component already resolved" if resolved? dependencies = Set.new stack = @unresolved_dependencies.dup until stack.empty? name = stack.pop next if dependencies.include?(name) dependencies.add(name) stack.concat(@schema.find(name).unresolved_dependencies) end @dependencies = dependencies.map { |name| @schema.find(name) } @resolved = true end |
#resolved? ⇒ Boolean
42 43 44 |
# File 'lib/nitro_kit/schema_builder.rb', line 42 def resolved? @resolved end |