zugzwang 0.1.2 → 0.1.3
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 +7 -1
- data/lib/zugzwang.rb +19 -1
- data/lib/zugzwang/create.rb +10 -3
- data/lib/zugzwang/version.rb +2 -2
- metadata +2 -3
- data/Gemfile.lock +0 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c824df5a3a56edd454328beac8fdd7541bb5384587a60575502ba67f0536e61
|
4
|
+
data.tar.gz: 78bd8e37e7051981fc78d067e23029015606294fea0548a78859c925e2ef031c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85a6871c5966e70a240028ac7b724d84a30fe8c432fe66f1db89dc92428c07514b58041b67df963d5344c30428c0fc30ce7deb723e2c320d9c8e991fcf339e63
|
7
|
+
data.tar.gz: c48fa8aad9589065c587d9a80fae3ceb925129008904ae6507eb494e0bdb99e30f9935d47e0af16394a540c2068bad133044bf3ecee14df21e09ca4bdf59a329
|
data/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
# Zugzwang
|
5
5
|
|
6
|
-
|
6
|
+
Lightweight CLI for converting the metadata of PGN files from Lichess' game database to a database file, using lazy file enumerators for optimizing the conversion of large PGN files with millions of chess games.
|
7
7
|
|
8
8
|
## PGN files
|
9
9
|
|
@@ -162,6 +162,12 @@ $ zugzwang create [DATABASE] *[ITEMS] --extension, --extension=EXTENSION
|
|
162
162
|
>
|
163
163
|
> - Creates a database file at `games/1.db`, populating it with data from `.pgn` files found from recursively searching the current directory.
|
164
164
|
|
165
|
+
## TODO
|
166
|
+
|
167
|
+
- [ ] Add Postgres support
|
168
|
+
- [ ] Add multithreaded PGN file parsing
|
169
|
+
- [ ] Add specs/testing
|
170
|
+
|
165
171
|
## Development
|
166
172
|
|
167
173
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
data/lib/zugzwang.rb
CHANGED
@@ -3,6 +3,24 @@ require "zugzwang/helpers"
|
|
3
3
|
require "zugzwang/cli"
|
4
4
|
|
5
5
|
module Zugzwang
|
6
|
-
FIELDS =
|
6
|
+
FIELDS = {
|
7
|
+
Event: {type: :string},
|
8
|
+
Site: {type: :string, size: 50},
|
9
|
+
White: {type: :string, size: 30},
|
10
|
+
Black: {type: :string, size: 30},
|
11
|
+
Result: {type: :string, size: 10},
|
12
|
+
UTCDate: {type: :date, size: 15},
|
13
|
+
UTCTime: {type: :time, size: 8},
|
14
|
+
WhiteElo: {type: :integer},
|
15
|
+
BlackElo: {type: :integer},
|
16
|
+
WhiteRatingDiff: {type: :string, size: 5},
|
17
|
+
BlackRatingDiff: {type: :string, size: 5},
|
18
|
+
WhiteTitle: {type: :string, size: 5},
|
19
|
+
ECO: {type: :string, size: 3},
|
20
|
+
Opening: {type: :string},
|
21
|
+
TimeControl: {type: :string, size: 15},
|
22
|
+
Termination: {type: :string, size: 20},
|
23
|
+
Variant: {type: :string}
|
24
|
+
}
|
7
25
|
EXTENSIONS = %i[sql sqlite sqlite3 db]
|
8
26
|
end
|
data/lib/zugzwang/create.rb
CHANGED
@@ -1,12 +1,18 @@
|
|
1
1
|
require 'ruby-progressbar'
|
2
|
-
require 'thor'
|
3
2
|
|
4
3
|
module Zugzwang
|
5
4
|
module Create
|
6
5
|
def self.[](database_object, database, extension, items)
|
7
6
|
database_object.create_table :games do
|
8
7
|
primary_key :id
|
9
|
-
FIELDS.each
|
8
|
+
FIELDS.each do |name, options|
|
9
|
+
case options[:type]
|
10
|
+
when :string then String name, size: (options[:size]||255)
|
11
|
+
when :integer then Integer name
|
12
|
+
when :date then Date name
|
13
|
+
when :time then Time name, only_time: true
|
14
|
+
end
|
15
|
+
end
|
10
16
|
end
|
11
17
|
|
12
18
|
files = items.map{|item|
|
@@ -23,7 +29,7 @@ module Zugzwang
|
|
23
29
|
progress_bar = ProgressBar.create(:title => 'Progress', total: lines, progress_mark: "\e[1;35m#{?#}\e[0m", remainder_mark: ?., format: "%t: %p%% (Line: %c/%C) %B")
|
24
30
|
File.open(f,'r').each do |line|
|
25
31
|
if prev =~ /\A\[.*\Z/ && line =~ /\A[\n\r].*\Z/
|
26
|
-
database_object[:games].insert
|
32
|
+
database_object[:games].insert(**record)
|
27
33
|
record = {}
|
28
34
|
prev = line
|
29
35
|
progress_bar.increment
|
@@ -42,6 +48,7 @@ module Zugzwang
|
|
42
48
|
progress_bar.increment
|
43
49
|
end
|
44
50
|
end
|
51
|
+
|
45
52
|
puts "\n\e[92mComplete\e[0m: Saved #{extension} database at \e[1m#{database}.#{extension}\e[0m."
|
46
53
|
end
|
47
54
|
end
|
data/lib/zugzwang/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module Zugzwang
|
2
|
-
VERSION = "0.1.
|
3
|
-
end
|
2
|
+
VERSION = "0.1.3"
|
3
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zugzwang
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Edwin Onuonga
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -118,7 +118,6 @@ extra_rdoc_files: []
|
|
118
118
|
files:
|
119
119
|
- ".gitignore"
|
120
120
|
- Gemfile
|
121
|
-
- Gemfile.lock
|
122
121
|
- LICENSE
|
123
122
|
- README.md
|
124
123
|
- Rakefile
|
data/Gemfile.lock
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
zugzwang (0.1.2)
|
5
|
-
ruby-progressbar (~> 1.9)
|
6
|
-
sequel (~> 5.9)
|
7
|
-
sqlite3 (~> 1.3)
|
8
|
-
thor (~> 0.20)
|
9
|
-
|
10
|
-
GEM
|
11
|
-
remote: https://rubygems.org/
|
12
|
-
specs:
|
13
|
-
diff-lcs (1.3)
|
14
|
-
rake (12.3.1)
|
15
|
-
rspec (3.7.0)
|
16
|
-
rspec-core (~> 3.7.0)
|
17
|
-
rspec-expectations (~> 3.7.0)
|
18
|
-
rspec-mocks (~> 3.7.0)
|
19
|
-
rspec-core (3.7.1)
|
20
|
-
rspec-support (~> 3.7.0)
|
21
|
-
rspec-expectations (3.7.0)
|
22
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
23
|
-
rspec-support (~> 3.7.0)
|
24
|
-
rspec-mocks (3.7.0)
|
25
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
26
|
-
rspec-support (~> 3.7.0)
|
27
|
-
rspec-support (3.7.1)
|
28
|
-
ruby-progressbar (1.9.0)
|
29
|
-
sequel (5.9.0)
|
30
|
-
sqlite3 (1.3.13)
|
31
|
-
thor (0.20.0)
|
32
|
-
|
33
|
-
PLATFORMS
|
34
|
-
ruby
|
35
|
-
|
36
|
-
DEPENDENCIES
|
37
|
-
bundler (~> 1.16)
|
38
|
-
rake (~> 12.3)
|
39
|
-
rspec (~> 3.7)
|
40
|
-
zugzwang!
|
41
|
-
|
42
|
-
BUNDLED WITH
|
43
|
-
1.16.2
|