elite_universe 0.0.5 → 0.1.0

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
- SHA1:
3
- metadata.gz: be8f3ad02eeb0a06f99168895873e68d3291b595
4
- data.tar.gz: 25e5958265a027994d04aae793dc86e0ee278026
2
+ SHA256:
3
+ metadata.gz: ad122bcb1e33808aab6afd7f2838dfcbd1b00cf55a167b90b873f38dc0862a37
4
+ data.tar.gz: f2cf4dff439959ea227090530f34a86519e68a72fa80af1d7209a341f318e1ed
5
5
  SHA512:
6
- metadata.gz: 36695193d73d4e9b8243d8671d6d1b61f62f1b660256e01223c443dcec4cc6db3718ebb87cece912f10e9b44f13a91f627666b1d46bd0473ef26870d21cce944
7
- data.tar.gz: 7a9b56bacdb0becdc89d01beed47520454ead7f992d96767e6ae74fd2ee8ce3611f2fc193e949fa8fcbe6eaf39e5dd3188694cfc35b4f5c209aec40245ff27c9
6
+ metadata.gz: c0db1cb366a2c1cdf8649bef96ebcf597cc108704253c0e57eb50ecc5f4b25df3c91047f58ea8cbf45203713f99cac280291100a7b8d22c1f33222ba4d7b7ea8
7
+ data.tar.gz: 5cf23fb0fe096b129bd1022cef43d8662a74a42a0940aaac692ee4f02bff2df116c9701b27f3b7cae17b91eb9cd2512921d27835875a38d7e7270d00f9992b04
data/README.md CHANGED
@@ -18,8 +18,7 @@ planet.name # = Lave
18
18
  require 'elite_universe/galaxy'
19
19
 
20
20
  galaxy = EliteUniverse::Galaxy.new(23114, 584, 46931)
21
- galaxy.planets # = array of 'EliteUniverse::Planet's
22
- galaxy.planets[129].name # = Zaonce
21
+ galaxy[129].name # = Zaonce
23
22
  ```
24
23
 
25
24
  `EliteUniverse::Galaxy` is an Enumerable class and so, for example, a full list
@@ -29,6 +28,12 @@ of planet names in the galaxy can be generated with:
29
28
  galaxy.map(&:name)
30
29
  ```
31
30
 
31
+ ## Deprecated methods
32
+
33
+ `galaxy.planets` will return an array of all instances of
34
+ `EliteUniverse::Planet` in an `EliteUniverse::Galaxy`. This is deprecated.
35
+ Instead of `galaxy.planets[i]` use `galaxy[i]`.
36
+
32
37
  ## License
33
38
 
34
39
  The Elite Universe gem is available to everyone under the terms of the MIT
@@ -5,19 +5,24 @@ module EliteUniverse
5
5
  include Enumerable
6
6
 
7
7
  def initialize a, b, c
8
- @w = [ a, b, c ]
8
+ @initial_planet = Planet.new(a, b, c)
9
9
  end
10
10
 
11
- def planets
12
- p = [ EliteUniverse::Planet.new(*@w)]
13
- 255.times do
14
- p << p[-1].next
11
+ def each &block
12
+ 256.times.inject(@initial_planet) do |p|
13
+ block.call(p)
14
+ p.next
15
15
  end
16
- p
17
16
  end
18
17
 
19
- def each &block
20
- planets.each { |planet| block.call(planet) }
18
+ def planets
19
+ puts "DEPRECATED"
20
+ puts "In place of `galaxy.planets[n]` use `galaxy[n]`"
21
+ self.map { |p| p }
22
+ end
23
+
24
+ def [] n
25
+ n.times.inject(@initial_planet) { |p| p.next }
21
26
  end
22
27
  end
23
28
  end
@@ -28,35 +28,30 @@ module EliteUniverse
28
28
  end
29
29
 
30
30
  def name
31
- name = ''
32
- v = @w
33
- l = v[0] & 64
34
- 4.times do |i|
35
- if i < 3 or l > 0
36
- n = ( v[2] >> 8 ) & 31
37
- name += CHARS[n]
38
- end
39
- v = twist v
40
- end
41
- name.gsub('.', '').capitalize
31
+ (@w[0] & 64 == 0 ? 2 : 3).times.inject([@w]) do |vs|
32
+ vs << twist(vs[-1])
33
+ end.inject('') do |name, v|
34
+ name += CHARS[(v[2] >> 8) & 31]
35
+ end.tr('.', '').capitalize
42
36
  end
43
37
 
44
38
  def government
45
- GOVS[ gov_n ]
39
+ GOVS[gov_n]
46
40
  end
47
41
 
48
42
  def economy
49
- ECONS[ econ_n ]
43
+ ECONS[econ_n]
50
44
  end
51
45
 
52
46
  def location
53
- [ @w[1] >> 8, @w[0] >> 8 ]
47
+ [@w[1] >> 8, @w[0] >> 8]
54
48
  end
55
49
 
56
50
  def technology
57
- t = ((@w[1] >> 8 ) & 3) + ( econ_n ^ 7 ) + (gov_n >> 1) + 1
58
- t += 1 if ((gov_n & 1) == 1)
59
- t
51
+ ((@w[1] >> 8 ) & 3) +
52
+ (econ_n ^ 7) +
53
+ (gov_n >> 1) +
54
+ ((gov_n & 1) == 1 ? 2 : 1)
60
55
  end
61
56
 
62
57
  def next
@@ -64,17 +59,26 @@ module EliteUniverse
64
59
  end
65
60
 
66
61
  private
62
+
63
+ def version_at_least version
64
+ # ... because I want to use new features if possible
65
+ Gem::Version.new(RUBY_VERSION) >= Gem::Version.new(version)
66
+ end
67
+
67
68
  def twist arr
68
- [ arr[1], arr[2], arr.inject(:+) % 65536 ]
69
+ [
70
+ arr[1],
71
+ arr[2],
72
+ (version_at_least('2.4.0') ? arr.sum : arr.inject(:+)) % 65536
73
+ ]
69
74
  end
70
75
 
71
76
  def gov_n
72
- ( @w[1] >> 3 ) & 7
77
+ (@w[1] >> 3) & 7
73
78
  end
74
79
 
75
80
  def econ_n
76
- e = ( @w[0] >> 8 ) & 7
77
- gov_n <= 1 ? e | 2 : e
81
+ ((@w[0] >> 8) & 7) | (gov_n <= 1 ? 2 : 0)
78
82
  end
79
83
  end
80
84
  end
@@ -1,3 +1,3 @@
1
1
  module EliteUniverse
2
- VERSION = "0.0.5"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elite_universe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Haig
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-22 00:00:00.000000000 Z
11
+ date: 2018-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -56,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
56
56
  version: '0'
57
57
  requirements: []
58
58
  rubyforge_project:
59
- rubygems_version: 2.6.11
59
+ rubygems_version: 2.7.6
60
60
  signing_key:
61
61
  specification_version: 4
62
62
  summary: Elite Universe