Class: Scraper

Inherits:
Object
  • Object
show all
Extended by:
UIExtras
Defined in:
lib/ruby_doc/data/scrapers.rb

Instance Attribute Summary

Attributes included from UIExtras

#counter

Class Method Summary collapse

Methods included from UIExtras

alphaGets, browseControl, browseError, browseMenu, choiceControl, choiceError, cyanH, docControl, docError, docMenu, loading_animation, loading_message, main, mainControl, mainError, mainMenu, methControl, methError, methListControl, methListError, methMenu, outputD, prompt, randQ, redH, searchControl, searchError, sepL, sepR, signature, viewMenu, wrapped

Class Method Details

.docUniq(name) ⇒ Object



65
66
67
# File 'lib/ruby_doc/data/scrapers.rb', line 65

def self.docUniq(name) 
  Doc.all.none?{|doc| doc.name == name}
end

.loadDocPage(doc) ⇒ Object

DocPage====================


26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/ruby_doc/data/scrapers.rb', line 26

def self.loadDocPage(doc) 
  #Scrape1 
  doc_page = Nokogiri::HTML(open(doc.url))
  #prerequisites
  doc_page.search(".description p")[0..1].search("em").remove
  container = doc_page.search("#related")
  container.search("li").search(".related_header").remove
  
  # assigns - Doc :description, :type
  doc.description = parse(doc_page.search(".description p")[0..1].text)
  doc.type = doc_page.search(".title_prefix span").text
  #========================================== 
  #Scrape2
  container.search("li").map do |m|
    name = m.search("a").text
    url = prefix + m.search("a").attribute("href").value
    
    # assigns - Meth :name, :url >> Doc :methods
    method = Meth.new(name, url) if methUniq(name)
    doc.methods << name if methsUniq(doc.methods, name)
  end
  doc #doc instance
end

.loadDOCSObject

Load Docs===================


7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/ruby_doc/data/scrapers.rb', line 7

def self.loadDOCS 
  @counter = 0 #For Loading anim
  loading_message#
  
  html = Nokogiri::HTML(open("https://apidock.com/ruby/browse"))
  container = html.search(".hover_list")
  
  container.search("a").each do |doc|
    name = doc.text
    url = prefix + doc.attribute("href").value
    
    # assigns - Doc :names, :urls
    Doc.new(name, url) if docUniq(name)
    
    @counter += 1 #For Loading anim
    loading_animation#
  end
end

.loadMethPage(meth) ⇒ Object

MethPage====================


50
51
52
53
54
55
56
57
# File 'lib/ruby_doc/data/scrapers.rb', line 50

def self.loadMethPage(meth)
  url = Nokogiri::HTML(open(meth.url))
  url.search(".description p")[0..1].search("em").remove
  
  # assigns - Meth :description, :type
  meth.description = parse(url.search(".description p")[0..1].text)
  meth.type = url.search(".title_prefix span").text
end

.methsUniq(col, name) ⇒ Object



73
74
75
# File 'lib/ruby_doc/data/scrapers.rb', line 73

def self.methsUniq(col,name) 
  col.none?{|meth| meth == name}
end

.methUniq(name) ⇒ Object



69
70
71
# File 'lib/ruby_doc/data/scrapers.rb', line 69

def self.methUniq(name) 
  Meth.all.none?{|meth| meth.name == name}
end

.parse(des) ⇒ Object



61
62
63
# File 'lib/ruby_doc/data/scrapers.rb', line 61

def self.parse(des) 
  des.gsub(/[\n]/, ' ').gsub('  ',' ')
end

.prefixObject



77
78
79
# File 'lib/ruby_doc/data/scrapers.rb', line 77

def self.prefix 
  "https://apidock.com"
end