/opt/cpanel/ea-ruby27/root/usr/share/ruby/ruby-2.7.8/rdoc
NameSizeModeActions
context/-0755rm
generator/-0755rm
i18n/-0755rm
markdown/-0755rm
markup/-0755rm
parser/-0755rm
rd/-0755rm
ri/-0755rm
stats/-0755rm
alias.rb21730644editdlrm
anon_class.rb1720644editdlrm
any_method.rb72060644editdlrm
attr.rb38490644editdlrm
class_module.rb202920644editdlrm
code_object.rb94830644editdlrm
code_objects.rb1510644editdlrm
comment.rb58740644editdlrm
constant.rb36770644editdlrm
context.rb308160644editdlrm
cross_reference.rb66780644editdlrm
encoding.rb38380644editdlrm
erbio.rb9340644editdlrm
erb_partial.rb4000644editdlrm
extend.rb1700644editdlrm
generator.rb18370644editdlrm
ghost_method.rb1440644editdlrm
i18n.rb1700644editdlrm
include.rb1720644editdlrm
known_classes.rb26850644editdlrm
markdown.rb3861170644editdlrm
markup.rb287550644editdlrm
meta_method.rb1290644editdlrm
method_attr.rb92510644editdlrm
mixin.rb28180644editdlrm
normal_class.rb21830644editdlrm
normal_module.rb14670644editdlrm
options.rb316010644editdlrm
parser.rb72190644editdlrm
rd.rb36530644editdlrm
rdoc.rb138660644editdlrm
require.rb9650644editdlrm
ri.rb3450644editdlrm
rubygems_hook.rb52650644editdlrm
servlet.rb124010644editdlrm
single_class.rb4080644editdlrm
stats.rb107290644editdlrm
store.rb229760644editdlrm
task.rb78560644editdlrm
text.rb75770644editdlrm
token_stream.rb32320644editdlrm
tom_doc.rb66140644editdlrm
top_level.rb56770644editdlrm
version.rb770644editdlrm
Edit: /opt/cpanel/ea-ruby27/root/usr/share/ruby/ruby-2.7.8/rdoc/cross_reference.rb (6678B)
# frozen_string_literal: true ## # RDoc::CrossReference is a reusable way to create cross references for names. class RDoc::CrossReference ## # Regular expression to match class references # # 1. There can be a '\\' in front of text to suppress the cross-reference # 2. There can be a '::' in front of class names to reference from the # top-level namespace. # 3. The method can be followed by parenthesis (not recommended) CLASS_REGEXP_STR = '\\\\?((?:\:{2})?[A-Z]\w*(?:\:\:\w+)*)' ## # Regular expression to match method references. # # See CLASS_REGEXP_STR METHOD_REGEXP_STR = '([a-z]\w*[!?=]?|%|===|\[\]=?|<<|>>|-|\+|\*)(?:\([\w.+*/=<>-]*\))?' ## # Regular expressions matching text that should potentially have # cross-reference links generated are passed to add_regexp_handling. Note # that these expressions are meant to pick up text for which cross-references # have been suppressed, since the suppression characters are removed by the # code that is triggered. CROSSREF_REGEXP = /(?:^|[\s()]) ( (?: # A::B::C.meth #{CLASS_REGEXP_STR}(?:[.#]|::)#{METHOD_REGEXP_STR} # Stand-alone method (preceded by a #) | \\?\##{METHOD_REGEXP_STR} # Stand-alone method (preceded by ::) | ::#{METHOD_REGEXP_STR} # A::B::C # The stuff after CLASS_REGEXP_STR is a # nasty hack. CLASS_REGEXP_STR unfortunately matches # words like dog and cat (these are legal "class" # names in Fortran 95). When a word is flagged as a # potential cross-reference, limitations in the markup # engine suppress other processing, such as typesetting. # This is particularly noticeable for contractions. # In order that words like "can't" not # be flagged as potential cross-references, only # flag potential class cross-references if the character # after the cross-reference is a space, sentence # punctuation, tag start character, or attribute # marker. | #{CLASS_REGEXP_STR}(?=[@\s).?!,;<\000]|\z) # Things that look like filenames # The key thing is that there must be at least # one special character (period, slash, or # underscore). | (?:\.\.\/)*[-\/\w]+[_\/.][-\w\/.]+ # Things that have markup suppressed # Don't process things like '\<' in \, though. # TODO: including < is a hack, not very satisfying. | \\[^\s<] ) # labels for headings (?:@[\w+%-]+(?:\.[\w|%-]+)?)? )/x ## # Version of CROSSREF_REGEXP used when --hyperlink-all is specified. ALL_CROSSREF_REGEXP = / (?:^|[\s()]) ( (?: # A::B::C.meth #{CLASS_REGEXP_STR}(?:[.#]|::)#{METHOD_REGEXP_STR} # Stand-alone method | \\?#{METHOD_REGEXP_STR} # A::B::C | #{CLASS_REGEXP_STR}(?=[@\s).?!,;<\000]|\z) # Things that look like filenames | (?:\.\.\/)*[-\/\w]+[_\/.][-\w\/.]+ # Things that have markup suppressed | \\[^\s<] ) # labels for headings (?:@[\w+%-]+)? )/x ## # Hash of references that have been looked-up to their replacements attr_accessor :seen ## # Allows cross-references to be created based on the given +context+ # (RDoc::Context). def initialize context @context = context @store = context.store @seen = {} end ## # Returns a reference to +name+. # # If the reference is found and +name+ is not documented +text+ will be # returned. If +name+ is escaped +name+ is returned. If +name+ is not # found +text+ is returned. def resolve name, text return @seen[name] if @seen.include? name if /#{CLASS_REGEXP_STR}([.#]|::)#{METHOD_REGEXP_STR}/o =~ name then type = $2 if '.' == type # will find either #method or ::method method = $3 else method = "#{type}#{$3}" end container = @context.find_symbol_module($1) elsif /^([.#]|::)#{METHOD_REGEXP_STR}/o =~ name then type = $1 if '.' == type method = $2 else method = "#{type}#{$2}" end container = @context else type = nil container = nil end if container then unless RDoc::TopLevel === container then if '.' == type then if 'new' == method then # AnyClassName.new will be class method ref = container.find_local_symbol method ref = container.find_ancestor_local_symbol method unless ref else ref = container.find_local_symbol "::#{method}" ref = container.find_ancestor_local_symbol "::#{method}" unless ref ref = container.find_local_symbol "##{method}" unless ref ref = container.find_ancestor_local_symbol "##{method}" unless ref end else ref = container.find_local_symbol method ref = container.find_ancestor_local_symbol method unless ref end end end ref = case name when /^\\(#{CLASS_REGEXP_STR})$/o then @context.find_symbol $1 else @context.find_symbol name end unless ref # Try a page name ref = @store.page name if not ref and name =~ /^\w+$/ ref = nil if RDoc::Alias === ref # external alias, can't link to it out = if name == '\\' then name elsif name =~ /^\\/ then # we remove the \ only in front of what we know: # other backslashes are treated later, only outside of ref ? $' : name elsif ref then if ref.display? then ref else text end else text end @seen[name] = out out end end