Class: CwCardUtils::CardDataSource

Inherits:
Object
  • Object
show all
Defined in:
lib/cw_card_utils/scryfall_cmc_data.rb

Overview

Public: Abstract base class for card data sources. 日本語: カードデータソースの抽象基底クラスです。

Direct Known Subclasses

MongoCardDataSource, ScryfallCmcData

Instance Method Summary collapse

Instance Method Details

#cmc_for_card(name) ⇒ Numeric?

Public: Fetch converted mana cost for card. 日本語: 指定カードの点数で見たマナ・コストを取得します。

Parameters:

  • name (String)

Returns:

  • (Numeric, nil)


24
25
26
27
28
29
# File 'lib/cw_card_utils/scryfall_cmc_data.rb', line 24

def cmc_for_card(name)
  card = find_card(name)
  card&.dig("cmc") || card&.cmc
rescue StandardError
  nil
end

#color_identity_for_card(name) ⇒ Array<String>

Public: Fetch color identity for card. 日本語: 指定カードの色アイデンティティを取得します。

Parameters:

  • name (String)

Returns:

  • (Array<String>)


36
37
38
39
40
41
# File 'lib/cw_card_utils/scryfall_cmc_data.rb', line 36

def color_identity_for_card(name)
  card = find_card(name)
  card&.dig("color_identity") || card&.color_identity || []
rescue StandardError
  []
end

#find_card(name) ⇒ Hash, ...

Public: Find a card record by name. 日本語: カード名でレコードを検索します。

Parameters:

  • name (String)

Returns:

  • (Hash, #dig, nil)

Raises:

  • (NotImplementedError)


15
16
17
# File 'lib/cw_card_utils/scryfall_cmc_data.rb', line 15

def find_card(name)
  raise NotImplementedError, "Subclasses must implement find_card"
end

#keywords_for_card(name) ⇒ Array<String>

Public: Fetch keywords for card. 日本語: 指定カードのキーワードを取得します。

Parameters:

  • name (String)

Returns:

  • (Array<String>)


48
49
50
51
52
53
# File 'lib/cw_card_utils/scryfall_cmc_data.rb', line 48

def keywords_for_card(name)
  card = find_card(name)
  card&.dig("keywords") || card&.keywords || []
rescue StandardError
  []
end

#oracle_text_for_card(name) ⇒ String?

Public: Fetch oracle text for card. 日本語: 指定カードのオラクルテキストを取得します。

Parameters:

  • name (String)

Returns:

  • (String, nil)


84
85
86
87
88
89
# File 'lib/cw_card_utils/scryfall_cmc_data.rb', line 84

def oracle_text_for_card(name)
  card = find_card(name)
  card&.dig("oracle_text") || card&.oracle_text
rescue StandardError
  nil
end

#power_for_card(name) ⇒ String, ...

Public: Fetch power for card. 日本語: 指定カードのパワーを取得します。

Parameters:

  • name (String)

Returns:

  • (String, Integer, nil)


72
73
74
75
76
77
# File 'lib/cw_card_utils/scryfall_cmc_data.rb', line 72

def power_for_card(name)
  card = find_card(name)
  card&.dig("power") || card&.power
rescue StandardError
  nil
end

#toughness_for_card(name) ⇒ String, ...

Public: Fetch toughness for card. 日本語: 指定カードのタフネスを取得します。

Parameters:

  • name (String)

Returns:

  • (String, Integer, nil)


60
61
62
63
64
65
# File 'lib/cw_card_utils/scryfall_cmc_data.rb', line 60

def toughness_for_card(name)
  card = find_card(name)
  card&.dig("toughness") || card&.toughness
rescue StandardError
  nil
end

#type_for_card(name) ⇒ String?

Public: Fetch type line for card (nil for Lands). 日本語: 指定カードのタイプ行を取得します (土地は nil)。

Parameters:

  • name (String)

Returns:

  • (String, nil)


96
97
98
99
100
101
102
103
# File 'lib/cw_card_utils/scryfall_cmc_data.rb', line 96

def type_for_card(name)
  card = find_card(name)
  type = card&.dig("type_line") || card&.type_line
  return nil if type&.include?("Land")
  type
rescue StandardError
  nil
end