Object
# File rbs-2.1.0/lib/rbs/annotate/annotations.rb, line 146
def initialize(items)
@items = items
end
# File rbs-2.1.0/lib/rbs/annotate/annotations.rb, line 117
def self.parse(annotation)
string = annotation.string
case
when match = string.match(/\Aannotate:rdoc:skip(:all)?\Z/)
Skip.new(
annotation: annotation,
skip_children: string.end_with?(":all")
)
when match = string.match(/\Aannotate:rdoc:source:from=(?<path>.+)\Z/)
Source.new(
annotation: annotation,
include: (match[:path] or raise).strip
)
when match = string.match(/\Aannotate:rdoc:source:skip=(?<path>.+)\Z/)
Source.new(
annotation: annotation,
skip: (match[:path] or raise).strip
)
when match = string.match(/\Aannotate:rdoc:copy:(?<name>.+)\Z/)
Copy.new(
annotation: annotation,
source: (match[:name] or raise).strip
)
end
end
# File rbs-2.1.0/lib/rbs/annotate/annotations.rb, line 158
def copy_annotation
_ = items.find {|a| a.is_a?(Copy) }
end
# File rbs-2.1.0/lib/rbs/annotate/annotations.rb, line 150
def skip?
items.any? {|a| a.is_a?(Skip) }
end
# File rbs-2.1.0/lib/rbs/annotate/annotations.rb, line 154
def skip_all?
items.any? {|a| a.is_a?(Skip) && a.skip_children }
end
# File rbs-2.1.0/lib/rbs/annotate/annotations.rb, line 162
def test_path(path)
# @type var source_items: Array[Source]
source_items = _ = items.select {|item| item.is_a?(Source) }
return true if source_items.empty?
result = source_items[0].include_source == nil
items.each do |a|
if a.is_a?(Source)
if pat = a.include_source
if test_path_string(pat, path)
result = true
end
end
if pat = a.skip_source
if test_path_string(pat, path)
result = false
end
end
end
end
result
end