diff --git a/lib/docs/filters/express/clean_html.rb b/lib/docs/filters/express/clean_html.rb
index 7036d6e7..34f6de7b 100644
--- a/lib/docs/filters/express/clean_html.rb
+++ b/lib/docs/filters/express/clean_html.rb
@@ -2,6 +2,13 @@ module Docs
class Express
class CleanHtmlFilter < Filter
def call
+ i = 1
+ n = at_css("#navmenu a[href='#{result[:path].split('/').last}']").parent
+ i += 1 while n && n = n.previous_element
+ at_css('h1')['data-level'] = i
+
+ @doc = at_css('#api-doc, .content')
+
css('section', 'div.highlighter-rouge').each do |node|
node.before(node.children).remove
end
diff --git a/lib/docs/filters/express/entries.rb b/lib/docs/filters/express/entries.rb
index d2072768..7137757b 100644
--- a/lib/docs/filters/express/entries.rb
+++ b/lib/docs/filters/express/entries.rb
@@ -4,11 +4,14 @@ module Docs
TYPES_BY_PATH = {
'starter' => 'Getting started',
'guide' => 'Guide',
- 'advanced' => 'Guide'
+ 'advanced' => 'Advanced topics'
}
def get_name
- at_css('h1').content
+ node = at_css('h1')
+ name = node.content
+ name.prepend "#{node['data-level']}. " if type.in?(%w(Guide Getting\ started Advanced\ topics))
+ name
end
def get_type
@@ -19,7 +22,7 @@ module Docs
return [] unless root_page?
type = 'Application'
- doc.children.each_with_object [] do |node, entries|
+ at_css('#api-doc').children.each_with_object [] do |node, entries|
if node.name == 'h2'
type = node.content
entries << [type, node['id'], 'Application'] if type == 'Middleware'
diff --git a/lib/docs/scrapers/express.rb b/lib/docs/scrapers/express.rb
index ef29a997..f84ce5e4 100644
--- a/lib/docs/scrapers/express.rb
+++ b/lib/docs/scrapers/express.rb
@@ -18,7 +18,6 @@ module Docs
options[:title] = false
options[:root_title] = 'Express'
- options[:container] = ->(filter) { filter.root_page? ? '#api-doc' : '.content' }
options[:only_patterns] = [
/\Astarter/,