runeterra_cards 0.4.0 → 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: 464996b724ae43c17f2725e24aaf616324b1ffbfa945c4ebf1158ebfe250cbab
4
- data.tar.gz: e9c571d14c48ef39c5d25594ac7fbacafcd566b318887c1f49e31283cf5a9d00
3
+ metadata.gz: 13de26db2b79d60bca9fce39d36d3d82fcaaa19fbcdae3dc2c6f34c785253d91
4
+ data.tar.gz: 061a9c9e56f751fc2451166af0e9b27f415c4b9293b1ac1d0dc58df714a46a6b
5
5
  SHA512:
6
- metadata.gz: c5cf637f8898ed29afde28ced8036dc3806e5da4d1c03db12cb7d97e4be101dd7252466470f30b9edd709a290c8d8755e62c401d663c34cd945e8a7ea281fbba
7
- data.tar.gz: df8cf13cdaaffdbbc985e17f406f66d7611c90c841a5df726d8d4f799bac0ce2dd2e64fe6a4144a44d9ce1e522e1e98ed7dddd0e9f1fac014ec445b2ba219f6c
6
+ metadata.gz: cde13398e27b94c917c74efb2cedf4fa82c3af5b8cc7e2da4a19af959176bf24703574170718d17ace331cf20e23b019001150fdd12a90a81688cd2f17f186c3
7
+ data.tar.gz: 18d73970af5591a2f65ccf9ba4739800d1025f042499416ed5e2ccd6b5ad33797c3b4640bd7b89dd99600b1a4f2a3bc0f641be0499d392ad56385ec53318dc22
data/doc/CHANGELOG.md CHANGED
@@ -4,6 +4,11 @@ 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))
7
12
  ## [0.4.0] - 2020-12-08
8
13
  ### Added
9
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.
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.4.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.4.0'
18
+ spec.add_dependency 'runeterra_cards', '~> 0.4.1'
19
19
  ```
20
20
 
21
21
  ## Updates & Versioning
@@ -62,8 +62,9 @@ module RuneterraCards
62
62
 
63
63
  raise unless format.equal? 1
64
64
 
65
- int_array = binary_data[1..].unpack('w*')
65
+ int_array = unpack_uleb128(binary_data[1..])
66
66
  cards = assemble_card_list(int_array)
67
+
67
68
  from_card_and_counts(cards)
68
69
  end
69
70
 
@@ -108,5 +109,19 @@ module RuneterraCards
108
109
  end
109
110
 
110
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
111
126
  end
112
127
  end
@@ -10,7 +10,8 @@ module RuneterraCards
10
10
  class Base32Error < DeckCodeParseError
11
11
  # Returns a new instance of Base32Error with a helpful error message preloaded.
12
12
  def initialize
13
- super('Encountered an error while Base32 decoding deck code.' \
13
+ super(
14
+ 'Encountered an error while Base32 decoding deck code.' \
14
15
  ' Probably an invalid deck code, or possibly a bug in the Base32 handling.')
15
16
  end
16
17
  end
@@ -37,8 +38,9 @@ module RuneterraCards
37
38
  # @param [Fixnum] expected The version number we were expecting to see in the deck code.
38
39
  # @param [Fixnum] got The version number we actually got.
39
40
  def initialize(expected, got)
40
- super("Unrecognized deck code version number: #{got}, was expecting: #{expected}. \
41
- 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.')
42
44
  @version = got
43
45
  end
44
46
  end
@@ -56,7 +58,8 @@ Possibly an invalid deck code, possibly you need to update the deck code library
56
58
 
57
59
  # @param [Fixnum] faction_number The faction number we encountered and did not recognise.
58
60
  def initialize(faction_number)
59
- super("Unrecognized faction number '#{faction_number}'."\
61
+ super(
62
+ "Unrecognized faction number '#{faction_number}'."\
60
63
  ' Possibly you need to update this library to a newer version')
61
64
  @faction_number = faction_number
62
65
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RuneterraCards
4
4
  # The version of this library
5
- VERSION = '0.4.0'
5
+ VERSION = '0.4.1'
6
6
  public_constant :VERSION
7
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.4.0
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-12-08 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