class LiteXBRL::TDnet::FinancialInformation
Private Class Methods
context_hash(consolidation, season)
click to toggle source
contextを設定します
# File lib/litexbrl/tdnet/financial_information.rb, line 36 def context_hash(consolidation, season) raise StandardError.new("通期・四半期が設定されていません。") unless season year_duration = "Year#{consolidation}Duration" { context_duration: "Current#{season}#{consolidation}Duration", context_prior_duration: "Prior#{season}#{consolidation}Duration", context_instant: "Current#{season}#{consolidation}Instant", context_forecast: ->(quarter) { quarter == 4 ? "Next#{year_duration}" : "Current#{year_duration}"}, } end
find_consolidation(doc)
click to toggle source
連結・非連結を取得します
# File lib/litexbrl/tdnet/financial_information.rb, line 20 def find_consolidation(doc) cons = doc.at_xpath("//xbrli:xbrl/xbrli:context[@id='CurrentYearConsolidatedDuration']/xbrli:entity/xbrli:identifier") non_cons = doc.at_xpath("//xbrli:xbrl/xbrli:context[@id='CurrentYearNonConsolidatedDuration']/xbrli:entity/xbrli:identifier") if cons "Consolidated" elsif non_cons "NonConsolidated" else raise StandardError.new("連結・非連結ともに該当しません。") end end
find_month(doc, consolidation)
click to toggle source
決算月を取得します
# File lib/litexbrl/tdnet/financial_information.rb, line 68 def find_month(doc, consolidation) elm_end = doc.at_xpath("//xbrli:xbrl/xbrli:context[@id='CurrentYear#{consolidation}Duration']/xbrli:period/xbrli:endDate") to_month(elm_end) end
find_quarter(doc, consolidation, context)
click to toggle source
四半期を取得します
# File lib/litexbrl/tdnet/financial_information.rb, line 76 def find_quarter(doc, consolidation, context) elm_end = doc.at_xpath("//xbrli:xbrl/xbrli:context[@id='CurrentYear#{consolidation}Duration']/xbrli:period/xbrli:endDate") elm_instant = doc.at_xpath("//xbrli:xbrl/xbrli:context[@id='#{context[:context_instant]}']/xbrli:period/xbrli:instant") to_quarter(elm_end, elm_instant) end
find_securities_code(doc, consolidation)
click to toggle source
証券コードを取得します
# File lib/litexbrl/tdnet/financial_information.rb, line 52 def find_securities_code(doc, consolidation) elm_code = doc.at_xpath("//xbrli:xbrl/xbrli:context[@id='CurrentYear#{consolidation}Duration']/xbrli:entity/xbrli:identifier") to_securities_code(elm_code) end
find_value(doc, item, context) { |item, context| ... }
click to toggle source
勘定科目の値を取得します
# File lib/litexbrl/tdnet/financial_information.rb, line 130 def find_value(doc, item, context) # 配列の場合、いずれかに該当するもの if item[0].is_a? String xpath = item.map {|item| yield(item, context) }.join('|') elm = doc.at_xpath xpath elm.content if elm # 2次元配列の場合、先頭の配列から優先に elsif item[0].is_a? Array item.each do |item| xpath = item.map {|item| yield(item, context) }.join('|') elm = doc.at_xpath xpath return elm.content if elm end nil # 該当なし end end
find_value_tse_t_ed(doc, item, context)
click to toggle source
決算短信サマリの勘定科目の値を取得します
# File lib/litexbrl/tdnet/financial_information.rb, line 121 def find_value_tse_t_ed(doc, item, context) find_value(doc, item, context) do |item, context| "//xbrli:xbrl/tse-t-ed:#{item}[@contextRef='#{context}']" end end
find_year(doc, consolidation)
click to toggle source
決算年を取得します
# File lib/litexbrl/tdnet/financial_information.rb, line 60 def find_year(doc, consolidation) elm_end = doc.at_xpath("//xbrli:xbrl/xbrli:context[@id='CurrentYear#{consolidation}Duration']/xbrli:period/xbrli:endDate") to_year(elm_end) end
read(doc)
click to toggle source
# File lib/litexbrl/tdnet/financial_information.rb, line 11 def read(doc) xbrl, accounting_base, context = find_base_data(doc) find_data(doc, xbrl, accounting_base, context) end
to_quarter(elm_end, elm_instant)
click to toggle source
四半期を取得します
# File lib/litexbrl/tdnet/financial_information.rb, line 85 def to_quarter(elm_end, elm_instant) raise StandardError.new("四半期を取得できません。") unless elm_end || elm_instant month_end = elm_end.content.split('-')[1].to_i month = elm_instant.content.split('-')[1].to_i if month <= month_end diff = month_end - month if diff < 3 4 elsif diff < 6 3 elsif diff < 9 2 else 1 end else diff = month - month_end if diff <= 3 1 elsif diff <= 6 2 elsif diff <= 9 3 else 4 end end end