necromancer 0.3.0 → 0.4.0
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/.travis.yml +14 -6
- data/CHANGELOG.md +35 -3
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +3 -4
- data/README.md +116 -61
- data/lib/necromancer.rb +16 -18
- data/lib/necromancer/context.rb +14 -1
- data/lib/necromancer/conversion_target.rb +27 -10
- data/lib/necromancer/conversions.rb +33 -13
- data/lib/necromancer/converter.rb +3 -1
- data/lib/necromancer/converters/array.rb +5 -1
- data/lib/necromancer/converters/boolean.rb +4 -1
- data/lib/necromancer/converters/date_time.rb +45 -1
- data/lib/necromancer/converters/numeric.rb +4 -1
- data/lib/necromancer/converters/range.rb +4 -1
- data/lib/necromancer/null_converter.rb +3 -1
- data/lib/necromancer/version.rb +2 -2
- data/necromancer.gemspec +3 -1
- data/spec/unit/can_spec.rb +1 -3
- data/spec/unit/config_spec.rb +1 -3
- data/spec/unit/configuration/new_spec.rb +1 -3
- data/spec/unit/conversions/fetch_spec.rb +16 -0
- data/spec/unit/conversions/register_spec.rb +12 -3
- data/spec/unit/conversions/to_hash_spec.rb +37 -0
- data/spec/unit/convert_spec.rb +29 -3
- data/spec/unit/converters/array/array_to_boolean_spec.rb +1 -3
- data/spec/unit/converters/array/array_to_numeric_spec.rb +1 -3
- data/spec/unit/converters/array/array_to_set_spec.rb +1 -3
- data/spec/unit/converters/array/object_to_array_spec.rb +1 -3
- data/spec/unit/converters/array/string_to_array_spec.rb +1 -3
- data/spec/unit/converters/boolean/boolean_to_integer_spec.rb +1 -3
- data/spec/unit/converters/boolean/integer_to_boolean_spec.rb +1 -3
- data/spec/unit/converters/boolean/string_to_boolean_spec.rb +1 -3
- data/spec/unit/converters/date_time/string_to_date_spec.rb +5 -3
- data/spec/unit/converters/date_time/string_to_datetime_spec.rb +1 -3
- data/spec/unit/converters/date_time/string_to_time_spec.rb +28 -0
- data/spec/unit/converters/numeric/string_to_float_spec.rb +1 -3
- data/spec/unit/converters/numeric/string_to_integer_spec.rb +1 -3
- data/spec/unit/converters/numeric/string_to_numeric_spec.rb +1 -3
- data/spec/unit/converters/range/string_to_range_spec.rb +1 -3
- data/spec/unit/inspect_spec.rb +14 -0
- data/spec/unit/new_spec.rb +1 -3
- data/spec/unit/register_spec.rb +1 -3
- metadata +48 -12
- data/.ruby-version +0 -1
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
RSpec.describe Necromancer::Conversions, '#to_hash' do
|
4
|
+
it 'exports default conversions to hash' do
|
5
|
+
conversions = Necromancer::Conversions.new
|
6
|
+
expect(conversions.to_hash).to eq({})
|
7
|
+
|
8
|
+
conversions.load
|
9
|
+
|
10
|
+
expect(conversions.to_hash.keys.sort).to eq([
|
11
|
+
'array->array',
|
12
|
+
'array->boolean',
|
13
|
+
'array->numeric',
|
14
|
+
'boolean->boolean',
|
15
|
+
'boolean->integer',
|
16
|
+
'date->date',
|
17
|
+
'datetime->datetime',
|
18
|
+
'float->float',
|
19
|
+
'hash->array',
|
20
|
+
'integer->boolean',
|
21
|
+
'integer->integer',
|
22
|
+
'integer->string',
|
23
|
+
'object->array',
|
24
|
+
'range->range',
|
25
|
+
'string->array',
|
26
|
+
'string->boolean',
|
27
|
+
'string->date',
|
28
|
+
'string->datetime',
|
29
|
+
'string->float',
|
30
|
+
'string->integer',
|
31
|
+
'string->numeric',
|
32
|
+
'string->range',
|
33
|
+
'string->time',
|
34
|
+
'time->time'
|
35
|
+
])
|
36
|
+
end
|
37
|
+
end
|
data/spec/unit/convert_spec.rb
CHANGED
@@ -1,11 +1,32 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
require 'spec_helper'
|
1
|
+
# encoding: utf-8
|
4
2
|
|
5
3
|
RSpec.describe Necromancer, '.convert' do
|
6
4
|
|
7
5
|
subject(:converter) { described_class.new }
|
8
6
|
|
7
|
+
it "indicates inability to perform the requested conversion" do
|
8
|
+
expect {
|
9
|
+
converter.convert(:foo).to(:float)
|
10
|
+
}.to raise_error(Necromancer::NoTypeConversionAvailableError,
|
11
|
+
/Conversion 'symbol->float' unavailable/)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "allows for module level convert call" do
|
15
|
+
expect(Necromancer.convert('1,2,3').to(:array)).to eq([1,2,3])
|
16
|
+
end
|
17
|
+
|
18
|
+
it "allows replacing #to with #>> call" do
|
19
|
+
expect(converter.convert('1,2,3') >> :array).to eq([1,2,3])
|
20
|
+
end
|
21
|
+
|
22
|
+
it "allows to specify object as conversion target" do
|
23
|
+
expect(converter.convert('1,2,3') >> []).to eq([1,2,3])
|
24
|
+
end
|
25
|
+
|
26
|
+
it "allows to specify class as conversion target" do
|
27
|
+
expect(converter.convert('1,2,3') >> Array).to eq([1,2,3])
|
28
|
+
end
|
29
|
+
|
9
30
|
context 'when array' do
|
10
31
|
it "converts string to array" do
|
11
32
|
expect(converter.convert("1,2,3").to(:array)).to eq([1,2,3])
|
@@ -100,5 +121,10 @@ RSpec.describe Necromancer, '.convert' do
|
|
100
121
|
expect(converter.convert('2014-12-07 17:35:44').to(:datetime)).
|
101
122
|
to eq(DateTime.parse('2014-12-07 17:35:44'))
|
102
123
|
end
|
124
|
+
|
125
|
+
it "converts string to time" do
|
126
|
+
expect(converter.convert('12:30').to(:time)).
|
127
|
+
to eq(Time.parse('12:30'))
|
128
|
+
end
|
103
129
|
end
|
104
130
|
end
|
@@ -1,11 +1,13 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
require 'spec_helper'
|
1
|
+
# encoding: utf-8
|
4
2
|
|
5
3
|
RSpec.describe Necromancer::DateTimeConverters::StringToDateConverter, '.call' do
|
6
4
|
|
7
5
|
subject(:converter) { described_class.new(:string, :date) }
|
8
6
|
|
7
|
+
it "converts '1-1-2015' to date value" do
|
8
|
+
expect(converter.call('1-1-2015')).to eq(Date.parse('2015/01/01'))
|
9
|
+
end
|
10
|
+
|
9
11
|
it "converts '2014/12/07' to date value" do
|
10
12
|
expect(converter.call('2014/12/07')).to eq(Date.parse('2014/12/07'))
|
11
13
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
RSpec.describe Necromancer::DateTimeConverters::StringToTimeConverter, '.call' do
|
4
|
+
|
5
|
+
subject(:converter) { described_class.new(:string, :time) }
|
6
|
+
|
7
|
+
it "converts to time instance" do
|
8
|
+
expect(converter.call('01/01/2015')).to be_a(Time)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "converts '01/01/2015' to time value" do
|
12
|
+
expect(converter.call('01/01/2015')).to eq(Time.parse('01/01/2015'))
|
13
|
+
end
|
14
|
+
|
15
|
+
it "converts '01/01/2015 08:35' to time value" do
|
16
|
+
expect(converter.call('01/01/2015 08:35')).to eq(Time.parse('01/01/2015 08:35'))
|
17
|
+
end
|
18
|
+
|
19
|
+
it "converts '12:35' to time value" do
|
20
|
+
expect(converter.call('12:35')).to eq(Time.parse('12:35'))
|
21
|
+
end
|
22
|
+
|
23
|
+
it "fails to convert in strict mode" do
|
24
|
+
expect {
|
25
|
+
converter.call('11-13-2015', strict: true)
|
26
|
+
}.to raise_error(Necromancer::ConversionTypeError)
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
RSpec.describe Necromancer, '.inspect' do
|
4
|
+
subject(:converter) { described_class.new }
|
5
|
+
|
6
|
+
it "inspects converter instance" do
|
7
|
+
expect(converter.inspect).to eq("#<Necromancer::Context@#{converter.object_id} @config=#{converter.configuration}>")
|
8
|
+
end
|
9
|
+
|
10
|
+
it "inspects conversion target" do
|
11
|
+
conversion = converter.convert(11)
|
12
|
+
expect(conversion.inspect).to eq("#<Necromancer::ConversionTarget@#{conversion.object_id} @object=11, @source=integer>")
|
13
|
+
end
|
14
|
+
end
|
data/spec/unit/new_spec.rb
CHANGED
data/spec/unit/register_spec.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: necromancer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Murach
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.6'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.5.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.5.0
|
27
55
|
description: Conversion from one object type to another with a bit of black magic.
|
28
56
|
email:
|
29
57
|
- ''
|
@@ -31,11 +59,11 @@ executables: []
|
|
31
59
|
extensions: []
|
32
60
|
extra_rdoc_files: []
|
33
61
|
files:
|
34
|
-
- .gitignore
|
35
|
-
- .rspec
|
36
|
-
- .
|
37
|
-
- .travis.yml
|
62
|
+
- ".gitignore"
|
63
|
+
- ".rspec"
|
64
|
+
- ".travis.yml"
|
38
65
|
- CHANGELOG.md
|
66
|
+
- CODE_OF_CONDUCT.md
|
39
67
|
- Gemfile
|
40
68
|
- LICENSE.txt
|
41
69
|
- README.md
|
@@ -58,7 +86,9 @@ files:
|
|
58
86
|
- spec/unit/can_spec.rb
|
59
87
|
- spec/unit/config_spec.rb
|
60
88
|
- spec/unit/configuration/new_spec.rb
|
89
|
+
- spec/unit/conversions/fetch_spec.rb
|
61
90
|
- spec/unit/conversions/register_spec.rb
|
91
|
+
- spec/unit/conversions/to_hash_spec.rb
|
62
92
|
- spec/unit/convert_spec.rb
|
63
93
|
- spec/unit/converters/array/array_to_boolean_spec.rb
|
64
94
|
- spec/unit/converters/array/array_to_numeric_spec.rb
|
@@ -70,16 +100,18 @@ files:
|
|
70
100
|
- spec/unit/converters/boolean/string_to_boolean_spec.rb
|
71
101
|
- spec/unit/converters/date_time/string_to_date_spec.rb
|
72
102
|
- spec/unit/converters/date_time/string_to_datetime_spec.rb
|
103
|
+
- spec/unit/converters/date_time/string_to_time_spec.rb
|
73
104
|
- spec/unit/converters/numeric/string_to_float_spec.rb
|
74
105
|
- spec/unit/converters/numeric/string_to_integer_spec.rb
|
75
106
|
- spec/unit/converters/numeric/string_to_numeric_spec.rb
|
76
107
|
- spec/unit/converters/range/string_to_range_spec.rb
|
108
|
+
- spec/unit/inspect_spec.rb
|
77
109
|
- spec/unit/new_spec.rb
|
78
110
|
- spec/unit/register_spec.rb
|
79
111
|
- tasks/console.rake
|
80
112
|
- tasks/coverage.rake
|
81
113
|
- tasks/spec.rake
|
82
|
-
homepage: https://github.com/
|
114
|
+
homepage: https://github.com/piotrmurach/necromancer
|
83
115
|
licenses:
|
84
116
|
- MIT
|
85
117
|
metadata: {}
|
@@ -89,17 +121,17 @@ require_paths:
|
|
89
121
|
- lib
|
90
122
|
required_ruby_version: !ruby/object:Gem::Requirement
|
91
123
|
requirements:
|
92
|
-
- -
|
124
|
+
- - ">="
|
93
125
|
- !ruby/object:Gem::Version
|
94
126
|
version: '0'
|
95
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
128
|
requirements:
|
97
|
-
- -
|
129
|
+
- - ">="
|
98
130
|
- !ruby/object:Gem::Version
|
99
131
|
version: '0'
|
100
132
|
requirements: []
|
101
133
|
rubyforge_project:
|
102
|
-
rubygems_version: 2.
|
134
|
+
rubygems_version: 2.5.1
|
103
135
|
signing_key:
|
104
136
|
specification_version: 4
|
105
137
|
summary: Conversion from one object type to another with a bit of black magic.
|
@@ -108,7 +140,9 @@ test_files:
|
|
108
140
|
- spec/unit/can_spec.rb
|
109
141
|
- spec/unit/config_spec.rb
|
110
142
|
- spec/unit/configuration/new_spec.rb
|
143
|
+
- spec/unit/conversions/fetch_spec.rb
|
111
144
|
- spec/unit/conversions/register_spec.rb
|
145
|
+
- spec/unit/conversions/to_hash_spec.rb
|
112
146
|
- spec/unit/convert_spec.rb
|
113
147
|
- spec/unit/converters/array/array_to_boolean_spec.rb
|
114
148
|
- spec/unit/converters/array/array_to_numeric_spec.rb
|
@@ -120,10 +154,12 @@ test_files:
|
|
120
154
|
- spec/unit/converters/boolean/string_to_boolean_spec.rb
|
121
155
|
- spec/unit/converters/date_time/string_to_date_spec.rb
|
122
156
|
- spec/unit/converters/date_time/string_to_datetime_spec.rb
|
157
|
+
- spec/unit/converters/date_time/string_to_time_spec.rb
|
123
158
|
- spec/unit/converters/numeric/string_to_float_spec.rb
|
124
159
|
- spec/unit/converters/numeric/string_to_integer_spec.rb
|
125
160
|
- spec/unit/converters/numeric/string_to_numeric_spec.rb
|
126
161
|
- spec/unit/converters/range/string_to_range_spec.rb
|
162
|
+
- spec/unit/inspect_spec.rb
|
127
163
|
- spec/unit/new_spec.rb
|
128
164
|
- spec/unit/register_spec.rb
|
129
165
|
has_rdoc:
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.0.0
|