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