Class: FinModeling::CompanyFiling

Inherits:
Object
  • Object
show all
Defined in:
lib/finmodeling/company_filing.rb

Direct Known Subclasses

AnnualReportFiling

Constant Summary collapse

DOWNLOAD_PATH =
File.join(FinModeling::BASE_PATH, "filings/")

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(download_dir) ⇒ CompanyFiling

Returns a new instance of CompanyFiling.



47
48
49
50
51
52
53
54
55
56
# File 'lib/finmodeling/company_filing.rb', line 47

def initialize(download_dir)
  instance_file = Xbrlware.file_grep(download_dir)["ins"]
  if instance_file.nil?
    raise "Filing (\"#{download_dir}\") has no instance files. No XBRL filing?"
  end
  
  @instance = Xbrlware.ins(instance_file)
  @taxonomy = @instance.taxonomy
  @taxonomy.init_all_lb
end

Instance Attribute Details

#instanceObject

FIXME: hide this



45
46
47
# File 'lib/finmodeling/company_filing.rb', line 45

def instance
  @instance
end

Class Method Details

.download(url) ⇒ Object



58
59
60
61
62
63
64
65
66
67
# File 'lib/finmodeling/company_filing.rb', line 58

def self.download(url)
  FileUtils.mkdir_p(DOWNLOAD_PATH) if !File.exists?(DOWNLOAD_PATH)
  download_dir = DOWNLOAD_PATH + url.split("/")[-2]
  if !File.exists?(download_dir)
    dl = Xbrlware::Edgar::HTMLFeedDownloader.new()
    dl.download(url, download_dir)
  end
  
  return self.new(download_dir)
end

Instance Method Details

#disclosuresObject



79
80
81
82
83
84
# File 'lib/finmodeling/company_filing.rb', line 79

def disclosures
  @taxonomy.callb
           .calculation
           .select{ |x| x.is_disclosure? }
           .map{ |x| CompanyFilingCalculation.new(x) }
end


74
75
76
77
# File 'lib/finmodeling/company_filing.rb', line 74

def print_calculations
  calculations=@taxonomy.callb.calculation
  calculations.each { |calc| calc.print_tree }
end


69
70
71
72
# File 'lib/finmodeling/company_filing.rb', line 69

def print_presentations
  presentations = @taxonomy.prelb.presentation
  presentations.each { |pres| pres.print_tree }
end