/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/encoding.rb (3838B)
# coding: US-ASCII # frozen_string_literal: true ## # This class is a wrapper around File IO and Encoding that helps RDoc load # files and convert them to the correct encoding. module RDoc::Encoding HEADER_REGEXP = /^ (?: \A\#!.*\n | ^\#\s+frozen[-_]string[-_]literal[=:].+\n | ^\#[^\n]+\b(?:en)?coding[=:]\s*(?[^\s;]+).*\n | <\?xml[^?]*encoding=(?["'])(?.*?)\k.*\n )+ /xi # :nodoc: ## # Reads the contents of +filename+ and handles any encoding directives in # the file. # # The content will be converted to the +encoding+. If the file cannot be # converted a warning will be printed and nil will be returned. # # If +force_transcode+ is true the document will be transcoded and any # unknown character in the target encoding will be replaced with '?' def self.read_file filename, encoding, force_transcode = false content = File.open filename, "rb" do |f| f.read end content.gsub!("\r\n", "\n") if RUBY_PLATFORM =~ /mswin|mingw/ utf8 = content.sub!(/\A\xef\xbb\xbf/, '') enc = RDoc::Encoding.detect_encoding content content = RDoc::Encoding.change_encoding content, enc if enc begin encoding ||= Encoding.default_external orig_encoding = content.encoding if not orig_encoding.ascii_compatible? then content = content.encode encoding elsif utf8 then content = RDoc::Encoding.change_encoding content, Encoding::UTF_8 content = content.encode encoding else # assume the content is in our output encoding content = RDoc::Encoding.change_encoding content, encoding end unless content.valid_encoding? then # revert and try to transcode content = RDoc::Encoding.change_encoding content, orig_encoding content = content.encode encoding end unless content.valid_encoding? then warn "unable to convert #{filename} to #{encoding}, skipping" content = nil end rescue Encoding::InvalidByteSequenceError, Encoding::UndefinedConversionError => e if force_transcode then content = RDoc::Encoding.change_encoding content, orig_encoding content = content.encode(encoding, :invalid => :replace, :undef => :replace, :replace => '?') return content else warn "unable to convert #{e.message} for #{filename}, skipping" return nil end end content rescue ArgumentError => e raise unless e.message =~ /unknown encoding name - (.*)/ warn "unknown encoding name \"#{$1}\" for #{filename}, skipping" nil rescue Errno::EISDIR, Errno::ENOENT nil end def self.remove_frozen_string_literal string string =~ /\A(?:#!.*\n)?(.*\n)/ first_line = $1 if first_line =~ /\A# +frozen[-_]string[-_]literal[=:].+$/i string = string.sub first_line, '' end string end ## # Detects the encoding of +string+ based on the magic comment def self.detect_encoding string result = HEADER_REGEXP.match string name = result && result[:name] name ? Encoding.find(name) : nil end ## # Removes magic comments and shebang def self.remove_magic_comment string string.sub HEADER_REGEXP do |s| s.gsub(/[^\n]/, '') end end ## # Changes encoding based on +encoding+ without converting and returns new # string def self.change_encoding text, encoding if text.kind_of? RDoc::Comment text.encode! encoding else # TODO: Remove this condition after Ruby 2.2 EOL if RUBY_VERSION < '2.3.0' text.force_encoding encoding else String.new text, encoding: encoding end end end end