Class: SchwabRb::DataObjects::OptionExpirationChain

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/schwab_rb/data_objects/option_expiration_chain.rb

Defined Under Namespace

Classes: Expiration

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ OptionExpirationChain

Returns a new instance of OptionExpirationChain.



14
15
16
17
# File 'lib/schwab_rb/data_objects/option_expiration_chain.rb', line 14

def initialize(data)
  @expiration_list = data["expirationList"]&.map { |expiration_data| Expiration.new(expiration_data) } || []
  @status = data["status"]
end

Instance Attribute Details

#expiration_listObject (readonly)

Returns the value of attribute expiration_list.



6
7
8
# File 'lib/schwab_rb/data_objects/option_expiration_chain.rb', line 6

def expiration_list
  @expiration_list
end

#statusObject (readonly)

Returns the value of attribute status.



6
7
8
# File 'lib/schwab_rb/data_objects/option_expiration_chain.rb', line 6

def status
  @status
end

Class Method Details

.build(data) ⇒ Object



9
10
11
# File 'lib/schwab_rb/data_objects/option_expiration_chain.rb', line 9

def build(data)
  new(data)
end

Instance Method Details

#countObject Also known as: size, length



55
56
57
# File 'lib/schwab_rb/data_objects/option_expiration_chain.rb', line 55

def count
  @expiration_list.length
end

#each(&block) ⇒ Object



65
66
67
68
69
# File 'lib/schwab_rb/data_objects/option_expiration_chain.rb', line 65

def each(&block)
  return enum_for(:each) unless block_given?

  @expiration_list.each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/schwab_rb/data_objects/option_expiration_chain.rb', line 61

def empty?
  @expiration_list.empty?
end

#find_by_date(date) ⇒ Object



26
27
28
29
# File 'lib/schwab_rb/data_objects/option_expiration_chain.rb', line 26

def find_by_date(date)
  date_str = date.is_a?(Date) ? date.strftime("%Y-%m-%d") : date.to_s
  @expiration_list.find { |exp| exp.expiration_date == date_str }
end

#find_by_days_to_expiration(days) ⇒ Object



31
32
33
# File 'lib/schwab_rb/data_objects/option_expiration_chain.rb', line 31

def find_by_days_to_expiration(days)
  @expiration_list.select { |exp| exp.days_to_expiration == days }
end

#monthly_expirationsObject



39
40
41
# File 'lib/schwab_rb/data_objects/option_expiration_chain.rb', line 39

def monthly_expirations
  @expiration_list.select { |exp| exp.expiration_type == "M" }
end

#non_standard_expirationsObject



51
52
53
# File 'lib/schwab_rb/data_objects/option_expiration_chain.rb', line 51

def non_standard_expirations
  @expiration_list.reject(&:standard?)
end

#quarterly_expirationsObject



43
44
45
# File 'lib/schwab_rb/data_objects/option_expiration_chain.rb', line 43

def quarterly_expirations
  @expiration_list.select { |exp| exp.expiration_type == "Q" }
end

#standard_expirationsObject



47
48
49
# File 'lib/schwab_rb/data_objects/option_expiration_chain.rb', line 47

def standard_expirations
  @expiration_list.select(&:standard?)
end

#to_hObject



19
20
21
22
23
24
# File 'lib/schwab_rb/data_objects/option_expiration_chain.rb', line 19

def to_h
  {
    "expirationList" => @expiration_list.map(&:to_h),
    "status" => @status
  }
end

#weekly_expirationsObject



35
36
37
# File 'lib/schwab_rb/data_objects/option_expiration_chain.rb', line 35

def weekly_expirations
  @expiration_list.select { |exp| exp.expiration_type == "W" }
end