spec/spec_helper.rb in indentation-0.0.7 vs spec/spec_helper.rb in indentation-0.1.1
- old
+ new
@@ -6,5 +6,52 @@
require 'rspec'
end
$:.unshift(File.dirname(__FILE__) + '/../lib')
require 'indentation'
+
+def rdoc_examples(examples_header = /^Examples:/i)
+ readme_rdoc = File.join(File.dirname(__FILE__), '../README.rdoc')
+ rdoc_content = File.read(readme_rdoc)
+ example_content = rdoc_content.split(/^== /).select{|p| p =~ examples_header}.first
+ raise "Couldn't find Examples header matching: #{examples_header}" unless example_content
+ examples_content = example_content.split('=== ')
+ examples = {}
+ # Skipping first 'example' since it is "Examples:\n"
+ examples_content[1..-1].each do |excon|
+ lines = excon.split("\n")
+ example_name = lines.shift.delete(':')
+ example_code = []
+ example_code << "$stdout = StringIO.new"
+ lines.each do |line|
+ l = line
+ if l =~ / # => /
+ code, check = line.split(/ # => /)
+ # Could make this more sophisticated, but just going with ==
+ l = code + ".should == " + check
+ elsif l =~ /(.*) ?# :([^ ]*) => (.*)$/
+ code = $~[1]
+ var = $~[2].to_sym
+ value = $~[3]
+ case var
+ when :stdout
+ l = "#{code}\n $stdout.string.chomp.split(%!\n!).last.should == %!#{value}!"
+ else
+ raise "Unkown variable type: #{var}"
+ end
+ end
+ example_code << l
+ end
+ # Debugging to show all of stdout during example
+ #example_code << "stdoutput = $stdout.string"
+ example_code << "$stdout = STDOUT"
+ #example_code << "puts stdoutput"
+ examples[example_name.to_sym] = example_code.join("\n")
+ end
+ examples
+end
+
+def time
+ t = Time.now
+ yield
+ Time.now - t
+end
\ No newline at end of file