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.



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

#filesObject (readonly)

Returns the value of attribute files.



16
17
18
# File 'lib/nitro_kit/schema_builder.rb', line 16

def files
  @files
end

#gemsObject (readonly)

Returns the value of attribute gems.



16
17
18
# File 'lib/nitro_kit/schema_builder.rb', line 16

def gems
  @gems
end

#modulesObject (readonly)

Returns the value of attribute modules.



16
17
18
# File 'lib/nitro_kit/schema_builder.rb', line 16

def modules
  @modules
end

#nameObject (readonly)

Returns the value of attribute name.



16
17
18
# File 'lib/nitro_kit/schema_builder.rb', line 16

def name
  @name
end

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



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

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

#all_gemsObject



54
55
56
# File 'lib/nitro_kit/schema_builder.rb', line 54

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

#all_modulesObject



50
51
52
# File 'lib/nitro_kit/schema_builder.rb', line 50

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

#dependenciesObject



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

Returns:

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

Returns:

  • (Boolean)


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

def resolved?
  @resolved
end