sashite-gan 0.0.2 → 1.0.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: b966a687c469afbb15fda785200eb0d038798aa6
4
- data.tar.gz: 04ce3d9c51b5880e5a3a93cdb9924cb969661734
2
+ SHA256:
3
+ metadata.gz: dffb3b5300bf9cfe17f98e0bea0fc2daa5a90d56df88a652e82f4a3b9056d7a1
4
+ data.tar.gz: a27352efa48e49bff0f89a1371853452edd6ffd09aca5cb8c1e360193f7576cc
5
5
  SHA512:
6
- metadata.gz: 4812faaead240700c59190386094aab58f1256192c4e5d1649fe1054e50c5ab487e48a4b6365a5147ef48134f2bbcb0e2e5f1e0d5ddffa16c2957c713cd3f714
7
- data.tar.gz: a356e0eb9d0f72fc4173c7d6d8747a3c6321157d4b3731cb4279725ab0ab4f62053a3ce9c5fde8292ca258e6be300f5964b3fe92b98af102e9fb51f88ddaffe2
6
+ metadata.gz: 2f635c1fd54f5a81b9c0303471011952197058a8997bcd006ce3f6776ad4ee845e04a444139ebba8c65b9f56b90f9225f305b17cc9b93d7bb1aa75fda8f50e2b
7
+ data.tar.gz: ac3c7237c234e7bd61c38edf7ac83acced6ef46951ffd19077b855a33f7ce5078edaced35be5b1ee7008fa26beff9102888c9935def92a45b75718210dcd5fac
data/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Cyril Wack
1
+ Copyright (c) 2014-2020 Cyril Kato
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,11 +1,6 @@
1
- # Sashite::GAN
1
+ # Sashite::GAN ♟️
2
2
 
3
- Implementation of [General Actor Notation](//sashite-wiki.herokuapp.com/General_Actor_Notation) for storing actors from abstract strategy games.
4
-
5
- ## Status
6
-
7
- [![Gem Version](https://badge.fury.io/rb/sashite-gan.svg)](//badge.fury.io/rb/sashite-gan)
8
- [![Build Status](https://secure.travis-ci.org/sashite/gan.rb.svg?branch=master)](//travis-ci.org/sashite/gan.rb?branch=master)
3
+ > An implementation of [General Actor Notation](https://developer.sashite.com/specs/general-actor-notation) for storing actors from abstract strategy games.
9
4
 
10
5
  ## Installation
11
6
 
@@ -25,14 +20,33 @@ Or install it yourself as:
25
20
 
26
21
  require 'sashite-gan'
27
22
 
28
- actor = Sashite::GAN::Actor.new 2,
29
- 'bc096c4c7f48fc5c4c162555e4df98169e204aea', 'top', 'xianqi', 'rook'
30
- actor.to_gan # => '2:bc096c4c7f48fc5c4c162555e4df98169e204aea:top:xianqi:rook'
23
+ # Chess (Western) Rook, White
24
+ Sashite::GAN.string(is_checkmateable: false, is_promoted: false, is_topside: false, piece_abbr: 'r', style_abbr: 'c') # => 'C:R'
25
+
26
+ # Chess (Western) King, Black
27
+ Sashite::GAN.string(is_checkmateable: true, is_promoted: false, is_topside: true, piece_abbr: 'k', style_abbr: 'c') # => 'c:-k'
28
+
29
+ # Shogi King, Gote
30
+ Sashite::GAN.string(is_checkmateable: true, is_promoted: false, is_topside: true, piece_abbr: 'k', style_abbr: 's') # => 's:-k'
31
+
32
+ # Shogi promoted Pawn, Sente
33
+ Sashite::GAN.string(is_checkmateable: false, is_promoted: true, is_topside: false, piece_abbr: 'p', style_abbr: 's') # => 'S:+P'
34
+
35
+ # Xiangqi General, Red
36
+ Sashite::GAN.string(is_checkmateable: true, is_promoted: false, is_topside: false, piece_abbr: 'g', style_abbr: 'x') # => 'X:-G'
37
+
38
+ # Xiangqi Flying General, Red
39
+ Sashite::GAN.string(is_checkmateable: true, is_promoted: true, is_topside: false, piece_abbr: 'g', style_abbr: 'x') # => 'X:+-G'
40
+
41
+ # Go Stone, Black
42
+ Sashite::GAN.string(is_checkmateable: false, is_promoted: false, is_topside: false, piece_abbr: 's', style_abbr: 'go') # => 'GO:S'
43
+
44
+ ## License
45
+
46
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
47
+
48
+ ## About Sashite
31
49
 
32
- ## Contributing
50
+ The `sashite-gan` gem is maintained by [Sashite](https://sashite.com/).
33
51
 
34
- 1. Fork it
35
- 2. Create your feature branch (`git checkout -b my-new-feature`)
36
- 3. Commit your changes (`git commit -am 'Add some feature'`)
37
- 4. Push to the branch (`git push origin my-new-feature`)
38
- 5. Create a new Pull Request
52
+ With some [lines of code](https://github.com/sashite/), let's share the beauty of Chinese, Japanese and Western cultures through the game of chess!
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'sashite/gan'
@@ -1,25 +1,43 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Sashite
2
- module GAN
3
- class Actor
4
- attr_accessor :dimension, :cgh, :side, :variant, :name
4
+ # General Actor Notation
5
+ class GAN
6
+ # @return [String] The representation of an actor.
7
+ def self.string(is_checkmateable:, is_promoted:, is_topside:, piece_abbr:, style_abbr:)
8
+ unless [false, true].include?(is_topside)
9
+ raise TypeError, is_topside.class.inspect
10
+ end
11
+
12
+ piece_code = piece_code_builder(
13
+ piece_abbr: piece_abbr,
14
+ is_checkmateable: is_checkmateable,
15
+ is_promoted: is_promoted
16
+ )
17
+
18
+ piece_code_with_prefix = "#{style_abbr}:#{piece_code}"
5
19
 
6
- def initialize dimension, cgh, side, variant, name
7
- @dimension = dimension
8
- @cgh = cgh
9
- @side = side
10
- @variant = variant
11
- @name = name
20
+ if is_topside
21
+ piece_code_with_prefix.downcase
22
+ else
23
+ piece_code_with_prefix.upcase
24
+ end
25
+ end
26
+
27
+ def self.piece_code_builder(piece_abbr:, is_checkmateable:, is_promoted:)
28
+ unless [false, true].include?(is_checkmateable)
29
+ raise TypeError, is_checkmateable.class.inspect
12
30
  end
13
31
 
14
- def to_gan
15
- [
16
- @dimension,
17
- @cgh,
18
- @side,
19
- @variant,
20
- @name
21
- ].join ':'
32
+ unless [false, true].include?(is_promoted)
33
+ raise TypeError, is_promoted.class.inspect
22
34
  end
35
+
36
+ str = piece_abbr
37
+ str = "-#{str}" if is_checkmateable
38
+ str = "+#{str}" if is_promoted
39
+ str
23
40
  end
41
+ private_class_method :piece_code_builder
24
42
  end
25
43
  end
metadata CHANGED
@@ -1,81 +1,118 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sashite-gan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Cyril Wack
7
+ - Cyril Kato
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-29 00:00:00.000000000 Z
11
+ date: 2020-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.6'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: minitest
28
+ name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '5'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '5'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rake
42
+ name: rubocop-performance
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop-thread_safety
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: yard
43
85
  requirement: !ruby/object:Gem::Requirement
44
86
  requirements:
45
- - - "~>"
87
+ - - ">="
46
88
  - !ruby/object:Gem::Version
47
- version: '10'
89
+ version: '0'
48
90
  type: :development
49
91
  prerelease: false
50
92
  version_requirements: !ruby/object:Gem::Requirement
51
93
  requirements:
52
- - - "~>"
94
+ - - ">="
53
95
  - !ruby/object:Gem::Version
54
- version: '10'
96
+ version: '0'
55
97
  description: Implementation of GAN (General Actor Notation) for storing actors from
56
98
  abstract strategy games.
57
- email:
58
- - contact@cyril.io
99
+ email: contact@cyril.email
59
100
  executables: []
60
101
  extensions: []
61
102
  extra_rdoc_files: []
62
103
  files:
63
- - ".gitignore"
64
- - ".travis.yml"
65
- - Gemfile
66
104
  - LICENSE.md
67
105
  - README.md
68
- - Rakefile
69
- - VERSION.semver
70
106
  - lib/sashite-gan.rb
71
107
  - lib/sashite/gan.rb
72
- - sashite-gan.gemspec
73
- - test/_test_helper.rb
74
- - test/test_gan.rb
75
- homepage: https://github.com/sashite/gan.rb
108
+ homepage: https://developer.sashite.com/specs/general-actor-notation
76
109
  licenses:
77
110
  - MIT
78
- metadata: {}
111
+ metadata:
112
+ bug_tracker_uri: https://github.com/sashite/gan.rb/issues
113
+ documentation_uri: https://rubydoc.info/gems/sashite-gan/index
114
+ source_code_uri: https://github.com/sashite/gan.rb
115
+ wiki_uri: https://github.com/sashite/gan.rb/wiki
79
116
  post_install_message:
80
117
  rdoc_options: []
81
118
  require_paths:
@@ -91,11 +128,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
128
  - !ruby/object:Gem::Version
92
129
  version: '0'
93
130
  requirements: []
94
- rubyforge_project:
95
- rubygems_version: 2.2.2
131
+ rubygems_version: 3.1.2
96
132
  signing_key:
97
133
  specification_version: 4
98
134
  summary: A GAN implementation in Ruby.
99
- test_files:
100
- - test/_test_helper.rb
101
- - test/test_gan.rb
135
+ test_files: []
data/.gitignore DELETED
@@ -1,22 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
18
- *.bundle
19
- *.so
20
- *.o
21
- *.a
22
- mkmf.log
@@ -1,3 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.1.2
data/Gemfile DELETED
@@ -1,2 +0,0 @@
1
- source 'https://rubygems.org'
2
- gemspec
data/Rakefile DELETED
@@ -1,7 +0,0 @@
1
- require 'bundler/gem_tasks'
2
- require 'rake/testtask'
3
-
4
- Rake::TestTask.new do |t|
5
- end
6
-
7
- task(default: :test)
@@ -1 +0,0 @@
1
- 0.0.2
@@ -1,19 +0,0 @@
1
- Gem::Specification.new do |spec|
2
- spec.name = 'sashite-gan'
3
- spec.version = File.read('VERSION.semver')
4
- spec.authors = ['Cyril Wack']
5
- spec.email = ['contact@cyril.io']
6
- spec.summary = %q{A GAN implementation in Ruby.}
7
- spec.description = %q{Implementation of GAN (General Actor Notation) for storing actors from abstract strategy games.}
8
- spec.homepage = 'https://github.com/sashite/gan.rb'
9
- spec.license = 'MIT'
10
-
11
- spec.files = `git ls-files -z`.split("\x0")
12
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
13
- spec.test_files = spec.files.grep(%r{^test/})
14
- spec.require_paths = ['lib']
15
-
16
- spec.add_development_dependency 'bundler', '~> 1.6'
17
- spec.add_development_dependency 'minitest', '~> 5'
18
- spec.add_development_dependency 'rake', '~> 10'
19
- end
@@ -1,2 +0,0 @@
1
- require 'sashite/gan'
2
- require 'minitest/autorun'
@@ -1,15 +0,0 @@
1
- require_relative '_test_helper'
2
-
3
- describe Sashite::GAN::Actor do
4
- describe '#to_s' do
5
- before do
6
- @actor = Sashite::GAN::Actor.new 2,
7
- 'bc096c4c7f48fc5c4c162555e4df98169e204aea',
8
- 'top', 'xianqi', 'rook'
9
- end
10
-
11
- it 'returns the GAN of the actor' do
12
- @actor.to_gan.must_equal '2:bc096c4c7f48fc5c4c162555e4df98169e204aea:top:xianqi:rook'
13
- end
14
- end
15
- end