mirror of
https://github.com/freeCodeCamp/devdocs
synced 2024-11-16 19:48:10 +01:00
parent
7e51d08e4f
commit
a64d8f3d12
2 changed files with 95 additions and 3 deletions
|
@ -6,9 +6,9 @@ module Docs
|
|||
name = at_css('h1').content
|
||||
name.remove! %r{\A.+\:}
|
||||
name.remove! %r{\A.+\-\-}
|
||||
rfc = slug.sub('rfc', 'RFC ')
|
||||
name = 'WebDAV' if name.include?('WebDAV')
|
||||
"#{rfc}: #{name.strip}"
|
||||
elsif slug.start_with?('Status')
|
||||
elsif slug.start_with?('Status/')
|
||||
at_css('code').content
|
||||
else
|
||||
name = super
|
||||
|
@ -22,7 +22,7 @@ module Docs
|
|||
end
|
||||
|
||||
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')
|
||||
'CSP'
|
||||
|
@ -38,6 +38,94 @@ module Docs
|
|||
'Guides'
|
||||
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
|
||||
|
|
|
@ -17,6 +17,10 @@ module Docs
|
|||
options[:skip_links] = ->(filter) {
|
||||
filter.current_url.host == 'tools.ietf.org' ? true : false
|
||||
}
|
||||
options[:fix_urls] = ->(url) {
|
||||
url.sub! %r{(Status/\d\d\d)_[A-Z].+}, '\1'
|
||||
url
|
||||
}
|
||||
options[:attribution] = ->(filter) {
|
||||
if filter.current_url.host == 'tools.ietf.org'
|
||||
"© document authors. All rights reserved."
|
||||
|
|
Loading…
Reference in a new issue