Module: Hecks::Translation::Scaffold::Renderer
- Included in:
- Hecks::Translation::Scaffold
- Defined in:
- lib/hecks/translation/scaffold/renderer.rb
Overview
Render an edge into .bluebook text — confident rules inline,
ambiguities as parse-refusing unresolved constructs, never
comments, so an unresolved file can only boot into a refusal.
Instance Method Summary collapse
Instance Method Details
#render(edge) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/hecks/translation/scaffold/renderer.rb', line 8 def render(edge) lines = ["Hecks.data_translation #{edge.domain.inspect}, from: #{edge.from.inspect}, to: #{edge.to.inspect} do"] edge.aggregates.each do |aggregate| header = " aggregate #{aggregate.name.inspect}" header += ", was: #{aggregate.was.inspect}" if aggregate.was if aggregate.rules.empty? lines << "#{header} do" else lines << "#{header} do" aggregate.rules.each { |rule| lines << " #{render_rule(rule)}" } end lines << " end" end edge.retired.each { |name| lines << " retired #{name.inspect}" } lines << "end" "#{lines.join("\n")}\n" end |
#render_path(path) ⇒ Object
37 |
# File 'lib/hecks/translation/scaffold/renderer.rb', line 37 def render_path(path) = path.to_s.include?(".") ? path.to_s.inspect : ":#{path}" |
#render_rule(rule) ⇒ Object
26 27 28 29 30 31 32 33 34 35 |
# File 'lib/hecks/translation/scaffold/renderer.rb', line 26 def render_rule(rule) case rule[:kind] when :rename then "rename :#{rule[:from]}, to: :#{rule[:to]}" when :move then "move #{rule[:from].inspect}, to: #{rule[:to].inspect}" when :retype then "retype #{rule[:from].inspect}, to: #{rule[:to].inspect}" when :unresolved candidates = rule[:candidates].map { |candidate| render_path(candidate) }.join(", ") "unresolved #{render_path(rule[:from])}, candidates: [#{candidates}]" end end |