def init
super
sections.push :stepdefinitions, :steptransforms, :undefined_steps
end
def stepdefinitions
@item_title = "Step Definitions"
@item_type = "step definition"
@items = YARD::Registry.all(:stepdefinition)
erb(:header) + erb(:transformers)
end
def steptransforms
@item_title = "Step Transforms"
@item_type = "step transform"
@items = YARD::Registry.all(:steptransform)
erb(:header) + erb(:transformers)
end
def undefined_steps
@item_title = "Undefined Steps"
@item_type = nil
@undefined_steps ||= Registry.all(:step).reject {|s| s.definition || s.scenario.outline? }
erb(:header) + erb(:undefined_steps)
end
def unique_steps(steps)
uniq_steps = {}
steps.each {|s| (uniq_steps[s.value.to_s] ||= []) << s }
uniq_steps
end
def link_constants(definition)
value = definition.literal_value.dup
definition.constants_from_value(value).each do |name|
constant = YARD::Registry.all(:constant).find{|c| c.name == name.to_sym }
value.gsub!(/\b#{name}\b/,"#{name}") if constant
end
value
end
def link_transformed_step(step)
value = step.value.dup
if step.definition
matches = step.value.match(step.definition.regex)
if matches
matches[1..-1].reverse.each_with_index do |match,index|
next if match == nil
transform = step.transforms.find {|transform| transform.regex.match(match) }
value[matches.begin((matches.size - 1) - index)..(matches.end((matches.size - 1) - index) - 1)] = transform ? "#{h(match)}" : "#{match}"
end
end
end
value
end