class DartApi::Report
Attributes
company_code[R]
company_name[R]
content[R]
reader_url[R]
report_number[R]
url[R]
year[R]
Public Class Methods
new(options)
click to toggle source
# File lib/dart_api/report.rb, line 10 def initialize(options) @company_name, @company_code, @report_number = options.values_at("crp_nm", "crp_cd", "rcp_no") @year = options["rcp_dt"][0..3].to_i - 1 # url end
Public Instance Methods
dcm_no()
click to toggle source
# File lib/dart_api/report.rb, line 16 def dcm_no generate unless @dcm_no @dcm_no end
ele_id()
click to toggle source
# File lib/dart_api/report.rb, line 21 def ele_id generate unless @ele_id @ele_id end
read(type)
click to toggle source
# File lib/dart_api/report.rb, line 40 def read(type) result = Hash.new content.search("table").each do |table| read_table table end result end
Private Instance Methods
generate()
click to toggle source
# File lib/dart_api/report.rb, line 49 def generate tmp_report = Nokogiri::HTML(open(reader_url)) tmp = tmp_report.search("#north > div.view_search > ul > li:nth-child(1) > a").attr("onclick").text @dcm_no = tmp.split("'")[-2] tmp_report = tmp_report.search(":contains('XI. 재무제표 등')").to_s || tmp_report.search(":contains('III. 재무에 관한 사항')").to_s n = tmp_report.index('text: "XI. 재무제표 등",').to_i || tmp_report.index('text: "III. 재무에 관한 사항",').to_i @ele_id = tmp_report[n+29..n+30] @url = "http://dart.fss.or.kr/report/viewer.do?rcpNo=#{report_number}&dcmNo=#{dcm_no}&eleId=#{ele_id}&offset=0&length=1" @content = Nokogiri::HTML(open(url)) end
read_table(table)
click to toggle source
# File lib/dart_api/report.rb, line 63 def read_table(table) title = table.search("tbody > tr:nth-child(1) > td").text.gsub(/\s+/, "") if title.eql? TYPES[type-1] || "포괄#{TYPES[type-1]}" table.next.next.search("tr").each do |tr| name = tr.search("td:nth-child(1)").text.strip.gsub(/\A\p{Space}*/, '') value = tr.search("td:nth-child(2)").text.strip.gsub(/\A\p{Space}*/, '').gsub(",", "") if value.include? "(" value = value[1..-2].to_i * -1 end result[name.split(".")[-1]] = value unless name.empty? || value.to_s.empty? end end end