lib/litexbrl/tdnet.rb in litexbrl-0.0.2 vs lib/litexbrl/tdnet.rb in litexbrl-0.0.3

- old
+ new

@@ -1,7 +1,71 @@ +require 'litexbrl/tdnet/account_item' +require 'litexbrl/tdnet/summary_attribute' +require 'litexbrl/tdnet/results_forecast_attribute' +require 'litexbrl/tdnet/company_attribute' +require 'litexbrl/tdnet/financial_information' require 'litexbrl/tdnet/summary' +require 'litexbrl/tdnet/results_forecast' +require 'litexbrl/tdnet/financial_information2' +require 'litexbrl/tdnet/summary2' +require 'litexbrl/tdnet/results_forecast2' module LiteXBRL module TDnet + + class << self + + def parse(path) + doc = File.open(path) {|f| Nokogiri::XML f } + read doc + end + + def parse_string(str) + doc = Nokogiri::XML str + read doc + end + + private + + def read(doc) + document = find_document doc + + document.read doc + end + + def find_document(doc) + namespaces = doc.namespaces + + # TODO 委嬢する? + if summary? namespaces + Summary + elsif summary2? namespaces + Summary2 + elsif results_forecast? namespaces + ResultsForecast + elsif results_forecast2? namespaces + ResultsForecast2 + else + raise StandardError.new "ドキュメントがありません" + end + end + + def summary?(namespaces) + namespaces.keys.any? {|ns| /tdnet-.+(jpsm|ussm|ifsm)/ =~ ns } + end + + def summary2?(namespaces) + namespaces.keys.any? {|ns| /tse-.+(jpsm|ussm|ifsm)/ =~ ns } + end + + def results_forecast?(namespaces) + namespaces.keys.any? {|ns| /tdnet-rvfc/ =~ ns } + end + + def results_forecast2?(namespaces) + namespaces.keys.any? {|ns| /tse-rvfc/ =~ ns } + end + + end end end \ No newline at end of file