Class: WikiReader
- Inherits:
-
Object
- Object
- WikiReader
- Defined in:
- lib/wikipedia.rb
Constant Summary collapse
- @@http =
HTTP
HTTPClient.new
- @@db =
Our database
Format: @db = {'en' => ['link_a', 'link_b', ...], 'pt' => ['link_c', ...]} A language with a "nil" value means it wasn't initialized yet and we should call fetch_vital before use it nil- @@sizes =
{}
Class Method Summary collapse
- .article(title, language = 'en') ⇒ Object
-
.articles(language = 'en') ⇒ Object
all articles in memory.
- .db ⇒ Object
- .languages ⇒ Object
- .size(title, language = 'en') ⇒ Object
Class Method Details
.article(title, language = 'en') ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/wikipedia.rb', line 29 def self.article(title, language = 'en') raise Errno::ENOENT if ! db.key?(language) # invalid language db[language] = fetch_vital(language) if ! db[language] # not initialized art = fetch_article(title, language) # read from the internet raise Errno::ENOENT if ! art db[language] << title if art && ! db[language].index(title) # adds in our list @@sizes[language] ||= {} @@sizes[language][title] = art.bytesize art end |
.articles(language = 'en') ⇒ Object
all articles in memory
18 19 20 21 22 23 |
# File 'lib/wikipedia.rb', line 18 def self.articles(language = 'en') return nil if ! db.key?(language) # invalid language db[language] = fetch_vital(language) if ! db[language] # not initialized db[language] end |
.db ⇒ Object
48 49 50 51 |
# File 'lib/wikipedia.rb', line 48 def self.db return @@db if @@db @@db = Hash[fetch_languages.collect { |item| [item, nil] }] end |
.languages ⇒ Object
25 26 27 |
# File 'lib/wikipedia.rb', line 25 def self.languages db.keys end |
.size(title, language = 'en') ⇒ Object
43 44 45 46 |
# File 'lib/wikipedia.rb', line 43 def self.size(title, language = 'en') @@sizes[language] ||= {} @@sizes[language][title] || 1 end |