Module: Finrb
- Defined in:
- lib/finrb.rb,
lib/finrb/tvm.rb,
lib/finrb/rates.rb,
lib/finrb/config.rb,
lib/finrb/errors.rb,
lib/finrb/ratios.rb,
lib/finrb/yields.rb,
lib/finrb/returns.rb,
lib/finrb/version.rb,
lib/finrb/core_ext.rb,
lib/finrb/cashflows.rb,
lib/finrb/precision.rb,
lib/finrb/accounting.rb,
lib/finrb/validation.rb,
lib/finrb/transaction.rb,
lib/finrb/amortization.rb,
lib/finrb/numerical/brent.rb,
lib/finrb/numerical/rate_search.rb,
sig/finrb.rbs
Overview
The Finrb module adheres to the following conventions for financial calculations:
- Positive values represent cash inflows (money received); negative values represent cash outflows (payments).
- principal represents the outstanding balance of a loan or annuity.
- rate represents the interest rate per period.
Defined Under Namespace
Modules: Accounting, Cashflow, CoreExt, Numerical, Precision, Ratios, Returns, TVM, Validation, Yields, _Configuration, _ConfigurationBuilder Classes: Amortization, ConvergenceError, DomainError, Error, Interest, InvalidCashflowError, Payment, Rate, Transaction
Constant Summary collapse
- VERSION =
'1.2.0'
Class Method Summary collapse
- .config ⇒ _Configuration
-
.configure {|builder| ... } ⇒ _Configuration
Atomically replace the process-wide defaults.
-
.with_config(**overrides) ⇒ void
Apply a validated configuration only for the current execution context and restore the previous configuration even when the block raises.
Class Method Details
.config ⇒ _Configuration
12 13 14 |
# File 'lib/finrb/config.rb', line 12 def self.config Thread.current[CONFIG_OVERRIDE_KEY] || (@config ||= DEFAULT_CONFIGURATION) end |
.configure {|builder| ... } ⇒ _Configuration
Atomically replace the process-wide defaults. Configure the application at
startup; use with_config for temporary or concurrent overrides.
18 19 20 21 22 23 24 |
# File 'lib/finrb/config.rb', line 18 def self.configure raise(ArgumentError, 'configuration requires a block.') unless block_given? builder = ConfigurationBuilder.new(**config.to_h) yield(builder) @config = build_configuration(builder.to_h) end |
.with_config(**overrides) ⇒ void
This method returns an undefined value.
Apply a validated configuration only for the current execution context and restore the previous configuration even when the block raises.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/finrb/config.rb', line 28 def self.with_config(**overrides) raise(ArgumentError, 'configuration override requires a block.') unless block_given? unknown = overrides.keys - config.to_h.keys raise(ArgumentError, "unknown configuration options: #{unknown.join(', ')}") unless unknown.empty? previous = Thread.current[CONFIG_OVERRIDE_KEY] Thread.current[CONFIG_OVERRIDE_KEY] = build_configuration(config.to_h.merge(overrides)) begin yield ensure Thread.current[CONFIG_OVERRIDE_KEY] = previous end end |