Sha256: 13e3b6449571bdb17ef5bc495883b3399348d1e7594195b00771703701ebc811

Contents?: true

Size: 1.89 KB

Versions: 2

Compression:

Stored size: 1.89 KB

Contents

class YfAsDataframe
  module Analysis
    extend ActiveSupport::Concern

    # attr_accessor :ticker

    def self.included(base) # built-in Ruby hook for modules
      base.class_eval do
        original_method = instance_method(:initialize)
        define_method(:initialize) do |*args, &block|
          original_method.bind(self).call(*args, &block)
          initialize_analysis # (your module code here)
        end
      end
    end

    def initialize_analysis
      @earnings_trend = nil
      @analyst_trend_details = nil
      @analyst_price_target = nil
      @ev_est = nil
      @ps_est = nil
    end


    def earnings_trend #(self)
      raise YFNotImplementedError.new('earnings_trend') if @earnings_trend.nil?
      return earnings_trend
    end

    def analyst_trend_details #(self)
      raise YFNotImplementedError.new('analyst_trend_details') if @analyst_trend_details.nil?
      return analyst_trend_details
    end

    alias_method :trend_details, :analyst_trend_details

    def analyst_price_target #(self)
      raise YFNotImplementedError.new('analyst_price_target') if @analyst_price_target.nil?
      return analyst_price_target
    end

    alias_method :price_targets, :analyst_price_target

    def rev_est #(self)
      raise YFNotImplementedError.new('rev_est') if @rev_est.nil?
      return rev_est
    end

    alias_method :rev_forecast, :rev_est

    def eps_est #(self)
      raise YFNotImplementedError.new('eps_est') if @eps_est.nil?
      return eps_est
    end

    alias_method :earnings_forecast, :eps_est

    # analysis_methods = [:earnings_trend, :analyst_trend_details, :trend_details, \
    #                     :price_targets, :analyst_price_target, :rev_est, \
    #                     :rev_forecast, :eps_est, :earnings_forecast ]
    # analysis_methods.each do |meth|
    #   #   delegate meth, to: :analysis
    #   alias_method "get_#{meth}".to_sym, meth
    # end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
yf_as_dataframe-0.3.0 lib/yf_as_dataframe/analysis.rb
yf_as_dataframe-0.2.15 lib/yf_as_dataframe/analysis.rb