Class: Ace::Handbook::Molecules::SkillProjection
- Inherits:
-
Object
- Object
- Ace::Handbook::Molecules::SkillProjection
- Defined in:
- lib/ace/handbook/molecules/skill_projection.rb
Class Method Summary collapse
- .projected_frontmatter(frontmatter, provider:) ⇒ Object
- .projection_targets(frontmatter, registry:) ⇒ Object
- .render(frontmatter, body) ⇒ Object
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") || {} = integration.fetch("providers", {}).fetch(provider.to_s, {}) overrides = ["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 |