codebreaker2018 0.2.8.3 → 0.3.0.2
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/lib/codebreaker/console.rb +2 -17
- data/lib/codebreaker/localization.rb +11 -2
- data/lib/codebreaker/message.rb +1 -0
- data/lib/codebreaker/storage.rb +26 -0
- data/lib/codebreaker/version.rb +1 -1
- data/lib/codebreaker.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 799d4f49abd9be97d1c508b3b1ec3f3f3e603b274148e4c2474c476a43e63ea2
|
4
|
+
data.tar.gz: 5cf0cf34b755af1a5aa8dd71a19bc04a7b7a90e45f7c983c73eda0a5b0c2b8d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1645d38d18512010ee19adf04217ee0b3b9725636a3e565ee5da0e3c47864007209ec7bda17bc3d6de5e4a00534fb41851b348fc357c294709de70b9fc9ae1e1
|
7
|
+
data.tar.gz: 994f43db763377fadebf036ed4fab608064f9c11df670a9251e4debcde193380e97f0d6c168f293472ddc16f26b782e8eba591c8e98aafd419bad07efe35d6bc
|
data/lib/codebreaker/console.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'colorize'
|
2
2
|
require 'erb'
|
3
|
-
require 'yaml'
|
4
3
|
|
5
4
|
module Codebreaker
|
6
5
|
class Console
|
7
6
|
include Message
|
7
|
+
include Storage
|
8
8
|
|
9
9
|
DEMO = Game.new('Demo User', 5, 2, :middle, :en)
|
10
10
|
HINT = '-h'.freeze
|
@@ -44,10 +44,6 @@ module Codebreaker
|
|
44
44
|
@scores = load_game_data
|
45
45
|
end
|
46
46
|
|
47
|
-
def load_game_data
|
48
|
-
YAML.load(File.open(storage_path, 'r')) rescue []
|
49
|
-
end
|
50
|
-
|
51
47
|
def submit_answer
|
52
48
|
process(user_interaction)
|
53
49
|
end
|
@@ -143,17 +139,6 @@ module Codebreaker
|
|
143
139
|
end
|
144
140
|
end
|
145
141
|
|
146
|
-
def prepare_storage_dir
|
147
|
-
storage_dir = File.dirname(storage_path)
|
148
|
-
Dir.mkdir(storage_dir) unless File.exists?(storage_dir)
|
149
|
-
end
|
150
|
-
|
151
|
-
def save_to_yml
|
152
|
-
File.open(storage_path, 'w') do |file|
|
153
|
-
file.write(YAML.dump(scores))
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
142
|
def new_game
|
158
143
|
print message['alerts']['new_game']
|
159
144
|
if input_selector
|
@@ -179,7 +164,7 @@ module Codebreaker
|
|
179
164
|
|
180
165
|
def erase_game_data
|
181
166
|
begin
|
182
|
-
|
167
|
+
erase_data_file
|
183
168
|
scores.clear
|
184
169
|
puts message['info']['successfully_erased'].green
|
185
170
|
rescue
|
@@ -4,8 +4,9 @@ module Codebreaker
|
|
4
4
|
class Localization
|
5
5
|
attr_accessor :lang
|
6
6
|
|
7
|
-
def initialize(app_type, lang = :en)
|
7
|
+
def initialize(app_type, external_path = false, lang = :en)
|
8
8
|
@lang = lang
|
9
|
+
apply_external_path(external_path)
|
9
10
|
select_application(app_type)
|
10
11
|
candidates_to_load
|
11
12
|
merge_localizations
|
@@ -18,7 +19,15 @@ module Codebreaker
|
|
18
19
|
|
19
20
|
private
|
20
21
|
|
22
|
+
def apply_external_path(external_path)
|
23
|
+
if Dir.glob("#{external_path}/*/*.yml").empty? && external_path
|
24
|
+
raise ArgumentError, 'Invalid external path.'
|
25
|
+
end
|
26
|
+
@external_path = external_path ? external_path : false
|
27
|
+
end
|
28
|
+
|
21
29
|
def localizations_dir
|
30
|
+
return @external_path if @external_path
|
22
31
|
File.expand_path('./locale/.', File.dirname(__FILE__))
|
23
32
|
end
|
24
33
|
|
@@ -41,7 +50,7 @@ module Codebreaker
|
|
41
50
|
|
42
51
|
def merge_localizations
|
43
52
|
localizations
|
44
|
-
loaded_ymls =
|
53
|
+
loaded_ymls = candidates_to_load.map { |file| YAML.load(File.open(file, 'r')) }
|
45
54
|
loaded_ymls.each { |loaded_yml| @localizations.update(loaded_yml) }
|
46
55
|
end
|
47
56
|
end
|
data/lib/codebreaker/message.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module Codebreaker
|
4
|
+
module Storage
|
5
|
+
private
|
6
|
+
def load_game_data
|
7
|
+
YAML.load(File.open(storage_path, 'r')) rescue []
|
8
|
+
end
|
9
|
+
|
10
|
+
def prepare_storage_dir
|
11
|
+
storage_dir = File.dirname(storage_path)
|
12
|
+
Dir.mkdir(storage_dir) unless File.exists?(storage_dir)
|
13
|
+
end
|
14
|
+
|
15
|
+
def save_to_yml
|
16
|
+
scores_to_save = scores | load_game_data
|
17
|
+
File.open(storage_path, 'w') do |file|
|
18
|
+
file.write(YAML.dump(scores_to_save))
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def erase_data_file
|
23
|
+
File.delete(storage_path)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/codebreaker/version.rb
CHANGED
data/lib/codebreaker.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require_relative 'codebreaker/version'
|
2
2
|
require_relative 'codebreaker/localization'
|
3
3
|
require_relative 'codebreaker/message'
|
4
|
+
require_relative 'codebreaker/storage'
|
4
5
|
require_relative 'codebreaker/game'
|
5
6
|
require_relative 'codebreaker/score'
|
6
7
|
require_relative 'codebreaker/console'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codebreaker2018
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladislav Trotsenko
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- lib/codebreaker/localization.rb
|
96
96
|
- lib/codebreaker/message.rb
|
97
97
|
- lib/codebreaker/score.rb
|
98
|
+
- lib/codebreaker/storage.rb
|
98
99
|
- lib/codebreaker/version.rb
|
99
100
|
homepage: https://github.com/bestwebua/homework-04-codebreaker
|
100
101
|
licenses:
|