class Pact::Doc::Markdown::InteractionRenderer

Attributes

interaction[R]

Public Class Methods

new(interaction, pact) click to toggle source
# File lib/pact/doc/markdown/interaction_renderer.rb, line 11
def initialize interaction, pact
  @interaction = InteractionViewModel.new(interaction, pact)
end

Public Instance Methods

h(text) click to toggle source
# File lib/pact/doc/markdown/interaction_renderer.rb, line 41
def h(text)
  Rack::Utils.escape_html(text)
end
render(template_file) click to toggle source
# File lib/pact/doc/markdown/interaction_renderer.rb, line 25
def render template_file
  ERB.new(template_string(template_file)).result(binding)
end
render_full_interaction() click to toggle source
# File lib/pact/doc/markdown/interaction_renderer.rb, line 21
def render_full_interaction
  render("/interaction.erb")
end
render_summary() click to toggle source
# File lib/pact/doc/markdown/interaction_renderer.rb, line 15
def render_summary
  formatted_provider_states = h(interaction.formatted_provider_states)
  suffix = formatted_provider_states.empty? ? "" : " given #{formatted_provider_states}"
  "* [#{h(interaction.description(true))}](##{interaction.id})#{suffix}\n\n"
end
template_contents(template_file) click to toggle source
# File lib/pact/doc/markdown/interaction_renderer.rb, line 37
def template_contents(template_file)
  File.dirname(__FILE__) + template_file
end
template_string(template_file) click to toggle source

The template file is written with only ASCII range characters, so we can read as UTF-8. But rendered strings must have same encoding as script encoding because it will joined to strings which are produced by string literal.

# File lib/pact/doc/markdown/interaction_renderer.rb, line 33
def template_string(template_file)
  File.read(template_contents(template_file), external_encoding: Encoding::UTF_8).force_encoding(__ENCODING__)
end