Module: Igniter::Extensions::Contracts::LookupPack

Defined in:
lib/igniter/extensions/contracts/lookup_pack.rb

Class Method Summary collapse

Class Method Details

.install_into(kernel) ⇒ Object



16
17
18
19
# File 'lib/igniter/extensions/contracts/lookup_pack.rb', line 16

def install_into(kernel)
  kernel.dsl_keywords.register(:lookup, lookup_keyword)
  kernel
end

.lookup_keywordObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/igniter/extensions/contracts/lookup_pack.rb', line 21

def lookup_keyword
  Igniter::Contracts::DslKeyword.new(:lookup) do |name, from:, builder:, key: nil, dig: nil, default: Igniter::Contracts::PathAccess::NO_DEFAULT|
    source_name = from.to_sym
    path = Igniter::Contracts::PathAccess.normalize_path(
      keyword_name: :lookup,
      key: key,
      dig: dig
    )

    builder.add_operation(
      kind: :compute,
      name: name,
      depends_on: [source_name],
      callable: lambda do |**values|
        source = values.fetch(source_name)
        Igniter::Contracts::PathAccess.fetch_path(
          source,
          path,
          source_name: source_name,
          keyword_name: :lookup,
          default: default
        )
      end
    )
  end
end

.manifestObject



9
10
11
12
13
14
# File 'lib/igniter/extensions/contracts/lookup_pack.rb', line 9

def manifest
  Igniter::Contracts::PackManifest.new(
    name: :extensions_lookup,
    registry_contracts: [Igniter::Contracts::PackManifest.dsl_keyword(:lookup)]
  )
end