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