class Kuport::Timetable
Attributes
dates[R]
special[R]
table[R]
year[R]
Public Class Methods
new(doc)
click to toggle source
# File lib/kuport/timetable.rb, line 5 def initialize(doc) period_line = doc.at_css('.portlet_module > .ac > table').css('tr') parse_dates(period_line.shift) parse_special(period_line.pop) parse_table(period_line) end
Public Instance Methods
compact()
click to toggle source
# File lib/kuport/timetable.rb, line 59 def compact # 土曜日から連続して授業の無い日を消す table.reverse_each do |key, val| break unless val.all?{|elem| elem[:name].nil?} table.delete(key) end # 週を通してn時限目が無ければ消す 6.downto(0).each do |i| break unless table.all?{|key, val| val[i][:name].nil?} table.each{|key, val| val.pop} end end
parse_class_text(text)
click to toggle source
# File lib/kuport/timetable.rb, line 48 def parse_class_text(text) text.strip! text = '' if text == '-' text = text.to_half_str name,room,period = text.split("\n") name.sub!(/\[(.+)\]/, '\1') if name period.sub!(/\((\w+)\)/, '\1') if period [name,room,period] end
parse_dates(dates_doc)
click to toggle source
# File lib/kuport/timetable.rb, line 18 def parse_dates(dates_doc) dates_doc.br_to_return tds = dates_doc.css('td') @year = tds.shift.text @dates = tds.map do |td| # 月日曜, 祝 date,special = td.text.sub("\n", ' ').split("\n") {date: date, special: special} end end
parse_special(special_doc)
click to toggle source
集中講義(1週間共通)
# File lib/kuport/timetable.rb, line 13 def parse_special(special_doc) @special = special_doc.css('td')[1].text @special = '' if @special == '-' end
parse_table(period_line)
click to toggle source
# File lib/kuport/timetable.rb, line 30 def parse_table(period_line) @table = {mon: [], tue: [], wed: [], thurs: [], fri: [], sat: []} period_line.each do |tr| tds = tr.css('td') tds.shift # 横枠破棄(1~7時限 集中講義等) tds.zip(@table).each do |(td, day)| # 各曜日のn限 td.br_to_return name,room,period = parse_class_text(td.text) # 休講とか (kyuko) status = td.css('img').map{|img| File.basename_noext(img['src'])} day[1] << {name: name, room: room, period: period, status: status} end end end
to_h()
click to toggle source
# File lib/kuport/timetable.rb, line 73 def to_h @data_hash ||= { year: year, dates: dates, table: table, special: special, } end
to_json(*a)
click to toggle source
# File lib/kuport/timetable.rb, line 86 def to_json(*a) @data_json ||= to_h.to_json(*a) end
to_s()
click to toggle source
# File lib/kuport/timetable.rb, line 82 def to_s @data_str = to_h.to_s end