codeguessing 0.4.7 → 0.4.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +12 -4
- data/data/messages.yml +19 -0
- data/data/scores.yml +132 -0
- data/lib/codeguessing/console.rb +55 -70
- data/lib/codeguessing/game.rb +64 -61
- data/lib/codeguessing/version.rb +1 -1
- metadata +5 -7
- data/.travis.yml +0 -5
- data/CODE_OF_CONDUCT.md +0 -74
- data/LICENSE.txt +0 -21
- data/lib/codeguessing/scores.yml +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3571ea3b87067420d599b037a215dd6f25ff443f
|
4
|
+
data.tar.gz: 87f1fa7b7f5861954921f9ff43b5f41106022ec7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11c16fbbf424acdb3c7cd5ec9e84d2ced9466e260a06bae843ba843f8ef0de8dc20a7876f706833d22d7bb74f8559abf1b219db225a3495a276eaf94844090a2
|
7
|
+
data.tar.gz: 7f1632f2b2c9f670dd96420afdd3985200bc659833cc90f0adbe2325da6a2871a23fe5a672ef200fe38547b3252f0646f8874aa974f4092fd7e9c7ef8b79e648
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,9 +1,5 @@
|
|
1
1
|
# Codeguessing
|
2
2
|
|
3
|
-
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/codeguessing`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
6
|
-
|
7
3
|
## Installation
|
8
4
|
|
9
5
|
Add this line to your application's Gemfile:
|
@@ -27,3 +23,15 @@ require 'codeguessing'
|
|
27
23
|
Codeguessing::Console.new.go # Console game
|
28
24
|
Codeguessing::Game.new # Game model
|
29
25
|
```
|
26
|
+
## Telegram Bot
|
27
|
+
|
28
|
+
[Bot](https://telegram.me/CodeguessingBot)
|
29
|
+
|
30
|
+
## Game's rules
|
31
|
+
You need guess secret code. This FOUR-digit number(guess) with symbols from 1 to 6
|
32
|
+
You have 5 attempt(s) and 2 hint(s)
|
33
|
+
A '+' indicates an exact match: one of the numbers in the guess is the same as one of the numbers in the secret code and in the same position.
|
34
|
+
A '-' indicates a number match: one of the numbers in the guess is the same as one of the numbers in the secret code but in a different position.
|
35
|
+
A empty answer means that you nothing guessed
|
36
|
+
If you want get hint write or click on keyboard 'hint'
|
37
|
+
If you want start game write or click on keyboard 'new game'
|
data/data/messages.yml
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
rules:
|
2
|
+
- "-----------------Rules!----------------------"
|
3
|
+
- "You need guess secret code. This four-digit number with symbols from 1 to 6"
|
4
|
+
- "You have 5 attempt(s) and 2 hint(s)"
|
5
|
+
- "If you want get hint write 'hint'"
|
6
|
+
- '---------------------------------------------'
|
7
|
+
rules?: "Do you know rules? (Y/N)"
|
8
|
+
again?: "Do you want start again? (Y/N)"
|
9
|
+
save?: "Do you want save result? (Y/N)"
|
10
|
+
not_saved: "Maybe next time"
|
11
|
+
set_name: "Write your name"
|
12
|
+
invalid_data: "Invalid data"
|
13
|
+
cant_save: "You cant save game"
|
14
|
+
loose_code: "Secret code was"
|
15
|
+
scores_line:
|
16
|
+
start: "-----------Scores----------"
|
17
|
+
end: "---------------------------"
|
18
|
+
loose: "You loose!"
|
19
|
+
win: "You win!"
|
data/data/scores.yml
ADDED
@@ -0,0 +1,132 @@
|
|
1
|
+
---
|
2
|
+
- :secret_code: '4336'
|
3
|
+
:attempts: 3
|
4
|
+
:hint_count: 2
|
5
|
+
:state: win
|
6
|
+
:answer: "++++"
|
7
|
+
:name: YaroslavBIG
|
8
|
+
:date: 1478811836
|
9
|
+
- :secret_code: '4442'
|
10
|
+
:attempts: 3
|
11
|
+
:hint_count: 2
|
12
|
+
:state: win
|
13
|
+
:answer: "++++"
|
14
|
+
:name: '1234124'
|
15
|
+
:date: 1478981167
|
16
|
+
- :secret_code: '4331'
|
17
|
+
:attempts: 3
|
18
|
+
:hint_count: 2
|
19
|
+
:state: win
|
20
|
+
:answer: "++++"
|
21
|
+
:name: YaroslavBig
|
22
|
+
:date: 1478983335
|
23
|
+
- :secret_code: '6543'
|
24
|
+
:attempts: 0
|
25
|
+
:hint_count: 0
|
26
|
+
:state: win
|
27
|
+
:answer: "++++"
|
28
|
+
:name: Y
|
29
|
+
:date: 1480696247
|
30
|
+
- :secret_code: '2222'
|
31
|
+
:attempts: 5
|
32
|
+
:hint_count: 2
|
33
|
+
:state: win
|
34
|
+
:answer: ''
|
35
|
+
- :secret_code: '2222'
|
36
|
+
:attempts: -1
|
37
|
+
:hint_count: 0
|
38
|
+
:state: ''
|
39
|
+
:answer: ''
|
40
|
+
:name: Anonim
|
41
|
+
:date: 1480702360
|
42
|
+
- :secret_code: '2222'
|
43
|
+
:attempts: -1
|
44
|
+
:hint_count: 0
|
45
|
+
:state: ''
|
46
|
+
:answer: ''
|
47
|
+
:name: Anonim
|
48
|
+
:date: 1480702455
|
49
|
+
- :secret_code: '3424'
|
50
|
+
:attempts: 4
|
51
|
+
:hint_count: 2
|
52
|
+
:state: win
|
53
|
+
:answer: "++++"
|
54
|
+
:name: Yaroslav
|
55
|
+
:date: 1480703017
|
56
|
+
- :secret_code: '1244'
|
57
|
+
:attempts: 2
|
58
|
+
:hint_count: 2
|
59
|
+
:state: win
|
60
|
+
:answer: "++++"
|
61
|
+
:name: YaroslavYaroslav
|
62
|
+
:date: 1480703532
|
63
|
+
- :secret_code: '2222'
|
64
|
+
:attempts: -1
|
65
|
+
:hint_count: 0
|
66
|
+
:state: win
|
67
|
+
:answer: ''
|
68
|
+
:name: TestRspec
|
69
|
+
:date: 1480704981
|
70
|
+
- :secret_code: '2222'
|
71
|
+
:attempts: -1
|
72
|
+
:hint_count: 0
|
73
|
+
:state: win
|
74
|
+
:answer: ''
|
75
|
+
:name: TestRspec
|
76
|
+
:date: 1480705000
|
77
|
+
- :secret_code: '2222'
|
78
|
+
:attempts: -1
|
79
|
+
:hint_count: 0
|
80
|
+
:state: win
|
81
|
+
:answer: ''
|
82
|
+
:name: TestRspec
|
83
|
+
:date: 1480705003
|
84
|
+
- :secret_code: '2222'
|
85
|
+
:attempts: -1
|
86
|
+
:hint_count: 0
|
87
|
+
:state: win
|
88
|
+
:answer: ''
|
89
|
+
:name: TestRspec
|
90
|
+
:date: 1480705034
|
91
|
+
- :secret_code: '2222'
|
92
|
+
:attempts: -1
|
93
|
+
:hint_count: 0
|
94
|
+
:state: win
|
95
|
+
:answer: ''
|
96
|
+
:name: TestRspec
|
97
|
+
:date: 1480705083
|
98
|
+
- :secret_code: '2222'
|
99
|
+
:attempts: -1
|
100
|
+
:hint_count: 0
|
101
|
+
:state: win
|
102
|
+
:answer: ''
|
103
|
+
:name: TestRspec
|
104
|
+
:date: 1480705090
|
105
|
+
- :secret_code: '2222'
|
106
|
+
:attempts: -1
|
107
|
+
:hint_count: 0
|
108
|
+
:state: win
|
109
|
+
:answer: ''
|
110
|
+
:name: TestRspec
|
111
|
+
:date: 1480705102
|
112
|
+
- :secret_code: '2222'
|
113
|
+
:attempts: -1
|
114
|
+
:hint_count: 0
|
115
|
+
:state: win
|
116
|
+
:answer: ''
|
117
|
+
:name: TestRspec
|
118
|
+
:date: 1480705104
|
119
|
+
- :secret_code: '2222'
|
120
|
+
:attempts: -1
|
121
|
+
:hint_count: 0
|
122
|
+
:state: win
|
123
|
+
:answer: ''
|
124
|
+
:name: TestRspec
|
125
|
+
:date: 1480705458
|
126
|
+
- :secret_code: '2222'
|
127
|
+
:attempts: -1
|
128
|
+
:hint_count: 0
|
129
|
+
:state: win
|
130
|
+
:answer: ''
|
131
|
+
:name: TestRspec
|
132
|
+
:date: 1480705500
|
data/lib/codeguessing/console.rb
CHANGED
@@ -1,109 +1,94 @@
|
|
1
1
|
module Codeguessing
|
2
2
|
class Console
|
3
|
-
attr_reader :game, :scores
|
3
|
+
attr_reader :game, :scores
|
4
4
|
|
5
|
-
|
6
|
-
'-----------------Rules!----------------------',
|
7
|
-
"You need guess secret code. This four-digit number with symbols from 1 to 6",
|
8
|
-
"You have #{Game::MAX_ATTEMPTS} attempt(s) and #{Game::MAX_HINT} hint(s)",
|
9
|
-
"If you want get hint write 'hint'",
|
10
|
-
'---------------------------------------------'
|
11
|
-
]
|
5
|
+
MESSAGE = YAML.load_file(File.absolute_path('data/messages.yml'))
|
12
6
|
|
13
|
-
def initialize
|
14
|
-
@path = File.
|
7
|
+
def initialize
|
8
|
+
@path = File.absolute_path('data/scores.yml')
|
15
9
|
@scores = load(@path)
|
16
|
-
@game = Game.new
|
10
|
+
@game = Game.new
|
17
11
|
end
|
18
12
|
|
19
|
-
def
|
20
|
-
rules
|
21
|
-
puts "
|
22
|
-
case @game.win?
|
23
|
-
when true
|
24
|
-
win
|
25
|
-
when false
|
26
|
-
loose
|
27
|
-
else
|
28
|
-
gaming
|
29
|
-
end
|
13
|
+
def rules
|
14
|
+
puts MESSAGE['rules?']
|
15
|
+
puts MESSAGE['rules'].join("\n") unless confirm?
|
30
16
|
end
|
31
17
|
|
32
|
-
def
|
33
|
-
|
34
|
-
|
35
|
-
|
18
|
+
def go(knowed = false)
|
19
|
+
rules unless knowed
|
20
|
+
puts "Attempt(s): #{game.attempts} | Hint(s): #{game.hint_count}"
|
21
|
+
case game.win?
|
22
|
+
when true then win
|
23
|
+
when false then loose
|
24
|
+
else gaming
|
36
25
|
end
|
37
26
|
end
|
38
27
|
|
39
28
|
def gaming
|
40
29
|
action = gets.chomp
|
41
30
|
if action == 'hint'
|
42
|
-
puts
|
43
|
-
return go(
|
31
|
+
puts game.hint
|
32
|
+
return go(true)
|
44
33
|
end
|
45
|
-
if
|
46
|
-
puts
|
34
|
+
if game.valid?(action)
|
35
|
+
puts game.guess(action)
|
47
36
|
else
|
48
|
-
puts '
|
37
|
+
puts MESSAGE['invalid_data']
|
49
38
|
end
|
50
|
-
go(
|
39
|
+
go(true)
|
51
40
|
end
|
52
|
-
|
53
|
-
def confirm?(action = gets.chomp)
|
54
|
-
return true if action.downcase == 'y'
|
55
|
-
false
|
56
|
-
end
|
57
|
-
|
58
|
-
def load(path)
|
59
|
-
YAML.load(File.open(path)) if File.exist?(path)
|
60
|
-
end
|
61
|
-
|
62
|
-
def save!(name = 'Anonim')
|
63
|
-
unless @game.win?
|
64
|
-
return puts 'You cant save game'
|
65
|
-
end
|
66
|
-
name.chomp!
|
67
|
-
@scores << @game.cur_score(name)
|
68
|
-
File.new(@path, 'w') unless File.exist?(@path)
|
69
|
-
File.open(@path, "r+") do |f|
|
70
|
-
f.write(@scores.to_yaml)
|
71
|
-
end
|
72
|
-
@scores
|
73
|
-
end
|
74
41
|
|
75
42
|
private
|
76
43
|
|
44
|
+
def confirm?(action = gets.chomp)
|
45
|
+
return true if action.downcase == 'y'
|
46
|
+
false
|
47
|
+
end
|
48
|
+
|
49
|
+
def load(path)
|
50
|
+
YAML.load_file(path) if File.exist?(path)
|
51
|
+
end
|
52
|
+
|
53
|
+
def save(name: 'Anonim', path: @path)
|
54
|
+
return puts MESSAGE['cant_save'] unless game.win?
|
55
|
+
@scores << game.cur_score(name.chomp)
|
56
|
+
File.new(path, 'w') unless File.exist?(path)
|
57
|
+
File.open(path, "r+") do |f|
|
58
|
+
f.write(scores.to_yaml)
|
59
|
+
end
|
60
|
+
scores
|
61
|
+
end
|
62
|
+
|
77
63
|
def win
|
78
|
-
puts '
|
64
|
+
puts MESSAGE['win']
|
79
65
|
save?
|
80
|
-
again
|
66
|
+
again
|
81
67
|
end
|
82
68
|
|
83
69
|
def loose
|
84
|
-
puts '
|
85
|
-
puts "
|
86
|
-
again
|
70
|
+
puts MESSAGE['loose']
|
71
|
+
puts "#{MESSAGE['loose_code']} #{game.secret_code}"
|
72
|
+
again
|
87
73
|
end
|
88
74
|
|
89
75
|
def save?
|
90
|
-
puts '
|
91
|
-
return puts '
|
92
|
-
puts '
|
93
|
-
save
|
76
|
+
puts MESSAGE['save?']
|
77
|
+
return puts MESSAGE['not_saved'] unless confirm?
|
78
|
+
puts MESSAGE['set_name']
|
79
|
+
save(gets)
|
94
80
|
end
|
95
81
|
|
96
|
-
def again
|
97
|
-
puts '
|
82
|
+
def again
|
83
|
+
puts MESSAGE['again?']
|
98
84
|
if confirm?
|
99
85
|
@game = Game.new
|
100
|
-
return go(
|
86
|
+
return go(true)
|
101
87
|
else
|
102
|
-
puts '
|
103
|
-
p
|
104
|
-
puts '
|
88
|
+
puts MESSAGE['scores_line']['start']
|
89
|
+
p scores
|
90
|
+
puts MESSAGE['scores_line']['end']
|
105
91
|
end
|
106
92
|
end
|
107
|
-
|
108
93
|
end
|
109
94
|
end
|
data/lib/codeguessing/game.rb
CHANGED
@@ -6,95 +6,98 @@ module Codeguessing
|
|
6
6
|
MAX_ATTEMPTS = 5
|
7
7
|
MAX_SIZE = 4
|
8
8
|
|
9
|
-
def initialize
|
10
|
-
@secret_code =
|
11
|
-
@attempts =
|
12
|
-
@hint_count =
|
13
|
-
@state =
|
14
|
-
@answer =
|
9
|
+
def initialize
|
10
|
+
@secret_code = random
|
11
|
+
@attempts = MAX_ATTEMPTS
|
12
|
+
@hint_count = MAX_HINT
|
13
|
+
@state = ''
|
14
|
+
@answer = ''
|
15
15
|
end
|
16
16
|
|
17
17
|
def guess(code)
|
18
|
-
@state = 'loose' unless
|
19
|
-
|
18
|
+
@state = 'loose' unless natural?(use_attempt)
|
19
|
+
if code == secret_code
|
20
|
+
@state = 'win'
|
21
|
+
return @answer = '+' * MAX_SIZE
|
22
|
+
end
|
20
23
|
@answer = get_mark(code)
|
21
|
-
end
|
24
|
+
end
|
22
25
|
|
23
26
|
def get_mark(code)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
27
|
+
raise 'Invalid data' unless valid?(code)
|
28
|
+
mark = ''
|
29
|
+
secret_codes = secret_code.chars
|
30
|
+
codes = code.chars
|
31
|
+
|
32
|
+
secret_codes.each_with_index do |char, index|
|
33
|
+
next unless char == codes[index]
|
34
|
+
secret_codes[index] = nil
|
35
|
+
codes[index] = nil
|
36
|
+
mark += '+'
|
37
|
+
end
|
38
|
+
|
39
|
+
secret_codes.compact.each_with_index do |char, index|
|
40
|
+
next unless code_index = codes.index(char)
|
41
|
+
codes[code_index] = nil
|
42
|
+
mark += '-'
|
43
|
+
end
|
44
|
+
|
45
|
+
mark
|
46
|
+
end
|
38
47
|
|
39
48
|
def hint
|
40
|
-
return '' unless
|
49
|
+
return '' unless natural?(hint_count)
|
41
50
|
use_hint
|
42
51
|
hint = '*' * MAX_SIZE
|
43
52
|
index = rand(0...MAX_SIZE)
|
44
|
-
|
45
|
-
hint[index] = code_char
|
53
|
+
hint[index] = secret_code[index]
|
46
54
|
hint
|
47
55
|
end
|
48
56
|
|
57
|
+
def win?
|
58
|
+
case @state
|
59
|
+
when 'win' then true
|
60
|
+
when 'loose' then false
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
49
64
|
def cur_score(name = 'Anonim')
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
65
|
+
scores = cur_game
|
66
|
+
scores[:name] = name
|
67
|
+
scores[:attempts] = MAX_SIZE - attempts
|
68
|
+
scores[:hint_count] = MAX_HINT - hint_count
|
69
|
+
scores[:date] = Time.now.to_i
|
70
|
+
scores
|
56
71
|
end
|
57
72
|
|
73
|
+
def cur_game
|
74
|
+
attributes = instance_variables.map do |var|
|
75
|
+
[var[1..-1].to_sym, instance_variable_get(var)]
|
76
|
+
end
|
77
|
+
attributes.to_h
|
78
|
+
end
|
79
|
+
|
58
80
|
def valid?(code)
|
59
81
|
return true if code =~ /^[1-6]{#{MAX_SIZE}}$/s
|
60
82
|
false
|
61
|
-
end
|
83
|
+
end
|
62
84
|
|
63
|
-
|
64
|
-
@attempts -= 1
|
65
|
-
end
|
85
|
+
private
|
66
86
|
|
67
|
-
def
|
68
|
-
|
69
|
-
end
|
70
|
-
|
71
|
-
def win?
|
72
|
-
case @state
|
73
|
-
when 'win' then true
|
74
|
-
when 'loose' then false
|
75
|
-
end
|
87
|
+
def natural?(number)
|
88
|
+
number >= 0
|
76
89
|
end
|
77
90
|
|
78
|
-
def
|
79
|
-
|
80
|
-
self.instance_variables.each do |k, v|
|
81
|
-
new_k = k.to_s.gsub('@','').to_sym
|
82
|
-
hash[new_k] = self.instance_variable_get(k)
|
83
|
-
end
|
84
|
-
hash
|
91
|
+
def random
|
92
|
+
Array.new(MAX_SIZE) { rand(1..6) }.join
|
85
93
|
end
|
86
94
|
|
87
|
-
|
88
|
-
|
89
|
-
def check?(varible)
|
90
|
-
return false if varible == 0
|
91
|
-
true
|
95
|
+
def use_attempt
|
96
|
+
@attempts -= 1
|
92
97
|
end
|
93
98
|
|
94
|
-
def
|
95
|
-
|
96
|
-
MAX_SIZE.times { code += rand(1..6).to_s }
|
97
|
-
code
|
99
|
+
def use_hint
|
100
|
+
@hint_count -= 1
|
98
101
|
end
|
99
102
|
|
100
103
|
end
|
data/lib/codeguessing/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codeguessing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bezrukavyi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -75,19 +75,17 @@ extra_rdoc_files: []
|
|
75
75
|
files:
|
76
76
|
- ".gitignore"
|
77
77
|
- ".rspec"
|
78
|
-
- ".travis.yml"
|
79
|
-
- CODE_OF_CONDUCT.md
|
80
78
|
- Gemfile
|
81
|
-
- LICENSE.txt
|
82
79
|
- README.md
|
83
80
|
- Rakefile
|
84
81
|
- bin/console
|
85
82
|
- bin/setup
|
86
83
|
- codeguessing.gemspec
|
84
|
+
- data/messages.yml
|
85
|
+
- data/scores.yml
|
87
86
|
- lib/codeguessing.rb
|
88
87
|
- lib/codeguessing/console.rb
|
89
88
|
- lib/codeguessing/game.rb
|
90
|
-
- lib/codeguessing/scores.yml
|
91
89
|
- lib/codeguessing/version.rb
|
92
90
|
homepage: https://github.com/bezrukavyi/codeguessing
|
93
91
|
licenses:
|
@@ -109,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
107
|
version: '0'
|
110
108
|
requirements: []
|
111
109
|
rubyforge_project:
|
112
|
-
rubygems_version: 2.
|
110
|
+
rubygems_version: 2.6.8
|
113
111
|
signing_key:
|
114
112
|
specification_version: 4
|
115
113
|
summary: Codeguessing
|
data/.travis.yml
DELETED
data/CODE_OF_CONDUCT.md
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
# Contributor Covenant Code of Conduct
|
2
|
-
|
3
|
-
## Our Pledge
|
4
|
-
|
5
|
-
In the interest of fostering an open and welcoming environment, we as
|
6
|
-
contributors and maintainers pledge to making participation in our project and
|
7
|
-
our community a harassment-free experience for everyone, regardless of age, body
|
8
|
-
size, disability, ethnicity, gender identity and expression, level of experience,
|
9
|
-
nationality, personal appearance, race, religion, or sexual identity and
|
10
|
-
orientation.
|
11
|
-
|
12
|
-
## Our Standards
|
13
|
-
|
14
|
-
Examples of behavior that contributes to creating a positive environment
|
15
|
-
include:
|
16
|
-
|
17
|
-
* Using welcoming and inclusive language
|
18
|
-
* Being respectful of differing viewpoints and experiences
|
19
|
-
* Gracefully accepting constructive criticism
|
20
|
-
* Focusing on what is best for the community
|
21
|
-
* Showing empathy towards other community members
|
22
|
-
|
23
|
-
Examples of unacceptable behavior by participants include:
|
24
|
-
|
25
|
-
* The use of sexualized language or imagery and unwelcome sexual attention or
|
26
|
-
advances
|
27
|
-
* Trolling, insulting/derogatory comments, and personal or political attacks
|
28
|
-
* Public or private harassment
|
29
|
-
* Publishing others' private information, such as a physical or electronic
|
30
|
-
address, without explicit permission
|
31
|
-
* Other conduct which could reasonably be considered inappropriate in a
|
32
|
-
professional setting
|
33
|
-
|
34
|
-
## Our Responsibilities
|
35
|
-
|
36
|
-
Project maintainers are responsible for clarifying the standards of acceptable
|
37
|
-
behavior and are expected to take appropriate and fair corrective action in
|
38
|
-
response to any instances of unacceptable behavior.
|
39
|
-
|
40
|
-
Project maintainers have the right and responsibility to remove, edit, or
|
41
|
-
reject comments, commits, code, wiki edits, issues, and other contributions
|
42
|
-
that are not aligned to this Code of Conduct, or to ban temporarily or
|
43
|
-
permanently any contributor for other behaviors that they deem inappropriate,
|
44
|
-
threatening, offensive, or harmful.
|
45
|
-
|
46
|
-
## Scope
|
47
|
-
|
48
|
-
This Code of Conduct applies both within project spaces and in public spaces
|
49
|
-
when an individual is representing the project or its community. Examples of
|
50
|
-
representing a project or community include using an official project e-mail
|
51
|
-
address, posting via an official social media account, or acting as an appointed
|
52
|
-
representative at an online or offline event. Representation of a project may be
|
53
|
-
further defined and clarified by project maintainers.
|
54
|
-
|
55
|
-
## Enforcement
|
56
|
-
|
57
|
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
58
|
-
reported by contacting the project team at yaroslav555@gmail.com. All
|
59
|
-
complaints will be reviewed and investigated and will result in a response that
|
60
|
-
is deemed necessary and appropriate to the circumstances. The project team is
|
61
|
-
obligated to maintain confidentiality with regard to the reporter of an incident.
|
62
|
-
Further details of specific enforcement policies may be posted separately.
|
63
|
-
|
64
|
-
Project maintainers who do not follow or enforce the Code of Conduct in good
|
65
|
-
faith may face temporary or permanent repercussions as determined by other
|
66
|
-
members of the project's leadership.
|
67
|
-
|
68
|
-
## Attribution
|
69
|
-
|
70
|
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
71
|
-
available at [http://contributor-covenant.org/version/1/4][version]
|
72
|
-
|
73
|
-
[homepage]: http://contributor-covenant.org
|
74
|
-
[version]: http://contributor-covenant.org/version/1/4/
|
data/LICENSE.txt
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
The MIT License (MIT)
|
2
|
-
|
3
|
-
Copyright (c) 2016 bezrukavyi
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
7
|
-
in the Software without restriction, including without limitation the rights
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
10
|
-
furnished to do so, subject to the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
13
|
-
all copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
-
THE SOFTWARE.
|