messages_dictionary 0.0.1.rc2 → 0.0.1
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/.rspec +1 -0
- data/.travis.yml +9 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +37 -2
- data/README.md +99 -5
- data/Rakefile +6 -0
- data/lib/messages_dictionary/injector.rb +0 -2
- data/lib/messages_dictionary/version.rb +1 -1
- data/messages_dictionary.gemspec +5 -0
- data/spec/injector_spec.rb +125 -0
- data/spec/spec_helper.rb +14 -0
- data/spec/support/spec_files_setup.rb +14 -0
- data/spec/support/spec_utils.rb +23 -0
- data/spec/support/test_class.rb +4 -0
- data/spec/utils/dict_spec.rb +8 -0
- data/spec/utils/snake_case_spec.rb +7 -0
- metadata +72 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36034266259848faccc844f5b655b8afae375e05
|
4
|
+
data.tar.gz: 9585e85d023b9531ba57f43c59931da54ffefc4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfa579275d388efe14516ea0374459dc152ada66803e2b37165f301d13c0ef939ba58cba9c4f8c0733f5d593836579395283a58d5b5a809b611134ee8c1be04a
|
7
|
+
data.tar.gz: a3abcb0af2d095b7a8a938c445aab3d64db900ea31b004d99ff02f63da2009ebd28db6f26dc96632b1fba98e2ec06bac4eed1e781e0fea5cfef7db6348c81a1b
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color --format doc --order rand --require spec_helper
|
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,20 +1,55 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
messages_dictionary (0.0.1
|
4
|
+
messages_dictionary (0.0.1)
|
5
5
|
hashie (~> 3.4)
|
6
6
|
|
7
7
|
GEM
|
8
|
-
remote:
|
8
|
+
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
+
codeclimate-test-reporter (0.5.0)
|
11
|
+
simplecov (>= 0.7.1, < 1.0.0)
|
12
|
+
coderay (1.1.1)
|
13
|
+
diff-lcs (1.2.5)
|
14
|
+
docile (1.1.5)
|
10
15
|
hashie (3.4.3)
|
16
|
+
json (1.8.3)
|
17
|
+
method_source (0.8.2)
|
18
|
+
pry (0.10.3)
|
19
|
+
coderay (~> 1.1.0)
|
20
|
+
method_source (~> 0.8.1)
|
21
|
+
slop (~> 3.4)
|
22
|
+
rake (11.1.2)
|
23
|
+
rspec (3.4.0)
|
24
|
+
rspec-core (~> 3.4.0)
|
25
|
+
rspec-expectations (~> 3.4.0)
|
26
|
+
rspec-mocks (~> 3.4.0)
|
27
|
+
rspec-core (3.4.4)
|
28
|
+
rspec-support (~> 3.4.0)
|
29
|
+
rspec-expectations (3.4.0)
|
30
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
31
|
+
rspec-support (~> 3.4.0)
|
32
|
+
rspec-mocks (3.4.1)
|
33
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
34
|
+
rspec-support (~> 3.4.0)
|
35
|
+
rspec-support (3.4.1)
|
36
|
+
simplecov (0.11.2)
|
37
|
+
docile (~> 1.1.0)
|
38
|
+
json (~> 1.8)
|
39
|
+
simplecov-html (~> 0.10.0)
|
40
|
+
simplecov-html (0.10.0)
|
41
|
+
slop (3.6.0)
|
11
42
|
|
12
43
|
PLATFORMS
|
13
44
|
ruby
|
14
45
|
x86-mingw32
|
15
46
|
|
16
47
|
DEPENDENCIES
|
48
|
+
codeclimate-test-reporter (~> 0.5)
|
17
49
|
messages_dictionary!
|
50
|
+
pry
|
51
|
+
rake (~> 11.1)
|
52
|
+
rspec (~> 3.4)
|
18
53
|
|
19
54
|
BUNDLED WITH
|
20
55
|
1.11.2
|
data/README.md
CHANGED
@@ -1,11 +1,25 @@
|
|
1
1
|
# MessagesDictionary
|
2
|
+
[](https://badge.fury.io/rb/messages_dictionary)
|
3
|
+
[](https://travis-ci.org/bodrovis-learning/messages_dictionary)
|
4
|
+
[](https://codeclimate.com/github/bodrovis-learning/messages_dictionary)
|
5
|
+
[](https://gemnasium.com/bodrovis-learning/messages_dictionary)
|
2
6
|
|
3
7
|
This gem was created as an educational project for my student. The idea behind this gem is to organize
|
4
8
|
various messages in a simple key-value format that can be fetched later. Messages support interpolation,
|
5
9
|
can be stored inside files or passed as hashes (nested hashes are supported as well). Custom fetching rules
|
6
10
|
can be specified as well.
|
7
11
|
|
8
|
-
|
12
|
+
Some use-cases can be found, for example, in the [Guesser](https://github.com/bodrovis/Guesser) game:
|
13
|
+
|
14
|
+
* [Messages are stored inside files](https://github.com/bodrovis/Guesser/tree/master/lib/guesser/messages)
|
15
|
+
* [Displaying errors](https://github.com/bodrovis/Guesser/blob/master/lib/guesser.rb#L25)
|
16
|
+
* [Displaying informational messages](https://github.com/bodrovis/Guesser/blob/master/lib/guesser/game.rb#L29)
|
17
|
+
|
18
|
+
Install it
|
19
|
+
|
20
|
+
gem install messages_dictionary
|
21
|
+
|
22
|
+
and refer to the next section to see it in action.
|
9
23
|
|
10
24
|
## Usage
|
11
25
|
|
@@ -32,9 +46,11 @@ class MyOtherClass
|
|
32
46
|
end
|
33
47
|
```
|
34
48
|
|
35
|
-
With `messages_dictionary` you can transform it into
|
49
|
+
These messages are scattered all over the program and can be hard to maintain. With `messages_dictionary` you can transform it into
|
36
50
|
|
37
51
|
```ruby
|
52
|
+
require 'messages_dictionary' # For brevity this line will be omitted in other examples
|
53
|
+
|
38
54
|
class MyClass
|
39
55
|
include MessagesDictionary
|
40
56
|
has_messages_dictionary
|
@@ -74,14 +90,62 @@ show_values: "The first value is {{a}}, the second is {{b}}"
|
|
74
90
|
welcome: "Welcome!"
|
75
91
|
```
|
76
92
|
|
93
|
+
**Please note**, that if your class is named `MyModule::MyClass`, then by default the program will search
|
94
|
+
for a file named `my_class.yml` inside `my_module` directory. This can be further customized, refer
|
95
|
+
the "Further Customization" section for more info.
|
96
|
+
|
77
97
|
So by saying `pretty_output(:show_result, result: result)` you are fetching a message under the key
|
78
98
|
`show_result` and replace the `{{result}}` part with the value of the `result` variable. Simple, eh?
|
79
99
|
|
100
|
+
### Nesting
|
101
|
+
|
102
|
+
MessagesDictionary supports nesting (similar to localization files in Rails):
|
103
|
+
|
104
|
+
*my_class.yml*
|
105
|
+
|
106
|
+
```yaml
|
107
|
+
show_result: "The result is {{result}}"
|
108
|
+
nested:
|
109
|
+
value: 'Nested value'
|
110
|
+
```
|
111
|
+
|
112
|
+
Nested messages can be easily accessed with dot notation:
|
113
|
+
|
114
|
+
```ruby
|
115
|
+
class MyClass
|
116
|
+
include MessagesDictionary
|
117
|
+
has_messages_dictionary
|
118
|
+
|
119
|
+
def do_something
|
120
|
+
pretty_output('nested.value') # => 'Nested value'
|
121
|
+
end
|
122
|
+
end
|
123
|
+
```
|
124
|
+
|
125
|
+
### Indifferent Access
|
126
|
+
|
127
|
+
Keys can be passed to the `pretty_output` method as symbols or strings - it does not really matter:
|
128
|
+
|
129
|
+
```ruby
|
130
|
+
class MyClass
|
131
|
+
include MessagesDictionary
|
132
|
+
has_messages_dictionary
|
133
|
+
|
134
|
+
def calculate(a)
|
135
|
+
result = a ** 2
|
136
|
+
pretty_output(:show_result, result: result)
|
137
|
+
# OR
|
138
|
+
pretty_output('show_result', result: result)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
```
|
142
|
+
|
80
143
|
### Further Customization
|
81
144
|
|
82
145
|
#### Specifying File Name and Directory
|
83
146
|
|
84
|
-
By default `messages_dictionary` will search for a *.yml* file named after your class (converted snake case
|
147
|
+
By default `messages_dictionary` will search for a *.yml* file named after your class (converted to snake case,
|
148
|
+
so for the `MyClass` the file should be named *my_class.yml*)
|
85
149
|
inside the same directory. However, this behavior can be easily changed with the following options:
|
86
150
|
|
87
151
|
* `:file` (`string`) - specifies the file name to load messages from (extension has to be provided).
|
@@ -94,9 +158,24 @@ class MyClass
|
|
94
158
|
end
|
95
159
|
```
|
96
160
|
|
161
|
+
Both of these options are not mandatory.
|
162
|
+
|
163
|
+
#### Specifying Messages Hash
|
164
|
+
|
165
|
+
Instead of loading messages from a file, you can pass hash to the `has_messages_dictionary` using `:messages` option:
|
166
|
+
|
167
|
+
```ruby
|
168
|
+
class MyClass
|
169
|
+
include MessagesDictionary
|
170
|
+
has_messages_dictionary messages: {key: 'value'}
|
171
|
+
end
|
172
|
+
```
|
173
|
+
|
174
|
+
Nesting and all other features are supported as well.
|
175
|
+
|
97
176
|
#### Specifying Output and Display Method
|
98
177
|
|
99
|
-
By default all messages will be outputted to `STDOUT` using `puts` method, however this can be changed
|
178
|
+
By default all messages will be outputted to `STDOUT` using `puts` method, however this can be changed:
|
100
179
|
|
101
180
|
* `:output` (`object`) - specify your own output. The object you provide has to implement `puts` method
|
102
181
|
or any other method you provide for the `:method` option.
|
@@ -111,7 +190,7 @@ end
|
|
111
190
|
|
112
191
|
#### Providing Custom Transformation Logic
|
113
192
|
|
114
|
-
Suppose you want to transform your message somehow or even return it instead of printing on the screen.
|
193
|
+
Suppose you want to transform your message somehow or even simply return it instead of printing on the screen.
|
115
194
|
`pretty_output` method accepts an optional block for this purpose:
|
116
195
|
|
117
196
|
```ruby
|
@@ -147,6 +226,21 @@ my_object = MyClass.new
|
|
147
226
|
my_object.greet # Will return "WELCOME", nothing will be put on the screen
|
148
227
|
```
|
149
228
|
|
229
|
+
**Please note** that by default MessagesDictionary **does not output anything** when you provide transformation
|
230
|
+
block. This is done to allow more control, because sometimes you may want to fetch a message, but not output
|
231
|
+
it anywhere (for example, when raising a custom error - see use case [here](https://github.com/bodrovis/Guesser/blob/master/lib/guesser.rb#L25)).
|
232
|
+
|
233
|
+
If you do want to output your message after transformation, you have to do it explicitly:
|
234
|
+
|
235
|
+
```ruby
|
236
|
+
def greet
|
237
|
+
pretty_output(:welcome) do |msg|
|
238
|
+
msg.upcase!
|
239
|
+
puts msg # => Prints "WELCOME"
|
240
|
+
end
|
241
|
+
end
|
242
|
+
```
|
243
|
+
|
150
244
|
## License
|
151
245
|
|
152
246
|
Licensed under the [MIT License](https://github.com/bodrovis-learning/messages_dictionary/blob/master/LICENSE).
|
data/Rakefile
ADDED
@@ -26,13 +26,11 @@ module MessagesDictionary
|
|
26
26
|
values.each do |k, v|
|
27
27
|
msg.gsub!(Regexp.new('\{\{' + k.to_s + '\}\}'), v.to_s)
|
28
28
|
end
|
29
|
-
|
30
29
|
transform = klass::DICTIONARY_CONF[:transform] || block
|
31
30
|
transform ?
|
32
31
|
transform.call(msg) :
|
33
32
|
klass::DICTIONARY_CONF[:output].send(klass::DICTIONARY_CONF[:method].to_sym, msg)
|
34
33
|
end
|
35
|
-
|
36
34
|
private :pretty_output
|
37
35
|
end
|
38
36
|
end
|
data/messages_dictionary.gemspec
CHANGED
@@ -17,4 +17,9 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.require_paths = ["lib"]
|
18
18
|
|
19
19
|
spec.add_dependency 'hashie', '~> 3.4'
|
20
|
+
|
21
|
+
spec.add_development_dependency "rake", "~> 11.1"
|
22
|
+
spec.add_development_dependency "rspec", "~> 3.4"
|
23
|
+
spec.add_development_dependency "pry"
|
24
|
+
spec.add_development_dependency "codeclimate-test-reporter", "~> 0.5"
|
20
25
|
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
RSpec.describe MessagesDictionary do
|
2
|
+
before :all do
|
3
|
+
@subject = SpecAddons::TestClass
|
4
|
+
@subject.class_eval do
|
5
|
+
include MessagesDictionary
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
before :each do
|
10
|
+
@subject.class_eval do
|
11
|
+
remove_const(:DICTIONARY_CONF) if const_defined?(:DICTIONARY_CONF)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context "messages" do
|
16
|
+
context "outputting" do
|
17
|
+
it "uses STDOUT by default" do
|
18
|
+
@subject.class_eval do
|
19
|
+
has_messages_dictionary messages: {test: 'string'}
|
20
|
+
end
|
21
|
+
|
22
|
+
expect(@subject::DICTIONARY_CONF[:output]).to eq(STDOUT)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "uses puts method by default" do
|
26
|
+
@subject.class_eval do
|
27
|
+
has_messages_dictionary messages: {test: 'string'}
|
28
|
+
end
|
29
|
+
|
30
|
+
expect(@subject::DICTIONARY_CONF[:method]).to eq(:puts)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "allows customizing output and method" do
|
34
|
+
output = double('output')
|
35
|
+
@subject.class_eval do
|
36
|
+
has_messages_dictionary messages: {test: 'string'}, output: output, method: :custom_puts
|
37
|
+
end
|
38
|
+
|
39
|
+
object = @subject.new
|
40
|
+
expect(output).to receive(:custom_puts).with('string')
|
41
|
+
object.send(:pretty_output, :test)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context "passed as hash" do
|
46
|
+
it "supports nesting" do
|
47
|
+
@subject.class_eval do
|
48
|
+
has_messages_dictionary messages: {parent: {child: 'child_string'} }
|
49
|
+
end
|
50
|
+
|
51
|
+
object = @subject.new
|
52
|
+
expect( object.send(:pretty_output, 'parent.child') {|msg| msg} ).to eq('child_string')
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context "passed in file" do
|
57
|
+
it "searches file named after class name by default" do
|
58
|
+
setup_env!('spec_addons', 'test_class.yml')
|
59
|
+
|
60
|
+
@subject.class_eval do
|
61
|
+
has_messages_dictionary
|
62
|
+
end
|
63
|
+
|
64
|
+
object = @subject.new
|
65
|
+
expect( object.send(:pretty_output, :test) {|msg| msg} ).to eq('string')
|
66
|
+
clear_env!('spec_addons')
|
67
|
+
end
|
68
|
+
|
69
|
+
it "allows passing path and file" do
|
70
|
+
setup_env!('my_test_dir', 'my_test_file.yml')
|
71
|
+
|
72
|
+
@subject.class_eval do
|
73
|
+
has_messages_dictionary file: 'my_test_file.yml', dir: 'my_test_dir'
|
74
|
+
end
|
75
|
+
|
76
|
+
object = @subject.new
|
77
|
+
expect( object.send(:pretty_output, :test) {|msg| msg} ).to eq('string')
|
78
|
+
clear_env!('my_test_dir')
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context "error" do
|
84
|
+
it "is raised when key is not found" do
|
85
|
+
@subject.class_eval do
|
86
|
+
has_messages_dictionary messages: {test: 'string'}
|
87
|
+
end
|
88
|
+
|
89
|
+
object = @subject.new
|
90
|
+
expect( -> {object.send(:pretty_output, :does_not_exist)} ).to raise_error(KeyError)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "is raised when file is not found and the program aborts" do
|
94
|
+
err = capture_stderr do
|
95
|
+
expect(-> {
|
96
|
+
@subject.class_eval do
|
97
|
+
has_messages_dictionary dir: 'random', file: 'not_exist.yml'
|
98
|
+
end
|
99
|
+
}).to raise_error(SystemExit)
|
100
|
+
end.strip
|
101
|
+
expect(err).to eq("File #{File.expand_path('random/not_exist.yml')} does not exist...")
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context "transformations" do
|
106
|
+
it "applies per-method transformations" do
|
107
|
+
@subject.class_eval do
|
108
|
+
has_messages_dictionary messages: {test: 'string'}
|
109
|
+
end
|
110
|
+
|
111
|
+
object = @subject.new
|
112
|
+
expect( object.send(:pretty_output, :test) {|msg| msg.upcase!} ).to eq('STRING')
|
113
|
+
end
|
114
|
+
|
115
|
+
it "applies per-class transformations" do
|
116
|
+
@subject.class_eval do
|
117
|
+
has_messages_dictionary messages: {test: 'string'},
|
118
|
+
transform: ->(msg) {msg.upcase!}
|
119
|
+
end
|
120
|
+
|
121
|
+
object = @subject.new
|
122
|
+
expect( object.send(:pretty_output, :test) ).to eq('STRING')
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require "pry"
|
2
|
+
require "codeclimate-test-reporter"
|
3
|
+
CodeClimate::TestReporter.start
|
4
|
+
|
5
|
+
$LOAD_PATH << File.expand_path('../../../lib', __FILE__)
|
6
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
7
|
+
|
8
|
+
require 'messages_dictionary'
|
9
|
+
|
10
|
+
RSpec.configure do |config|
|
11
|
+
config.include SpecAddons
|
12
|
+
config.include SpecFilesSetup
|
13
|
+
config.include SpecUtils
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module SpecFilesSetup
|
4
|
+
def setup_env!(path, file)
|
5
|
+
FileUtils.mkdir_p(path)
|
6
|
+
f = File.new("#{path}/#{file}", 'w+')
|
7
|
+
f.write('test: string')
|
8
|
+
f.close
|
9
|
+
end
|
10
|
+
|
11
|
+
def clear_env!(path)
|
12
|
+
FileUtils.remove_entry(path)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module SpecUtils
|
2
|
+
def capture_stderr(&block)
|
3
|
+
original_stderr = $stderr
|
4
|
+
$stderr = fake = StringIO.new
|
5
|
+
begin
|
6
|
+
yield
|
7
|
+
ensure
|
8
|
+
$stderr = original_stderr
|
9
|
+
end
|
10
|
+
fake.string
|
11
|
+
end
|
12
|
+
|
13
|
+
def capture_stdout(&block)
|
14
|
+
original_stdout = $stdout
|
15
|
+
$stdout = fake = StringIO.new
|
16
|
+
begin
|
17
|
+
yield
|
18
|
+
ensure
|
19
|
+
$stdout = original_stdout
|
20
|
+
end
|
21
|
+
fake.string
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: messages_dictionary
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ilya Bodrov
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-04-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hashie
|
@@ -25,6 +25,62 @@ dependencies:
|
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '3.4'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rake
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '11.1'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '11.1'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rspec
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '3.4'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '3.4'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: pry
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: codeclimate-test-reporter
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0.5'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0.5'
|
28
84
|
description: This gem allows you to store messages in a simple-key value format and
|
29
85
|
fetch whenever you need. Classes can have different messages and apply different
|
30
86
|
fetching logic. Messages also support interpolation.
|
@@ -36,16 +92,26 @@ extra_rdoc_files:
|
|
36
92
|
- README.md
|
37
93
|
files:
|
38
94
|
- ".gitignore"
|
95
|
+
- ".rspec"
|
96
|
+
- ".travis.yml"
|
39
97
|
- Gemfile
|
40
98
|
- Gemfile.lock
|
41
99
|
- LICENSE
|
42
100
|
- README.md
|
101
|
+
- Rakefile
|
43
102
|
- lib/messages_dictionary.rb
|
44
103
|
- lib/messages_dictionary/injector.rb
|
45
104
|
- lib/messages_dictionary/utils/dict.rb
|
46
105
|
- lib/messages_dictionary/utils/snake_case.rb
|
47
106
|
- lib/messages_dictionary/version.rb
|
48
107
|
- messages_dictionary.gemspec
|
108
|
+
- spec/injector_spec.rb
|
109
|
+
- spec/spec_helper.rb
|
110
|
+
- spec/support/spec_files_setup.rb
|
111
|
+
- spec/support/spec_utils.rb
|
112
|
+
- spec/support/test_class.rb
|
113
|
+
- spec/utils/dict_spec.rb
|
114
|
+
- spec/utils/snake_case_spec.rb
|
49
115
|
homepage: https://github.com/bodrovis-learning/messages_dictionary
|
50
116
|
licenses:
|
51
117
|
- MIT
|
@@ -61,13 +127,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
61
127
|
version: '0'
|
62
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
129
|
requirements:
|
64
|
-
- - "
|
130
|
+
- - ">="
|
65
131
|
- !ruby/object:Gem::Version
|
66
|
-
version:
|
132
|
+
version: '0'
|
67
133
|
requirements: []
|
68
134
|
rubyforge_project:
|
69
|
-
rubygems_version: 2.6.
|
135
|
+
rubygems_version: 2.6.3
|
70
136
|
signing_key:
|
71
137
|
specification_version: 4
|
72
138
|
summary: Store your messages anywhere and fetch them anytime.
|
73
139
|
test_files: []
|
140
|
+
has_rdoc:
|