Class: Docs::Backbone::EntriesFilter

Inherits:
EntriesFilter show all
Defined in:
lib/docs/filters/backbone/entries.rb

Constant Summary

Constants inherited from Filter

Filter::SCHEME_RGX

Instance Method Summary collapse

Methods inherited from EntriesFilter

#build_entries, #build_entry, #call, #default_entry, #entries, #get_name, #get_type, #include_default_entry?, #name, #path, #type

Methods inherited from Filter

#absolute_url_string?, #at_css, #at_xpath, #base_url, #css, #current_url, #fragment_url_string?, #initial_page?, #parse_html, #relative_url_string?, #root_page?, #root_path, #root_url, #slug, #subpath, #subpath_to, #xpath

Instance Method Details

#additional_entriesObject


4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/docs/filters/backbone/entries.rb', line 4

def additional_entries
  entries = []
  type = nil

  css('[id]').each do |node|
    # Module
    if node.name == 'h2'
      type = node.content.remove 'Backbone.'
      if type.capitalize! # sync, history
        entries << [node.content, node['id'], type]
      end
      next
    end

    # Built-in events
    if node['id'] == 'Events-catalog'
      node.next_element.css('li').each do |li|
        name = "#{li.at_css('b').content.delete('"').strip} event"
        id = name.parameterize
        li['id'] = id
        entries << [name, id, type] unless name == entries.last[0]
      end
      next
    end

    # Method
    name = node.at_css('.header').content.split.first

    # Underscore methods
    if name == 'Underscore'
      node.next_element.css('li').each do |li|
        name = [type.downcase, li.at_css('a').content.split.first].join('.')
        id = name.parameterize
        li['id'] = id
        entries << [name, id, type]
      end
      next
    end

    if %w(Events Sync).include?(type)
      name.prepend 'Backbone.'
    elsif type == 'History'
      name.prepend 'Backbone.history.'
    elsif name == 'extend'
      name.prepend "#{type}."
    elsif name.start_with? 'constructor'
      name = type
    elsif type != 'Utility'
      name.prepend "#{type.downcase}."
    end

    entries << [name, node['id'], type]
  end

  entries
end