terminal_game_of_life 0.1.0 → 0.1.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 +4 -4
- data/README.md +14 -0
- data/bin/game-of-life +3 -2
- data/lib/game_of_life.rb +3 -0
- data/lib/game_of_life/generators/input.rb +6 -0
- data/lib/game_of_life/generators/seed.rb +1 -1
- data/lib/game_of_life/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 840950936964f043278b2b2169e096a054384a3ee8c5eed35afef6e66d68801f
|
4
|
+
data.tar.gz: 010dd81355f54729acaf4154c3f69f33997b3511f397f8352190f0a8ec423fff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c951bd38ccadb0348811e859faf8280b75ecf20d15df7375b899befc4e41438ace91284db9c8e38fafa2b545d95e102a69da3b4110c1883ea6b8d61c347b2d0
|
7
|
+
data.tar.gz: 123ba4920e029bcc9cb7a66112e900ddfe147d66c987466d756fdefc4e4b986b3b83496d9942b6da060b56e20b6eba9865f15955faacb436d262597ff4c9d22d
|
data/README.md
CHANGED
@@ -9,6 +9,8 @@ $ gem install terminal_game_of_life
|
|
9
9
|
|
10
10
|
## Usage
|
11
11
|
|
12
|
+
Run `$game-of-life -i https://gitlab.com/a14m --live-cell +`
|
13
|
+
|
12
14
|
Check `game-of-life --help` for usage info.
|
13
15
|
|
14
16
|
```
|
@@ -29,6 +31,9 @@ Options:
|
|
29
31
|
# Default: 50
|
30
32
|
```
|
31
33
|
|
34
|
+
## Demo
|
35
|
+
[](https://asciinema.org/a/h7G2EUAXRfwlBVLZjQuXjoTnp)
|
36
|
+
|
32
37
|
## Development
|
33
38
|
|
34
39
|
- Clone the repo.
|
@@ -46,6 +51,15 @@ Run `bundle exec rspec` or `bundle exec rake spec`
|
|
46
51
|
## Documentation
|
47
52
|
Run `bundle exec yard`
|
48
53
|
|
54
|
+
## Release
|
55
|
+
- Update the [version](./lib/game_of_live/version.rb) number
|
56
|
+
- Run `bundle install` and commit changes
|
57
|
+
- Update the [CHANGELOG](./CHANGELOG.md)
|
58
|
+
- Create a git(lab) tag `ruby/v#{version_number}` ex: `ruby/v0.1.1-pre`
|
59
|
+
|
60
|
+
The tag will automatically trigger the release workflow after successful build/test
|
61
|
+
and release the changes to [rubygems.org](https://rubygems.org/gems/terminal_game_of_life)
|
62
|
+
|
49
63
|
## Extra information
|
50
64
|
### [Contributing](../../CONTRIBUTING.md)
|
51
65
|
### [License](../../LICENSE.md)
|
data/bin/game-of-life
CHANGED
@@ -60,6 +60,7 @@ begin
|
|
60
60
|
CLI.start(ARGV)
|
61
61
|
rescue SystemExit, Interrupt
|
62
62
|
"Do nothing when user exits with Interrupt (CMD/Ctrl + C)"
|
63
|
-
rescue NotImplementedError
|
64
|
-
puts
|
63
|
+
rescue NotImplementedError, GameOfLife::Error => e
|
64
|
+
puts e.message
|
65
|
+
exit(-1)
|
65
66
|
end
|
data/lib/game_of_life.rb
CHANGED
@@ -7,6 +7,9 @@ require "game_of_life/cell"
|
|
7
7
|
|
8
8
|
# Game of Life module entry point
|
9
9
|
module GameOfLife
|
10
|
+
# Base Error class
|
11
|
+
class Error < StandardError; end
|
12
|
+
|
10
13
|
class << self
|
11
14
|
# Generate a universe based on the options (from an input file/URI) or using a random/passed seed
|
12
15
|
# This method also sets the Classes/Modules constants for the run defining the options for
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "open-uri"
|
4
|
+
require "socket"
|
4
5
|
|
5
6
|
module GameOfLife
|
6
7
|
module Generators
|
@@ -22,6 +23,11 @@ module GameOfLife
|
|
22
23
|
# where any alpha numeric character is considered a living cell (true)
|
23
24
|
raw.map! { |row| row.chars.map { |char| char.match?(/[[:alnum:]]/) } }
|
24
25
|
populate(parsed_input: raw, width: options["width"].to_i, height: options["height"].to_i)
|
26
|
+
rescue ::OpenURI::HTTPError, ::SocketError
|
27
|
+
raise GameOfLife::Error, "URL isn't avaialable, please check it again and make sure the URL is correct"
|
28
|
+
rescue ::Errno::ENOENT
|
29
|
+
raise GameOfLife::Error,
|
30
|
+
"File isn't avaialable, please check it again and make sure the path to the input file is correct"
|
25
31
|
end
|
26
32
|
|
27
33
|
# Populate the {GameOfLife::Universe} with reference to the parsed input 2D array (True/False)
|
@@ -12,7 +12,7 @@ module GameOfLife
|
|
12
12
|
# @option options [Numeric] "height" (floored) and used as the height of the universe
|
13
13
|
# @return [GameOfLife::Universe] populated with the parsed input
|
14
14
|
def new(options)
|
15
|
-
fail NotImplementedError
|
15
|
+
fail ::NotImplementedError, "Seed option isn't implemented yet, please use --input option"
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
data/lib/game_of_life/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: terminal_game_of_life
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- a14m
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-12-
|
11
|
+
date: 2020-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -147,7 +147,7 @@ metadata:
|
|
147
147
|
allowed_push_host: https://rubygems.org
|
148
148
|
homepage_uri: https://gitlab.com/a14m/game-of-life
|
149
149
|
source_code_uri: https://gitlab.com/a14m/game-of-life/-/tree/master/CLI/ruby/
|
150
|
-
post_install_message:
|
150
|
+
post_install_message:
|
151
151
|
rdoc_options: []
|
152
152
|
require_paths:
|
153
153
|
- lib
|
@@ -163,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
163
163
|
version: '0'
|
164
164
|
requirements: []
|
165
165
|
rubygems_version: 3.1.4
|
166
|
-
signing_key:
|
166
|
+
signing_key:
|
167
167
|
specification_version: 4
|
168
168
|
summary: Game of Life CLI
|
169
169
|
test_files: []
|