runeterra_cards 0.2.1 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e072725d1ac2b1af062cfa42826a5efd9eb991eb51f65d8897b90a5110fbf8c7
4
- data.tar.gz: a3a260958b84602a94e53d0ccaa19f714fb7fbdccf036569d195419e13dbbc77
3
+ metadata.gz: 13de26db2b79d60bca9fce39d36d3d82fcaaa19fbcdae3dc2c6f34c785253d91
4
+ data.tar.gz: 061a9c9e56f751fc2451166af0e9b27f415c4b9293b1ac1d0dc58df714a46a6b
5
5
  SHA512:
6
- metadata.gz: f7c8a7b954a62793eb396e299e52ea104e8cf08b0d9d18c616b8d37bad973620c01981460dced44320f09bfc9f7a84423d1e5f6f8caba58db9c9ba35ec70ce01
7
- data.tar.gz: ac21bf2ed0a0ee367771a33b0417456eb1986469998760484875e5d5871d03e7a720cfd1a2ef9a808e69eb42339cd92ecc10439755b4b6959e60ca36b4b510ea
6
+ metadata.gz: cde13398e27b94c917c74efb2cedf4fa82c3af5b8cc7e2da4a19af959176bf24703574170718d17ace331cf20e23b019001150fdd12a90a81688cd2f17f186c3
7
+ data.tar.gz: 18d73970af5591a2f65ccf9ba4739800d1025f042499416ed5e2ccd6b5ad33797c3b4640bd7b89dd99600b1a4f2a3bc0f641be0499d392ad56385ec53318dc22
data/.yardopts ADDED
@@ -0,0 +1,4 @@
1
+ --output-dir yard
2
+ --readme doc/README.md
3
+ -
4
+ doc/*
data/doc/CHANGELOG.md CHANGED
@@ -4,9 +4,32 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.4.1] - 2021-02-05
8
+
9
+ Fixed
10
+
11
+ - Fixed issue where card numbers > 127 came out extremely wrong, e.g. Aphelios and several other of the new cards ([issue #4](https://github.com/zofrex/runeterra_cards/issues/4))
12
+ ## [0.4.0] - 2020-12-08
13
+ ### Added
14
+ - [`CardMetadata` now has a `#cost` attribute representing the mana cost of a card.](https://github.com/zofrex/runeterra_cards/pull/3) (thanks, [nieszkah](https://github.com/alpm)!) Technically this is backwards-compatibility breaking as it makes a new field in metadata json mandatory.
15
+
16
+ ## [0.3.0] - 2020-08-31
17
+ ### Added
18
+ - `Cost` class to represent crafting cost as wildcards & shards.
19
+ - `Metadata#cost_of` to get the cost of crafting a `CardSet`.
20
+ - Documented everything that is public & non-deprecated.
21
+
22
+ ## [0.2.3] - 2020-08-31
23
+ ### Fixed
24
+ - Fixed issue with documentation not rendering on rubydoc.info.
25
+
26
+ ## [0.2.2] - 2020-08-30
27
+ ### Fixed
28
+ - Included .yardopts in the Gem so README and CHANGELOG get included in documentation generated from the Gem.
29
+
7
30
  ## [0.2.1] - 2020-08-29
8
31
  ### Fixed
9
- - Correctly packaged README and CHANGELOG in the Gem
32
+ - Correctly packaged README and CHANGELOG in the Gem.
10
33
 
11
34
  ## [0.2.0] - 2020-08-29
12
35
  ### Added
data/doc/README.md CHANGED
@@ -9,13 +9,13 @@ This library makes it easy to decode Legends of Runeterra deck codes, load Data
9
9
  Add the following to your `Gemfile`:
10
10
 
11
11
  ```
12
- gem 'runeterra_cards', '~> 0.2.0'
12
+ gem 'runeterra_cards', '~> 0.4.1'
13
13
  ```
14
14
 
15
15
  Or, if you're building a Gem, your `.gemspec`:
16
16
 
17
17
  ```
18
- spec.add_dependency 'runeterra_cards', '~> 0.2.0'
18
+ spec.add_dependency 'runeterra_cards', '~> 0.4.1'
19
19
  ```
20
20
 
21
21
  ## Updates & Versioning
@@ -7,8 +7,15 @@ require 'runeterra_cards/card_and_count'
7
7
  require 'runeterra_cards/card_metadata'
8
8
  require 'runeterra_cards/metadata'
9
9
  require 'runeterra_cards/card_set'
10
+ require 'runeterra_cards/cost'
10
11
 
12
+ # The top-level module for +runeterra_cards+.
13
+ #
14
+ # Some of the most useful classes are {CardSet} and {Metadata}.
15
+ #
16
+ # You might also want to check out the {file:doc/README.md} and the {file:doc/CHANGELOG.md}.
11
17
  module RuneterraCards
12
18
  # The version of deck encoding supported
13
19
  SUPPORTED_VERSION = 2
20
+ public_constant :SUPPORTED_VERSION
14
21
  end
@@ -16,7 +16,7 @@ module RuneterraCards
16
16
  # @param faction_number [Fixnum]
17
17
  # @param card_number [Fixnum]
18
18
  # @param count [Fixnum]
19
- def initialize(code: nil, count:, set: nil, faction_number: nil, card_number: nil)
19
+ def initialize(count:, code: nil, set: nil, faction_number: nil, card_number: nil)
20
20
  if code
21
21
  raise if set || faction_number || card_number
22
22
 
@@ -30,10 +30,12 @@ module RuneterraCards
30
30
  @count = count
31
31
  end
32
32
 
33
+ #:nodoc:
33
34
  def eql?(other)
34
35
  code.eql?(other.code) && count.equal?(other.count)
35
36
  end
36
37
 
38
+ #:nodoc:
37
39
  def hash
38
40
  [code, count].hash
39
41
  end
@@ -26,6 +26,10 @@ module RuneterraCards
26
26
  # @return [String]
27
27
  attr_reader :card_code
28
28
 
29
+ # Returns the cost attribute. For example: 3.
30
+ # @return [Fixnum]
31
+ attr_reader :cost
32
+
29
33
  # Returns the card's rarity as a symbol. Can be one of: +:none+, +:common+, +:rare+, +:epic+, or +:champion+
30
34
  # @return [Symbol]
31
35
  attr_reader :rarity
@@ -38,12 +42,15 @@ module RuneterraCards
38
42
  # @option hash [String] name
39
43
  # @option hash [String] cardCode
40
44
  # @option hash [Boolean] collectible
45
+ # @option hash [Fixnum] cost
46
+ # @option hash [String] rarityRef
41
47
  #
42
48
  # @raise [MissingCardDataError] if any of the expected hash parameters are missing, or if +rarityRef+ contains an
43
49
  # unexpected value.
44
50
  def initialize(hash)
45
51
  begin
46
- @name, @card_code, @collectible, rarity_ref = hash.fetch_values('name', 'cardCode', 'collectible', 'rarityRef')
52
+ @name, @card_code, @collectible, @cost, rarity_ref =
53
+ hash.fetch_values('name', 'cardCode', 'collectible', 'cost', 'rarityRef')
47
54
  rescue KeyError => e
48
55
  raise MetadataLoadError.new(hash['name'] || hash['cardCode'], "Missing expected key: #{e.key}")
49
56
  end
@@ -51,8 +58,7 @@ module RuneterraCards
51
58
  @rarity = RARITIES[rarity_ref]
52
59
  return unless rarity.nil?
53
60
 
54
- raise MetadataLoadError.new(name, "Invalid value for rarityRef, got: #{rarity_ref}, "\
55
- "expected one of: #{RARITIES.keys.join ', '}")
61
+ raise MetadataLoadError.invalid_rarity(name, rarity_ref, RARITIES.keys)
56
62
  end
57
63
 
58
64
  # Whether or not the card is collectible.
@@ -7,8 +7,10 @@ module RuneterraCards
7
7
  #
8
8
  # @todo The API to this class is very unstable and will change a lot in a coming release.
9
9
  class CardSet
10
+ # @return [Hash<String,Fixnum>]
10
11
  attr_reader :cards
11
12
 
13
+ # @param [Hash<String,Fixnum>] cards A Hash of card codes mapping to card counts
12
14
  def initialize(cards)
13
15
  @cards = cards
14
16
  end
@@ -18,30 +20,40 @@ module RuneterraCards
18
20
  new(Hash[set.map { |cac| [cac.code, cac.count] }])
19
21
  end
20
22
 
23
+ # Subtract another {CardSet CardSet} from this one. Items with count 0 are not represented in the returned
24
+ # {CardSet CardSet}, they are removed altogether.
25
+ # @param [CardSet] other An object that responds to {#count_for_card_code}
26
+ # @return [CardSet]
21
27
  def -(other)
22
- remaining_cards = cards.each_with_object({}) do |(code, count), result|
23
- new_count = count - other.count_for_card_code(code)
24
- result[code] = new_count unless new_count.equal?(0)
25
- end
28
+ remaining_cards =
29
+ cards.each_with_object({}) do |(code, count), result|
30
+ new_count = count - other.count_for_card_code(code)
31
+ result[code] = new_count unless new_count.equal?(0)
32
+ end
26
33
 
27
34
  CardSet.new(remaining_cards)
28
35
  end
29
36
 
30
- # @return Enumerator<CardAndCount>
37
+ # @return [Enumerator<CardAndCount>]
31
38
  # @deprecated
32
39
  def as_card_and_counts
33
40
  cards.map { |code, count| CardAndCount.new(code: code, count: count) }
34
41
  end
35
42
 
43
+ # Returns how many of the given card are in this CardSet.
44
+ # @param [String] code Card code, e.g. "01DE031"
45
+ # @return [Fixnum] How many of the card are in this CardSet, or 0 if it isn't present.
36
46
  def count_for_card_code(code)
37
47
  cards[code] || 0
38
48
  end
39
49
 
50
+ # Parse a Deck Code.
40
51
  # @param deck_code [String]
41
52
  # @raise [Base32Error] if the deck code cannot be Base32 decoded.
42
53
  # @raise [UnrecognizedVersionError] if the deck code's version is not supported by this library
43
54
  # (see {SUPPORTED_VERSION}).
44
55
  # @raise [EmptyInputError] if the deck code is an empty string.
56
+ # @return [CardSet]
45
57
  def self.from_deck_code(deck_code)
46
58
  binary_data = decode_base32(deck_code)
47
59
  format, version = decode_format_and_version(binary_data[0])
@@ -50,8 +62,9 @@ module RuneterraCards
50
62
 
51
63
  raise unless format.equal? 1
52
64
 
53
- int_array = binary_data[1..].unpack('w*')
65
+ int_array = unpack_uleb128(binary_data[1..])
54
66
  cards = assemble_card_list(int_array)
67
+
55
68
  from_card_and_counts(cards)
56
69
  end
57
70
 
@@ -80,6 +93,8 @@ module RuneterraCards
80
93
 
81
94
  private_class_method :decode_format_and_version
82
95
 
96
+ # @param [Array<Fixnum>] array
97
+ # @return [Array<CardAndCount>]
83
98
  def self.assemble_card_list(array)
84
99
  3.downto(1).flat_map do |number_of_copies|
85
100
  set_faction_combination_count = array.shift
@@ -94,5 +109,19 @@ module RuneterraCards
94
109
  end
95
110
 
96
111
  private_class_method :assemble_card_list
112
+
113
+ # @param [String] binary
114
+ # @return [Enumerable<Fixnum>]
115
+ def self.unpack_uleb128(binary)
116
+ binary.each_byte.slice_after { |b| (b & 0b1000_0000).zero? }.map do |int_bytes|
117
+ acc = 0
118
+ int_bytes.each_with_index do |byte, index|
119
+ acc += (byte & 0b0111_1111) << (7 * index)
120
+ end
121
+ acc
122
+ end
123
+ end
124
+
125
+ private_class_method :unpack_uleb128
97
126
  end
98
127
  end
@@ -0,0 +1,94 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuneterraCards
4
+ # Represents the cost of a {CardSet}, as wildcards or shards.
5
+ # To get the cost of a {CardSet} you need to call {Metadata#cost_of}, as rarity (and therefore cost) is a property
6
+ # of metadata.
7
+ #
8
+ # A {Cost} object tells you how many wildcards would be needed to craft a {CardSet}, or alternatively how many
9
+ # shards would be needed. You can figure out the cost of a mixture of wildcards and shards by creating a new {Cost}
10
+ # object representing the wildcards to be spent, and subtracting that from the original {Cost} object.
11
+ #
12
+ # @example Getting the shard cost for a {CardSet}
13
+ # cost = metadata.cost_of(card_set)
14
+ # cost.shards #=> 3000
15
+ #
16
+ # @example Getting wildcard costs for a {CardSet}
17
+ # cost = metadata.cost_of(card_set)
18
+ # cost.common #=> 3
19
+ # cost.rare #=> 1
20
+ # # etc
21
+ #
22
+ # @example Getting remaining cost after spending some wildcards
23
+ # cost = metadata.cost_of(card_set)
24
+ # cost.dust #=> 11500
25
+ #
26
+ # wildcards_in_hand = Cost.new(10, 5, 3, 1)
27
+ # remaining_cost = cost - wildcards_in_hand
28
+ # remaining_cost.dust #=> 5100
29
+ class Cost
30
+ # The number of Common wildcards needed
31
+ # @return [Fixnum] count
32
+ attr_reader :common
33
+
34
+ # The number of Rare wildcards needed
35
+ # @return [Fixnum] count
36
+ attr_reader :rare
37
+
38
+ # The number of Epic wildcards needed
39
+ # @return [Fixnum] count
40
+ attr_reader :epic
41
+
42
+ # The number of Champion wildcards needed
43
+ # @return [Fixnum] count
44
+ attr_reader :champion
45
+
46
+ # @param [Fixnum] common
47
+ # @param [Fixnum] rare
48
+ # @param [Fixnum] epic
49
+ # @param [Fixnum] champion
50
+ def initialize(common, rare, epic, champion)
51
+ @common, @rare, @epic, @champion = common, rare, epic, champion
52
+ end
53
+
54
+ # The number of shards needed. I.e. the equivalent amount of shards for all these wildcards.
55
+ # @return [Fixnum] shards
56
+ def shards
57
+ common * 100 +
58
+ rare * 300 +
59
+ epic * 1200 +
60
+ champion * 3000
61
+ end
62
+
63
+ # Whether this Cost is equal to another. Equality means exactly the same number of each wildcard, not just the
64
+ # same shard count.
65
+ # @param [Cost] other an object that response to {#common}, {#rare}, {#epic}, and {#champion}.
66
+ # @return [Boolean] equal?
67
+ def ==(other)
68
+ common.equal?(other.common) &&
69
+ rare.equal?(other.rare) &&
70
+ epic.equal?(other.epic) &&
71
+ champion.equal?(other.champion)
72
+ end
73
+
74
+ # Subtracts another Cost from this one. Subtraction is performed by subtracting each wildcard type individually,
75
+ # not by operating on the shard count. The minimum value any wildcard will have is zero, so +5 - 7 = 0+ for
76
+ # example.
77
+ # @note This will not return negative values.
78
+ # @param [Cost] other an object that response to {#common}, {#rare}, {#epic}, and {#champion}.
79
+ # @return [Cost] The remaining cost, with a floor of 0.
80
+ # @example
81
+ # minuend = Cost.new(9, 8, 5, 2)
82
+ # subtrahend = Cost.new(7, 8, 2, 3)
83
+ # result = minuend - subtrahend
84
+ # result #=> Cost.new(2, 0, 3, 0)
85
+ def -(other)
86
+ Cost.new(
87
+ [common - other.common, 0].max,
88
+ [rare - other.rare, 0].max,
89
+ [epic - other.epic, 0].max,
90
+ [champion - other.champion, 0].max
91
+ )
92
+ end
93
+ end
94
+ end
@@ -8,14 +8,17 @@ module RuneterraCards
8
8
  # This exception is raised if the deck code cannot be Base32-decoded. This probably means it isn't a deck code, or
9
9
  # got malformed somehow.
10
10
  class Base32Error < DeckCodeParseError
11
+ # Returns a new instance of Base32Error with a helpful error message preloaded.
11
12
  def initialize
12
- super('Encountered an error while Base32 decoding deck code.' \
13
+ super(
14
+ 'Encountered an error while Base32 decoding deck code.' \
13
15
  ' Probably an invalid deck code, or possibly a bug in the Base32 handling.')
14
16
  end
15
17
  end
16
18
 
17
19
  # This exception is raised if the deck code is an empty string.
18
20
  class EmptyInputError < DeckCodeParseError
21
+ # Returns a new instance of EmptyInputError with a helpful error message preloaded.
19
22
  def initialize
20
23
  super('The input was an empty string')
21
24
  end
@@ -32,9 +35,12 @@ module RuneterraCards
32
35
  # @return [Fixnum] the version number encountered in the deck code
33
36
  attr_accessor :version
34
37
 
38
+ # @param [Fixnum] expected The version number we were expecting to see in the deck code.
39
+ # @param [Fixnum] got The version number we actually got.
35
40
  def initialize(expected, got)
36
- super("Unrecognized deck code version number: #{got}, was expecting: #{expected}. \
37
- Possibly an invalid deck code, possibly you need to update the deck code library version.")
41
+ super(
42
+ "Unrecognized deck code version number: #{got}, was expecting: #{expected}. "\
43
+ 'Possibly an invalid deck code, possibly you need to update the deck code library version.')
38
44
  @version = got
39
45
  end
40
46
  end
@@ -50,8 +56,10 @@ Possibly an invalid deck code, possibly you need to update the deck code library
50
56
  # @return [Fixnum] the faction number that was unrecognized
51
57
  attr_reader :faction_number
52
58
 
59
+ # @param [Fixnum] faction_number The faction number we encountered and did not recognise.
53
60
  def initialize(faction_number)
54
- super("Unrecognized faction number '#{faction_number}'."\
61
+ super(
62
+ "Unrecognized faction number '#{faction_number}'."\
55
63
  ' Possibly you need to update this library to a newer version')
56
64
  @faction_number = faction_number
57
65
  end
@@ -61,7 +69,7 @@ Possibly an invalid deck code, possibly you need to update the deck code library
61
69
  # The message will tell you what data was not right, and the {#card} attribute will tell you which card had issues,
62
70
  # if possible.
63
71
  #
64
- # @see CardMetadata#initialize
72
+ # @see CardMetadata#initialize CardMetadata#initialize for details on when this error is raised.
65
73
  class MetadataLoadError < StandardError
66
74
  # Return the name or card code of the card that was missing an expected attribute.
67
75
  # @return [String] name if the name was present
@@ -69,6 +77,8 @@ Possibly an invalid deck code, possibly you need to update the deck code library
69
77
  # @return [nil] if neither name nor card code were present
70
78
  attr_reader :card
71
79
 
80
+ # @param [String] card The card's name or cardCode.
81
+ # @param [String] problem Details on the problem encountered loading the card.
72
82
  def initialize(card, problem)
73
83
  if card.nil?
74
84
  super("Error loading data for unknown card (no code or name): #{problem}")
@@ -77,5 +87,15 @@ Possibly an invalid deck code, possibly you need to update the deck code library
77
87
  end
78
88
  @card = card
79
89
  end
90
+
91
+ # Create a {MetadataLoadError MetadataLoadError} with a helpful message regarding an invalid value for rarityRef.
92
+ # @param [String] card The card name that had an invalid rarityRef value.
93
+ #
94
+ # @param [String] given The value that rarityRef had.
95
+ # @param [Enumerable<String>] expected A list of values that would have been valid.
96
+ # @return [MetadataLoadError]
97
+ def self.invalid_rarity(card, given, expected)
98
+ new(card, "Invalid value for rarityRef, got: #{given}, expected one of: #{expected.join ', '}")
99
+ end
80
100
  end
81
101
  end
@@ -15,6 +15,7 @@ module RuneterraCards
15
15
  6 => 'BW',
16
16
  9 => 'MT',
17
17
  }.freeze
18
+ public_constant :FACTION_IDENTIFIERS_FROM_INT
18
19
 
19
20
  # A map from two-letter Faction identifiers to their integer identifiers
20
21
  # @example
@@ -30,4 +31,5 @@ module RuneterraCards
30
31
  'BW' => 6,
31
32
  'MT' => 9,
32
33
  }.freeze
34
+ public_constant :FACTION_INTS_FROM_IDENTIFIER
33
35
  end
@@ -20,6 +20,7 @@ module RuneterraCards
20
20
  # @note This class cannot yet handle metadata for multiple locales at the same time. You will need multiple instances
21
21
  # of this class, one for each locale, if you wish to handle multiple locales at this time.
22
22
  class Metadata
23
+ # Create a new, empty, metadata repository.
23
24
  def initialize
24
25
  @cards = {}
25
26
  end
@@ -57,5 +58,15 @@ module RuneterraCards
57
58
  def full_set
58
59
  CardSet.new(all_collectible.keys.each_with_object({}) { |code, result| result[code] = 3 })
59
60
  end
61
+
62
+ # @param [CardSet] card_set
63
+ # @return [Cost] the cost of crafting all the cards in the supplied CardSet
64
+ def cost_of(card_set)
65
+ rarity_and_count = card_set.cards.map { |card, count| [lookup_card(card).rarity, count] }
66
+ total = { common: 0, rare: 0, epic: 0, champion: 0 }
67
+ rarity_and_count.each { |(rarity, count)| total[rarity] += count }
68
+
69
+ Cost.new(total.fetch(:common), total.fetch(:rare), total.fetch(:epic), total.fetch(:champion))
70
+ end
60
71
  end
61
72
  end
@@ -2,5 +2,6 @@
2
2
 
3
3
  module RuneterraCards
4
4
  # The version of this library
5
- VERSION = '0.2.1'
5
+ VERSION = '0.4.1'
6
+ public_constant :VERSION
6
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runeterra_cards
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James "zofrex" Sanderson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-29 00:00:00.000000000 Z
11
+ date: 2021-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base32
@@ -80,20 +80,34 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 1.4.2
83
+ - !ruby/object:Gem::Dependency
84
+ name: mutant
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.10.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.10.0
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: mutant-minitest
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - ">="
101
+ - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '0'
103
+ version: 0.10.0
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - ">="
108
+ - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '0'
110
+ version: 0.10.0
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rake
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +128,14 @@ dependencies:
114
128
  requirements:
115
129
  - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: 0.89.1
131
+ version: '1.2'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: 0.89.1
138
+ version: '1.2'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: rubocop-minitest
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -142,28 +156,28 @@ dependencies:
142
156
  requirements:
143
157
  - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: 0.3.0
159
+ version: 0.5.1
146
160
  type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - "~>"
151
165
  - !ruby/object:Gem::Version
152
- version: 0.3.0
166
+ version: 0.5.1
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: rubocop-performance
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
171
  - - "~>"
158
172
  - !ruby/object:Gem::Version
159
- version: '1.7'
173
+ version: '1.8'
160
174
  type: :development
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
178
  - - "~>"
165
179
  - !ruby/object:Gem::Version
166
- version: '1.7'
180
+ version: '1.8'
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: yard
169
183
  requirement: !ruby/object:Gem::Requirement
@@ -185,6 +199,7 @@ executables: []
185
199
  extensions: []
186
200
  extra_rdoc_files: []
187
201
  files:
202
+ - ".yardopts"
188
203
  - LICENSE.txt
189
204
  - doc/CHANGELOG.md
190
205
  - doc/README.md
@@ -192,6 +207,7 @@ files:
192
207
  - lib/runeterra_cards/card_and_count.rb
193
208
  - lib/runeterra_cards/card_metadata.rb
194
209
  - lib/runeterra_cards/card_set.rb
210
+ - lib/runeterra_cards/cost.rb
195
211
  - lib/runeterra_cards/errors.rb
196
212
  - lib/runeterra_cards/factions.rb
197
213
  - lib/runeterra_cards/metadata.rb
@@ -201,9 +217,9 @@ licenses:
201
217
  - MIT
202
218
  metadata:
203
219
  bug_tracker_uri: https://github.com/zofrex/runeterra_cards/issues
204
- changelog_uri: https://www.rubydoc.info/gems/runeterra_cards/doc/CHANGELOG.md
205
- mailing_list_uri: https://groups.example.com/bestgemever
220
+ changelog_uri: https://www.rubydoc.info/gems/runeterra_cards/file/doc/CHANGELOG.md
206
221
  source_code_uri: https://github.com/zofrex/runeterra_cards
222
+ documentation_uri: https://www.rubydoc.info/gems/runeterra_cards/
207
223
  post_install_message:
208
224
  rdoc_options: []
209
225
  require_paths: