class Docspec::Example
Attributes
before[R]
code[R]
type[R]
Public Class Methods
new(type:, code:, before: nil)
click to toggle source
# File lib/docspec/example.rb, line 8 def initialize(type:, code:, before: nil) @code, @type, @before = code, type, before end
Public Instance Methods
actual()
click to toggle source
# File lib/docspec/example.rb, line 12 def actual @actual ||= actual! end
consider_failed?()
click to toggle source
# File lib/docspec/example.rb, line 16 def consider_failed? failed? and !ignore_failure? end
diff()
click to toggle source
# File lib/docspec/example.rb, line 20 def diff @diff ||= Diffy::Diff.new("#{expected}\n", "#{actual}\n", context: 2).to_s :color end
empty?()
click to toggle source
# File lib/docspec/example.rb, line 24 def empty? expected.empty? end
expected()
click to toggle source
# File lib/docspec/example.rb, line 28 def expected @expected ||= code.scan(/#=> *(.*)/).map { |match| match.first.strip }.join "\n" end
failed?()
click to toggle source
# File lib/docspec/example.rb, line 32 def failed? !success? && !empty? end
first_line()
click to toggle source
# File lib/docspec/example.rb, line 36 def first_line @first_line ||= code.split("\n").first end
flags()
click to toggle source
# File lib/docspec/example.rb, line 40 def flags @flags ||= first_line.scan(/\[:(.+?)\]/).map { |f| f.first.to_sym } end
full_code()
click to toggle source
# File lib/docspec/example.rb, line 44 def full_code @full_code ||= full_code! end
ignore_failure?()
click to toggle source
# File lib/docspec/example.rb, line 48 def ignore_failure? flags.include? :ignore_failure end
label()
click to toggle source
# File lib/docspec/example.rb, line 52 def label @label ||= label! end
skip?()
click to toggle source
# File lib/docspec/example.rb, line 56 def skip? flags.include? :skip end
success?()
click to toggle source
# File lib/docspec/example.rb, line 60 def success? actual == expected end
Protected Instance Methods
actual!()
click to toggle source
# File lib/docspec/example.rb, line 66 def actual! capture_output do case type when 'ruby' eval full_code when 'shell' puts `#{full_code}` end end.strip end
full_code!()
click to toggle source
# File lib/docspec/example.rb, line 77 def full_code! return code unless before [before.join("\n\n"), code].join "\n" end
label!()
click to toggle source
# File lib/docspec/example.rb, line 82 def label! first_line.gsub(/^#\s*/, '').strip end