|
|
@ -6,9 +6,9 @@ module Docs
|
|
|
|
name = at_css('h1').content
|
|
|
|
name = at_css('h1').content
|
|
|
|
name.remove! %r{\A.+\:}
|
|
|
|
name.remove! %r{\A.+\:}
|
|
|
|
name.remove! %r{\A.+\-\-}
|
|
|
|
name.remove! %r{\A.+\-\-}
|
|
|
|
rfc = slug.sub('rfc', 'RFC ')
|
|
|
|
name = 'WebDAV' if name.include?('WebDAV')
|
|
|
|
"#{rfc}: #{name.strip}"
|
|
|
|
"#{rfc}: #{name.strip}"
|
|
|
|
elsif slug.start_with?('Status')
|
|
|
|
elsif slug.start_with?('Status/')
|
|
|
|
at_css('code').content
|
|
|
|
at_css('code').content
|
|
|
|
else
|
|
|
|
else
|
|
|
|
name = super
|
|
|
|
name = super
|
|
|
@ -22,7 +22,7 @@ module Docs
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
def get_type
|
|
|
|
def get_type
|
|
|
|
return 'RFC' if current_url.host == 'tools.ietf.org'
|
|
|
|
return name if current_url.host == 'tools.ietf.org'
|
|
|
|
|
|
|
|
|
|
|
|
if slug.start_with?('Headers/Content-Security-Policy')
|
|
|
|
if slug.start_with?('Headers/Content-Security-Policy')
|
|
|
|
'CSP'
|
|
|
|
'CSP'
|
|
|
@ -38,6 +38,94 @@ module Docs
|
|
|
|
'Guides'
|
|
|
|
'Guides'
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def rfc
|
|
|
|
|
|
|
|
slug.sub('rfc', 'RFC ')
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SECTIONS = {
|
|
|
|
|
|
|
|
'rfc2616' => [
|
|
|
|
|
|
|
|
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15],
|
|
|
|
|
|
|
|
[14],
|
|
|
|
|
|
|
|
[]
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
'rfc4918' => [
|
|
|
|
|
|
|
|
[],
|
|
|
|
|
|
|
|
[11],
|
|
|
|
|
|
|
|
[]
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
'rfc7230' => [
|
|
|
|
|
|
|
|
(2..9).to_a,
|
|
|
|
|
|
|
|
[],
|
|
|
|
|
|
|
|
[]
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
'rfc7231' => [
|
|
|
|
|
|
|
|
[3, 8, 9],
|
|
|
|
|
|
|
|
[],
|
|
|
|
|
|
|
|
[4, 5, 6, 7]
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
'rfc7232' => [
|
|
|
|
|
|
|
|
[5, 6, 7, 8],
|
|
|
|
|
|
|
|
[2, 3, 4],
|
|
|
|
|
|
|
|
[]
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
'rfc7233' => [
|
|
|
|
|
|
|
|
[5, 6],
|
|
|
|
|
|
|
|
[2, 3, 4],
|
|
|
|
|
|
|
|
[]
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
'rfc7234' => [
|
|
|
|
|
|
|
|
[3, 6, 7, 8],
|
|
|
|
|
|
|
|
[4, 5],
|
|
|
|
|
|
|
|
[]
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
'rfc7235' => [
|
|
|
|
|
|
|
|
[2, 5, 6],
|
|
|
|
|
|
|
|
[3, 4],
|
|
|
|
|
|
|
|
[]
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LEVEL_1 = /\A(\d+)\z/
|
|
|
|
|
|
|
|
LEVEL_2 = /\A(\d+)\.\d+\z/
|
|
|
|
|
|
|
|
LEVEL_3 = /\A(\d+)\.\d+\.\d+\z/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def additional_entries
|
|
|
|
|
|
|
|
return [] unless current_url.host == 'tools.ietf.org'
|
|
|
|
|
|
|
|
type = nil
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
css('a[href^="#section-"]').each_with_object([]) do |node, entries|
|
|
|
|
|
|
|
|
id = node['href'].remove('#')
|
|
|
|
|
|
|
|
break entries if entries.any? { |e| e[1] == id }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
content = node.next.content.strip
|
|
|
|
|
|
|
|
content.remove! %r{\s*\.+\d*\z}
|
|
|
|
|
|
|
|
content.remove! %r{\A[\.\s]+}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
name = "#{content} (#{rfc})"
|
|
|
|
|
|
|
|
number = node.content.strip
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if number =~ LEVEL_1
|
|
|
|
|
|
|
|
if SECTIONS[slug][0].include?($1.to_i)
|
|
|
|
|
|
|
|
entries << [name, id, self.name]
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
type = content.sub(/\ Definitions\z/, 's')
|
|
|
|
|
|
|
|
if type.include?('Header Fields')
|
|
|
|
|
|
|
|
type = 'Headers'
|
|
|
|
|
|
|
|
elsif type.include?('Status Codes')
|
|
|
|
|
|
|
|
type = 'Status'
|
|
|
|
|
|
|
|
elsif type.include?('Methods')
|
|
|
|
|
|
|
|
type = 'Methods'
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
type = self.name
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
elsif (number =~ LEVEL_2 && SECTIONS[slug][1].include?($1.to_i)) ||
|
|
|
|
|
|
|
|
(number =~ LEVEL_3 && SECTIONS[slug][2].include?($1.to_i))
|
|
|
|
|
|
|
|
entries << [name, id, (name =~ /\A\d\d\d/ ? 'Status' : type )]
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|