Class: NitroKit::SchemaBuilder::Component

Inherits:
Object
  • Object
show all
Defined in:
lib/nitro_kit/schema_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#filesObject (readonly)

Returns the value of attribute files.



14
15
16
# File 'lib/nitro_kit/schema_builder.rb', line 14

def files
  @files
end

#gemsObject (readonly)

Returns the value of attribute gems.



14
15
16
# File 'lib/nitro_kit/schema_builder.rb', line 14

def gems
  @gems
end

#modulesObject (readonly)

Returns the value of attribute modules.



14
15
16
# File 'lib/nitro_kit/schema_builder.rb', line 14

def modules
  @modules
end

#nameObject (readonly)

Returns the value of attribute name.



14
15
16
# File 'lib/nitro_kit/schema_builder.rb', line 14

def name
  @name
end

#unresolved_dependenciesObject (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_filesObject



38
39
40
# File 'lib/nitro_kit/schema_builder.rb', line 38

def all_files
  (files + dependencies.flat_map(&:files)).sort
end

#all_gemsObject



46
47
48
# File 'lib/nitro_kit/schema_builder.rb', line 46

def all_gems
  (gems + dependencies.flat_map(&:gems)).sort
end

#all_modulesObject



42
43
44
# File 'lib/nitro_kit/schema_builder.rb', line 42

def all_modules
  (modules + dependencies.flat_map(&:modules)).sort
end

#dependenciesObject



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

Returns:

  • (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

Returns:

  • (Boolean)


34
35
36
# File 'lib/nitro_kit/schema_builder.rb', line 34

def resolved?
  @resolved
end