module Speculations
Constants
- DISCLAIMER
- VERSION
Public Instance Methods
compile(infile, outfile=nil)
click to toggle source
# File lib/speculations.rb, line 14 def compile(infile, outfile=nil) raise ArgumentError, "#{infile} not found" unless File.readable? infile outfile ||= _speculation_path(infile) if _out_of_date?(outfile, infile) ast = Speculations::Parser.new.parse_from_file(infile) code = _decorated_ast_code ast, infile File.write(outfile, code.join("\n")) end outfile end
Private Instance Methods
_decorated_ast_code(ast, filename)
click to toggle source
# File lib/speculations.rb, line 27 def _decorated_ast_code ast, filename [DISCLAIMER.gsub("FILENAME", filename.inspect).split("\n"), %{RSpec.describe #{filename.inspect} do}] + ast.to_code + ["end"] end
_out_of_date?(outf, inf)
click to toggle source
# File lib/speculations.rb, line 32 def _out_of_date?(outf, inf) return true unless File.exists? outf return File.lstat(outf).mtime <= File.lstat(inf).mtime end
_speculation_path(file)
click to toggle source
# File lib/speculations.rb, line 37 def _speculation_path(file) dir = File.dirname(file) dest_dir = File.join("spec", "speculations", dir) FileUtils.mkdir_p(dest_dir) unless File.directory?(dest_dir) rspec = File.basename(file, ".md") File.join(dest_dir, "#{rspec}_spec.rb") end