Class: Ace::Handbook::Molecules::SkillProjection

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/handbook/molecules/skill_projection.rb

Class Method Summary collapse

Class Method Details

.projected_frontmatter(frontmatter, provider:) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/ace/handbook/molecules/skill_projection.rb', line 18

def projected_frontmatter(frontmatter, provider:)
  merged = deep_copy(frontmatter)
  integration = merged.delete("integration") || {}
  provider_meta = integration.fetch("providers", {}).fetch(provider.to_s, {})
  overrides = provider_meta["frontmatter"] || {}

  deep_merge(merged, overrides)
end

.projection_targets(frontmatter, registry:) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/ace/handbook/molecules/skill_projection.rb', line 10

def projection_targets(frontmatter, registry:)
  integration = frontmatter.fetch("integration", {})
  targets = integration["targets"]
  return registry.providers if targets.nil? || targets.empty?

  Array(targets).map(&:to_s).select { |provider| registry.known?(provider) }
end

.render(frontmatter, body) ⇒ Object



27
28
29
30
31
# File 'lib/ace/handbook/molecules/skill_projection.rb', line 27

def render(frontmatter, body)
  yaml = YAML.dump(frontmatter).sub(/\A---\n/, "")
  normalized_body = body.to_s.sub(/\A\n+/, "")
  ["---\n", yaml, "---\n\n", normalized_body].join.rstrip + "\n"
end