|
|
@@ -2,24 +2,27 @@ module Docs
|
|
|
class Man
|
|
|
class EntriesFilter < Docs::EntriesFilter
|
|
|
|
|
|
+ @@TYPES = {}
|
|
|
+
|
|
|
def get_name
|
|
|
+ return slug.split('/').last.sub(/\.(\d[^.]*)\z/, ' (\1)') if slug.start_with?('man')
|
|
|
at_css('h1').content.sub(' — Linux manual page', '')
|
|
|
end
|
|
|
|
|
|
def get_type
|
|
|
- 'Linux manual page'
|
|
|
+ build_types if slug == 'dir_by_project'
|
|
|
+ @@TYPES[slug] or 'Linux manual page'
|
|
|
end
|
|
|
|
|
|
- def entries
|
|
|
- return super unless slug == 'dir_by_project'
|
|
|
+ def build_types
|
|
|
type0 = nil
|
|
|
- return css('*').each_with_object [] do |node, entries|
|
|
|
+ css('*').each do |node|
|
|
|
if node.name == 'h2'
|
|
|
type0 = node.content
|
|
|
elsif node.name == 'a' and node['href'] and node['href'].start_with?('man') and type0
|
|
|
- name = node.content + node.next_sibling.content
|
|
|
- path = node['href']
|
|
|
- entries << Entry.new(name, path, type0)
|
|
|
+ # name = node.content + node.next_sibling.content
|
|
|
+ slug0 = node['href'].remove(/\.html\z/)
|
|
|
+ @@TYPES[slug0] = type0
|
|
|
end
|
|
|
end
|
|
|
end
|