Class: FinModeling::CompanyFilingCalculation
- Inherits:
-
Object
- Object
- FinModeling::CompanyFilingCalculation
show all
- Defined in:
- lib/finmodeling/company_filing_calculation.rb
Direct Known Subclasses
AssetsCalculation, BalanceSheetCalculation, CashChangeCalculation, CashFlowStatementCalculation, ComprehensiveIncomeCalculation, ComprehensiveIncomeStatementCalculation, EquityChangeCalculation, IncomeStatementCalculation, LiabsAndEquityCalculation, NetIncomeCalculation, ShareholderEquityStatementCalculation
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of CompanyFilingCalculation.
5
6
7
|
# File 'lib/finmodeling/company_filing_calculation.rb', line 5
def initialize(calculation)
@calculation = calculation
end
|
Instance Attribute Details
#calculation ⇒ Object
FIXME: get rid of this (it was just to enable testing)
3
4
5
|
# File 'lib/finmodeling/company_filing_calculation.rb', line 3
def calculation
@calculation
end
|
Instance Method Details
#label ⇒ Object
9
10
11
|
# File 'lib/finmodeling/company_filing_calculation.rb', line 9
def label
@calculation.label
end
|
#leaf_items(args = {}) ⇒ Object
20
21
22
|
# File 'lib/finmodeling/company_filing_calculation.rb', line 20
def leaf_items(args={})
@calculation.leaf_items(args[:period])
end
|
#leaf_items_sum(args) ⇒ Object
24
25
26
27
28
|
# File 'lib/finmodeling/company_filing_calculation.rb', line 24
def leaf_items_sum(args)
leaves = leaf_items(:period => args[:period])
values = leaves.map{ |item| item.value(args[:mapping]) }
values.inject(:+)
end
|
#periods ⇒ Object
13
14
15
16
17
18
|
# File 'lib/finmodeling/company_filing_calculation.rb', line 13
def periods
arr = leaf_items.map{ |x| x.context.period }
.sort{ |x,y| x.to_pretty_s <=> y.to_pretty_s }
.uniq
PeriodArray.new(arr)
end
|
#summary(args) ⇒ Object
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/finmodeling/company_filing_calculation.rb', line 30
def summary(args)
calc_summary = CalculationSummary.new
calc_summary.title = case
when @calculation.instance_variable_defined?(:@title) then @calculation.title
when @calculation.instance_variable_defined?(:@label) then @calculation.label
else "[No title]"
end
calc_summary.title += case
when @calculation.instance_variable_defined?(:@item_id) then " (#{@calculation.item_id})"
when @calculation.instance_variable_defined?(:@role) then " (#{@calculation.role })"
else ""
end
calc_summary.rows = leaf_items(args).collect do |item|
CalculationRow.new(:key => item.pretty_name,
:vals => [ item.value(args[:mapping] )])
end
return calc_summary
end
|
#write_constructor(file, item_name) ⇒ Object
51
52
53
54
55
|
# File 'lib/finmodeling/company_filing_calculation.rb', line 51
def write_constructor(file, item_name)
item_calc_name = item_name + "_calc"
@calculation.write_constructor(file, item_calc_name)
file.puts "#{item_name} = FinModeling::CompanyFilingCalculation.new(#{item_calc_name})"
end
|