Sha256: 424e1a416982d86ae72f15479ff0fc391dcec0db44b36349ee38d0a15b817010

Contents?: true

Size: 894 Bytes

Versions: 4

Compression:

Stored size: 894 Bytes

Contents

module JobSpec
  class RenderAsMarkdown
    attr_reader :role

    def initialize(role)
      @role = role
    end

    def render
      markdown = []
      markdown << "# #{role.name}"
      markdown << role.description unless role.description.nil?

      grouped_expectations.each do |group, expectations|
        if group.nil?
          markdown << '## Expectations' unless role.expectations.empty?
        else
          markdown << "## #{group}"
        end

        expectations.map(&:values).each do |(expectation, description)|
          markdown << "### #{expectation[0].upcase}#{expectation[1..expectation.length]}"
          markdown << description unless description.nil?
        end
      end

      markdown.join("\n\n")
    end

    private

    def grouped_expectations
      role.expectations.group_by do |expectations|
        expectations[:group]
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
job_spec-0.3.2 lib/job_spec/render_as_markdown.rb
job_spec-0.3.1 lib/job_spec/render_as_markdown.rb
job_spec-0.3.0 lib/job_spec/render_as_markdown.rb
job_spec-0.2.5 lib/job_spec/render_as_markdown.rb