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
-
.render(source, resolved:) ⇒ Object
Errors (ERB SyntaxError included) propagate; the caller decides how to skip and warn.
-
.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.
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.
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 |