1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
# frozen_string_literal: true
module TestProf
module RSpecStamp
# Parse examples headers
module Parser
# Contains the result of parsing
class Result
attr_accessor :fname, :desc, :desc_const
attr_reader :tags, :htags
def add_tag(v)
@tags ||= []
@tags << v
end
def add_htag(k, v)
@htags ||= []
@htags << [k, v]
end
def remove_tag(tag)
@tags&.delete(tag)
@htags&.delete_if { |(k, _v)| k == tag }
end
end
instance =
begin
require_relative "parser/prism"
self::Prism.new
rescue LoadError
require_relative "parser/ripper"
self::Ripper.new
end
define_singleton_method(:parse) { |code| instance.parse(code) }
end
end
end
|