Class: Megalith::Subject
- Inherits:
-
Array
- Object
- Array
- Megalith::Subject
- Includes:
- Essentials
- Defined in:
- lib/megalith/scheme.rb
Instance Attribute Summary collapse
-
#base_url ⇒ Object
readonly
Returns the value of attribute base_url.
-
#log ⇒ Object
readonly
Returns the value of attribute log.
-
#subject ⇒ Object
readonly
Returns the value of attribute subject.
Instance Method Summary collapse
- #fetch_subject(base_url, log) ⇒ Object
-
#initialize(base_url, log) ⇒ Subject
constructor
A new instance of Subject.
- #latest_log ⇒ Object
- #next_page ⇒ Object (also: #next)
- #prev_page ⇒ Object (also: #prev)
Methods included from Essentials
#fetch_comments, #fetch_subjects, #param_serialize, #send_req
Constructor Details
#initialize(base_url, log) ⇒ Subject
Returns a new instance of Subject.
199 200 201 202 203 204 |
# File 'lib/megalith/scheme.rb', line 199 def initialize(base_url, log) @subject = fetch_subject(base_url, log) super(subject) @base_url = base_url @log = subject.first.log end |
Instance Attribute Details
#base_url ⇒ Object (readonly)
Returns the value of attribute base_url.
196 197 198 |
# File 'lib/megalith/scheme.rb', line 196 def base_url @base_url end |
#log ⇒ Object (readonly)
Returns the value of attribute log.
197 198 199 |
# File 'lib/megalith/scheme.rb', line 197 def log @log end |
#subject ⇒ Object (readonly)
Returns the value of attribute subject.
195 196 197 |
# File 'lib/megalith/scheme.rb', line 195 def subject @subject end |
Instance Method Details
#fetch_subject(base_url, log) ⇒ Object
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 |
# File 'lib/megalith/scheme.rb', line 206 def fetch_subject(base_url, log) fs = fetch_subjects(base_url) absolute_log = (fs.size <= log || log < 1) ? "" : log relative_log = (log < 1) ? fs.size : log page = send_req(File.join(base_url, "sub", "subject#{absolute_log}.txt")) subject = page.split("\n").map{|i| i.split("<>")} indexes = [] subject.each do |index| key = index[0].gsub(/[^0-9]/, "").to_i comment_count, review_count = index[5].split("/") indexes << Index.new(base_url, { :log => relative_log, :key => key, :title => index[1], :author => index[2], :created_at => Time.at(key), :updated_at => Time.parse(index[8]), :review_count => review_count, :comment_count => comment_count, :point => index[6], :tags => index[13].split(/[\s ]/), :rate => index[7].to_f, :host => index[9], :background_color => index[10], :text_color => index[11], :convert_newline => index[12], :size => index[14].to_f, :url => URI.join(base_url, "?mode=read&key=#{key}&log=#{relative_log}").to_s }) end return indexes.reverse end |
#latest_log ⇒ Object
250 251 252 |
# File 'lib/megalith/scheme.rb', line 250 def latest_log fetch_subjects(@base_url).last end |