Module: Rails::Hyperdrive::SkillTemplate

Defined in:
lib/rails/hyperdrive/skill_template.rb

Overview

Renders a skill's *.md.erb sources against the app's resolved bundle. The template binding is sealed: exactly three helpers over the resolved name => Gem::Version map, no app context, no arbitrary lookup.

Defined Under Namespace

Classes: Context

Class Method Summary collapse

Class Method Details

.render(source, resolved:) ⇒ Object

Errors (ERB SyntaxError included) propagate; the caller decides how to skip and warn.



38
39
40
# File 'lib/rails/hyperdrive/skill_template.rb', line 38

def render(source, resolved:)
  ERB.new(source, trim_mode: "-").result(Context.new(resolved).template_binding)
end

.version_matches?(requirement_str, version) ⇒ Boolean

Gem::Requirement.new does not parse a single comma-separated string, so such strings are split into separate constraints first.

Returns:

  • (Boolean)


44
45
46
47
48
49
# File 'lib/rails/hyperdrive/skill_template.rb', line 44

def version_matches?(requirement_str, version)
  parts = Array(requirement_str).flat_map { |s| s.is_a?(String) ? s.split(",").map(&:strip) : s }
  Gem::Requirement.new(*parts).satisfied_by?(Gem::Version.new(version.to_s))
rescue ArgumentError
  false
end