zugzwang 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|