class SpecMe::Renderer

Attributes

config[RW]

Public Class Methods

new(config) click to toggle source
# File lib/spec_me/renderer.rb, line 62
def initialize config
  self.config = config
end

Public Instance Methods

code(ast) click to toggle source
# File lib/spec_me/renderer.rb, line 24
def code(ast)
  ast.map{ |node| render_node node }.flatten
end
description( file_name:, count: 1, **params) click to toggle source
# File lib/spec_me/renderer.rb, line 28
def description( file_name:, count: 1, **params)
  example_group_name = params.fetch :example_group_name, "#{file_name} #{count}"
  rspec_tag = params.fetch :rspec_tag, config.spec_me_tag
  [%{describe '#{example_group_name}', :#{rspec_tag} do}] #.tap{|r| p description: r}
end
end_lines(n, indent=0) click to toggle source
# File lib/spec_me/renderer.rb, line 34
def end_lines n, indent=0
  n.times.map{ |i|
    '  ' * (n-i.succ+indent) + 'end'
  }
end
example( count:) click to toggle source
# File lib/spec_me/renderer.rb, line 40
def example( count:)
  [%{  it 'example #{count}' do}] 
end
render( ast, file_name:, count:1, spec_helper: nil, **params) click to toggle source
# File lib/spec_me/renderer.rb, line 5
def render( ast, file_name:, count:1, spec_helper: nil, **params)
  (
    spec_helper_lines(spec_helper) +
    description( file_name: file_name, count: count, **params ) +
    ast.each_with_index.map do | block_node, idx  |
      render_one( block_node, count: count + idx, **params )
    end +
    end_lines( 1 )
  ).flatten
end
render_node(node) click to toggle source
# File lib/spec_me/renderer.rb, line 44
def render_node node
  case node.first
  when :comment
    %{    # #{node.last}}
  when :ruby
    %{    #{node.last}}
  when :equality_xp
    [%{    expect( #{node[1]} ).to eq(},
     %{      #{node.last}},
       %{    )}]
  end
end
render_one( block_node, count:1, **params) click to toggle source
# File lib/spec_me/renderer.rb, line 16
def render_one( block_node, count:1, **params)
  (
    example( count: count ) +
    code(block_node) +
    end_lines(1, 1)
  )# .tap{ |r| puts r }
end
spec_helper_lines(spec_helper) click to toggle source
# File lib/spec_me/renderer.rb, line 56
def spec_helper_lines spec_helper
  spec_helper ||= config.spec_me_helper
  [ %{require '#{spec_helper}'}, '' ]
end