mirror of https://github.com/freeCodeCamp/devdocs
parent
8587239211
commit
63af2153d8
@ -0,0 +1,78 @@
|
|||||||
|
module Docs
|
||||||
|
class Python
|
||||||
|
class CommonEntriesFilter < Docs::EntriesFilter
|
||||||
|
def get_name
|
||||||
|
name = at_css('h1').content
|
||||||
|
name.remove! %r{\A[\d\.]+ } # remove list number
|
||||||
|
name.remove! "\u{00B6}" # remove pilcrow sign
|
||||||
|
name.remove! %r{ [\u{2013}\u{2014}].+\z} # remove text after em/en dash
|
||||||
|
name.remove! 'Built-in'
|
||||||
|
name.strip!
|
||||||
|
name
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_type
|
||||||
|
return 'Logging' if slug.start_with? 'library/logging'
|
||||||
|
|
||||||
|
type = at_css('.related a[accesskey="U"]').content
|
||||||
|
|
||||||
|
original_type = type
|
||||||
|
type = parse_type type
|
||||||
|
|
||||||
|
if type == original_type
|
||||||
|
if type == 'The Python Standard Library'
|
||||||
|
type = at_css('h1').content
|
||||||
|
elsif type.include?('I/O') || %w(select selectors).include?(name)
|
||||||
|
type = 'Input/ouput'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
type.remove! %r{\A\d+\.\s+} # remove list number
|
||||||
|
type.remove! "\u{00b6}" # remove paragraph character
|
||||||
|
type.sub! ' and ', ' & '
|
||||||
|
[' Services', ' Modules', ' Specific', 'Python '].each { |str| type.remove!(str) }
|
||||||
|
|
||||||
|
self.class.const_get(:REPLACE_TYPES)[type] || type
|
||||||
|
end
|
||||||
|
|
||||||
|
def parse_type
|
||||||
|
raise Error.new('Python::CommonEntriesFilter is an abstract filter. Subclass it before using it.')
|
||||||
|
end
|
||||||
|
|
||||||
|
def include_default_entry?
|
||||||
|
!at_css('.body > .section:only-child > .toctree-wrapper:last-child') && type != 'Superseded'
|
||||||
|
end
|
||||||
|
|
||||||
|
def additional_entries
|
||||||
|
return [] if root_page? || !include_default_entry? || name == 'errno'
|
||||||
|
clean_id_attributes
|
||||||
|
entries = []
|
||||||
|
|
||||||
|
css('.class > dt[id]', '.exception > dt[id]', '.attribute > dt[id]').each do |node|
|
||||||
|
entries << [node['id'], node['id']]
|
||||||
|
end
|
||||||
|
|
||||||
|
css('.data > dt[id]').each do |node|
|
||||||
|
if node['id'].split('.').last.upcase! # skip constants
|
||||||
|
entries << [node['id'], node['id']]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
css('.function > dt[id]', '.method > dt[id]', '.staticmethod > dt[id]', '.classmethod > dt[id]').each do |node|
|
||||||
|
entries << [node['id'] + '()', node['id']]
|
||||||
|
end
|
||||||
|
|
||||||
|
entries
|
||||||
|
end
|
||||||
|
|
||||||
|
def clean_id_attributes
|
||||||
|
css('.section > .target[id]').each do |node|
|
||||||
|
if dt = node.at_css('+ dl > dt')
|
||||||
|
dt['id'] ||= node['id'].remove(/\w+\-/)
|
||||||
|
end
|
||||||
|
node.remove
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in new issue