necromancer 0.3.0 → 0.7.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 +5 -5
- data/CHANGELOG.md +70 -3
- data/README.md +204 -86
- data/lib/necromancer.rb +17 -18
- data/lib/necromancer/configuration.rb +1 -1
- data/lib/necromancer/context.rb +16 -3
- data/lib/necromancer/conversion_target.rb +31 -14
- data/lib/necromancer/conversions.rb +39 -16
- data/lib/necromancer/converter.rb +10 -8
- data/lib/necromancer/converters/array.rb +143 -45
- data/lib/necromancer/converters/boolean.rb +21 -19
- data/lib/necromancer/converters/date_time.rb +58 -13
- data/lib/necromancer/converters/hash.rb +119 -0
- data/lib/necromancer/converters/numeric.rb +32 -28
- data/lib/necromancer/converters/range.rb +44 -18
- data/lib/necromancer/null_converter.rb +4 -2
- data/lib/necromancer/version.rb +2 -2
- metadata +39 -72
- data/.gitignore +0 -14
- data/.rspec +0 -3
- data/.ruby-version +0 -1
- data/.travis.yml +0 -19
- data/Gemfile +0 -16
- data/Rakefile +0 -8
- data/necromancer.gemspec +0 -21
- data/spec/spec_helper.rb +0 -53
- data/spec/unit/can_spec.rb +0 -11
- data/spec/unit/config_spec.rb +0 -32
- data/spec/unit/configuration/new_spec.rb +0 -30
- data/spec/unit/conversions/register_spec.rb +0 -49
- data/spec/unit/convert_spec.rb +0 -104
- data/spec/unit/converters/array/array_to_boolean_spec.rb +0 -22
- data/spec/unit/converters/array/array_to_numeric_spec.rb +0 -22
- data/spec/unit/converters/array/array_to_set_spec.rb +0 -18
- data/spec/unit/converters/array/object_to_array_spec.rb +0 -21
- data/spec/unit/converters/array/string_to_array_spec.rb +0 -33
- data/spec/unit/converters/boolean/boolean_to_integer_spec.rb +0 -26
- data/spec/unit/converters/boolean/integer_to_boolean_spec.rb +0 -22
- data/spec/unit/converters/boolean/string_to_boolean_spec.rb +0 -36
- data/spec/unit/converters/date_time/string_to_date_spec.rb +0 -22
- data/spec/unit/converters/date_time/string_to_datetime_spec.rb +0 -32
- data/spec/unit/converters/numeric/string_to_float_spec.rb +0 -48
- data/spec/unit/converters/numeric/string_to_integer_spec.rb +0 -62
- data/spec/unit/converters/numeric/string_to_numeric_spec.rb +0 -32
- data/spec/unit/converters/range/string_to_range_spec.rb +0 -35
- data/spec/unit/new_spec.rb +0 -12
- data/spec/unit/register_spec.rb +0 -17
- data/tasks/console.rake +0 -10
- data/tasks/coverage.rake +0 -11
- data/tasks/spec.rake +0 -29
@@ -1,9 +1,11 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "converter"
|
2
4
|
|
3
5
|
module Necromancer
|
4
6
|
# A pass through converter
|
5
7
|
class NullConverter < Converter
|
6
|
-
def call(value,
|
8
|
+
def call(value, strict: config.strict)
|
7
9
|
value
|
8
10
|
end
|
9
11
|
end # NullConverter
|
data/lib/necromancer/version.rb
CHANGED
metadata
CHANGED
@@ -1,45 +1,56 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: necromancer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.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: 2020-12-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
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
|
-
version: '
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.0'
|
27
41
|
description: Conversion from one object type to another with a bit of black magic.
|
28
42
|
email:
|
29
|
-
-
|
43
|
+
- piotr@piotrmurach.com
|
30
44
|
executables: []
|
31
45
|
extensions: []
|
32
|
-
extra_rdoc_files:
|
46
|
+
extra_rdoc_files:
|
47
|
+
- README.md
|
48
|
+
- CHANGELOG.md
|
49
|
+
- LICENSE.txt
|
33
50
|
files:
|
34
|
-
- .gitignore
|
35
|
-
- .rspec
|
36
|
-
- .ruby-version
|
37
|
-
- .travis.yml
|
38
51
|
- CHANGELOG.md
|
39
|
-
- Gemfile
|
40
52
|
- LICENSE.txt
|
41
53
|
- README.md
|
42
|
-
- Rakefile
|
43
54
|
- lib/necromancer.rb
|
44
55
|
- lib/necromancer/configuration.rb
|
45
56
|
- lib/necromancer/context.rb
|
@@ -49,81 +60,37 @@ files:
|
|
49
60
|
- lib/necromancer/converters/array.rb
|
50
61
|
- lib/necromancer/converters/boolean.rb
|
51
62
|
- lib/necromancer/converters/date_time.rb
|
63
|
+
- lib/necromancer/converters/hash.rb
|
52
64
|
- lib/necromancer/converters/numeric.rb
|
53
65
|
- lib/necromancer/converters/range.rb
|
54
66
|
- lib/necromancer/null_converter.rb
|
55
67
|
- lib/necromancer/version.rb
|
56
|
-
|
57
|
-
- spec/spec_helper.rb
|
58
|
-
- spec/unit/can_spec.rb
|
59
|
-
- spec/unit/config_spec.rb
|
60
|
-
- spec/unit/configuration/new_spec.rb
|
61
|
-
- spec/unit/conversions/register_spec.rb
|
62
|
-
- spec/unit/convert_spec.rb
|
63
|
-
- spec/unit/converters/array/array_to_boolean_spec.rb
|
64
|
-
- spec/unit/converters/array/array_to_numeric_spec.rb
|
65
|
-
- spec/unit/converters/array/array_to_set_spec.rb
|
66
|
-
- spec/unit/converters/array/object_to_array_spec.rb
|
67
|
-
- spec/unit/converters/array/string_to_array_spec.rb
|
68
|
-
- spec/unit/converters/boolean/boolean_to_integer_spec.rb
|
69
|
-
- spec/unit/converters/boolean/integer_to_boolean_spec.rb
|
70
|
-
- spec/unit/converters/boolean/string_to_boolean_spec.rb
|
71
|
-
- spec/unit/converters/date_time/string_to_date_spec.rb
|
72
|
-
- spec/unit/converters/date_time/string_to_datetime_spec.rb
|
73
|
-
- spec/unit/converters/numeric/string_to_float_spec.rb
|
74
|
-
- spec/unit/converters/numeric/string_to_integer_spec.rb
|
75
|
-
- spec/unit/converters/numeric/string_to_numeric_spec.rb
|
76
|
-
- spec/unit/converters/range/string_to_range_spec.rb
|
77
|
-
- spec/unit/new_spec.rb
|
78
|
-
- spec/unit/register_spec.rb
|
79
|
-
- tasks/console.rake
|
80
|
-
- tasks/coverage.rake
|
81
|
-
- tasks/spec.rake
|
82
|
-
homepage: https://github.com/peter-murach/necromancer
|
68
|
+
homepage: https://github.com/piotrmurach/necromancer
|
83
69
|
licenses:
|
84
70
|
- MIT
|
85
|
-
metadata:
|
71
|
+
metadata:
|
72
|
+
allowed_push_host: https://rubygems.org
|
73
|
+
changelog_uri: https://github.com/piotrmurach/necromancer/blob/master/CHANGELOG.md
|
74
|
+
documentation_uri: https://www.rubydoc.info/gems/necromancer
|
75
|
+
homepage_uri: https://github.com/piotrmurach/necromancer
|
76
|
+
source_code_uri: https://github.com/piotrmurach/necromancer
|
86
77
|
post_install_message:
|
87
78
|
rdoc_options: []
|
88
79
|
require_paths:
|
89
80
|
- lib
|
90
81
|
required_ruby_version: !ruby/object:Gem::Requirement
|
91
82
|
requirements:
|
92
|
-
- -
|
83
|
+
- - ">="
|
93
84
|
- !ruby/object:Gem::Version
|
94
|
-
version:
|
85
|
+
version: 2.0.0
|
95
86
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
87
|
requirements:
|
97
|
-
- -
|
88
|
+
- - ">="
|
98
89
|
- !ruby/object:Gem::Version
|
99
90
|
version: '0'
|
100
91
|
requirements: []
|
101
|
-
|
102
|
-
rubygems_version: 2.0.3
|
92
|
+
rubygems_version: 3.2.3
|
103
93
|
signing_key:
|
104
94
|
specification_version: 4
|
105
95
|
summary: Conversion from one object type to another with a bit of black magic.
|
106
|
-
test_files:
|
107
|
-
- spec/spec_helper.rb
|
108
|
-
- spec/unit/can_spec.rb
|
109
|
-
- spec/unit/config_spec.rb
|
110
|
-
- spec/unit/configuration/new_spec.rb
|
111
|
-
- spec/unit/conversions/register_spec.rb
|
112
|
-
- spec/unit/convert_spec.rb
|
113
|
-
- spec/unit/converters/array/array_to_boolean_spec.rb
|
114
|
-
- spec/unit/converters/array/array_to_numeric_spec.rb
|
115
|
-
- spec/unit/converters/array/array_to_set_spec.rb
|
116
|
-
- spec/unit/converters/array/object_to_array_spec.rb
|
117
|
-
- spec/unit/converters/array/string_to_array_spec.rb
|
118
|
-
- spec/unit/converters/boolean/boolean_to_integer_spec.rb
|
119
|
-
- spec/unit/converters/boolean/integer_to_boolean_spec.rb
|
120
|
-
- spec/unit/converters/boolean/string_to_boolean_spec.rb
|
121
|
-
- spec/unit/converters/date_time/string_to_date_spec.rb
|
122
|
-
- spec/unit/converters/date_time/string_to_datetime_spec.rb
|
123
|
-
- spec/unit/converters/numeric/string_to_float_spec.rb
|
124
|
-
- spec/unit/converters/numeric/string_to_integer_spec.rb
|
125
|
-
- spec/unit/converters/numeric/string_to_numeric_spec.rb
|
126
|
-
- spec/unit/converters/range/string_to_range_spec.rb
|
127
|
-
- spec/unit/new_spec.rb
|
128
|
-
- spec/unit/register_spec.rb
|
129
|
-
has_rdoc:
|
96
|
+
test_files: []
|
data/.gitignore
DELETED
data/.rspec
DELETED
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.0.0
|
data/.travis.yml
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
bundler_args: --without yard benchmarks
|
3
|
-
script: "bundle exec rake ci"
|
4
|
-
rvm:
|
5
|
-
- 1.9.3
|
6
|
-
- 2.0.0
|
7
|
-
- 2.1.0
|
8
|
-
- ruby-head
|
9
|
-
- jruby-19mode
|
10
|
-
- rbx-2
|
11
|
-
matrix:
|
12
|
-
include:
|
13
|
-
- rvm: jruby-head
|
14
|
-
allow_failures:
|
15
|
-
- rvm: ruby-head
|
16
|
-
- rvm: jruby-head
|
17
|
-
fast_finish: true
|
18
|
-
branches:
|
19
|
-
only: master
|
data/Gemfile
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
gemspec
|
4
|
-
|
5
|
-
group :development do
|
6
|
-
gem 'rake', '~> 10.3.2'
|
7
|
-
gem 'rspec', '~> 3.1.0'
|
8
|
-
gem 'yard', '~> 0.8.7'
|
9
|
-
gem 'benchmark-ips', '~> 2.0.0'
|
10
|
-
end
|
11
|
-
|
12
|
-
group :metrics do
|
13
|
-
gem 'coveralls', '~> 0.7.0'
|
14
|
-
gem 'simplecov', '~> 0.8.2'
|
15
|
-
gem 'yardstick', '~> 0.9.9'
|
16
|
-
end
|
data/Rakefile
DELETED
data/necromancer.gemspec
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'necromancer/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = 'necromancer'
|
8
|
-
spec.version = Necromancer::VERSION
|
9
|
-
spec.authors = ['Piotr Murach']
|
10
|
-
spec.email = ['']
|
11
|
-
spec.summary = %q{Conversion from one object type to another with a bit of black magic.}
|
12
|
-
spec.description = %q{Conversion from one object type to another with a bit of black magic.}
|
13
|
-
spec.homepage = 'https://github.com/peter-murach/necromancer'
|
14
|
-
spec.license = 'MIT'
|
15
|
-
|
16
|
-
spec.files = `git ls-files -z`.split("\x0")
|
17
|
-
spec.test_files = spec.files.grep(%r{^(spec)/})
|
18
|
-
spec.require_paths = ["lib"]
|
19
|
-
|
20
|
-
spec.add_development_dependency "bundler", "~> 1.6"
|
21
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
if RUBY_VERSION > '1.9' and (ENV['COVERAGE'] || ENV['TRAVIS'])
|
4
|
-
require 'simplecov'
|
5
|
-
require 'coveralls'
|
6
|
-
|
7
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
8
|
-
SimpleCov::Formatter::HTMLFormatter,
|
9
|
-
Coveralls::SimpleCov::Formatter
|
10
|
-
]
|
11
|
-
|
12
|
-
SimpleCov.start do
|
13
|
-
command_name 'spec'
|
14
|
-
add_filter 'spec'
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
require 'necromancer'
|
19
|
-
|
20
|
-
RSpec.configure do |config|
|
21
|
-
config.expect_with :rspec do |expectations|
|
22
|
-
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
23
|
-
end
|
24
|
-
|
25
|
-
config.mock_with :rspec do |mocks|
|
26
|
-
mocks.verify_partial_doubles = true
|
27
|
-
end
|
28
|
-
|
29
|
-
# Limits the available syntax to the non-monkey patched syntax that is recommended.
|
30
|
-
config.disable_monkey_patching!
|
31
|
-
|
32
|
-
# This setting enables warnings. It's recommended, but in some cases may
|
33
|
-
# be too noisy due to issues in dependencies.
|
34
|
-
config.warnings = true
|
35
|
-
|
36
|
-
if config.files_to_run.one?
|
37
|
-
config.default_formatter = 'doc'
|
38
|
-
end
|
39
|
-
|
40
|
-
config.profile_examples = 2
|
41
|
-
|
42
|
-
config.order = :random
|
43
|
-
|
44
|
-
Kernel.srand config.seed
|
45
|
-
|
46
|
-
config.before :each do
|
47
|
-
[:UpcaseConverter, :Custom].each do |class_name|
|
48
|
-
if Object.const_defined?(class_name)
|
49
|
-
Object.send(:remove_const, class_name)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
data/spec/unit/can_spec.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
RSpec.describe Necromancer, 'can?' do
|
6
|
-
it "checks if conversion is possible" do
|
7
|
-
converter = described_class.new
|
8
|
-
expect(converter.can?(:string, :integer)).to eq(true)
|
9
|
-
expect(converter.can?(:unknown, :integer)).to eq(false)
|
10
|
-
end
|
11
|
-
end
|
data/spec/unit/config_spec.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
RSpec.describe Necromancer, 'config' do
|
6
|
-
it "configures global settings per instance" do
|
7
|
-
converter = described_class.new
|
8
|
-
|
9
|
-
converter.configure do |config|
|
10
|
-
config.strict false
|
11
|
-
end
|
12
|
-
expect(converter.convert("1.2.3").to(:array)).to eq(["1.2.3"])
|
13
|
-
|
14
|
-
converter.configure do |config|
|
15
|
-
config.strict true
|
16
|
-
end
|
17
|
-
expect {
|
18
|
-
converter.convert("1.2.3").to(:array)
|
19
|
-
}.to raise_error(Necromancer::ConversionTypeError)
|
20
|
-
end
|
21
|
-
|
22
|
-
it "configures global settings through instance block" do
|
23
|
-
converter = described_class.new do |config|
|
24
|
-
config.strict true
|
25
|
-
end
|
26
|
-
expect(converter.configuration.strict).to eq(true)
|
27
|
-
|
28
|
-
expect {
|
29
|
-
converter.convert("1.2.3").to(:array)
|
30
|
-
}.to raise_error(Necromancer::ConversionTypeError)
|
31
|
-
end
|
32
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
RSpec.describe Necromancer::Configuration, '.new' do
|
6
|
-
|
7
|
-
subject(:config) { described_class.new }
|
8
|
-
|
9
|
-
it { is_expected.to respond_to(:strict=) }
|
10
|
-
|
11
|
-
it { is_expected.to respond_to(:copy=) }
|
12
|
-
|
13
|
-
it "is in non-strict mode by default" do
|
14
|
-
expect(config.strict).to eq(false)
|
15
|
-
end
|
16
|
-
|
17
|
-
it "is in copy mode by default" do
|
18
|
-
expect(config.copy).to eq(true)
|
19
|
-
end
|
20
|
-
|
21
|
-
it "allows to set strict through method" do
|
22
|
-
config.strict true
|
23
|
-
expect(config.strict).to eq(true)
|
24
|
-
end
|
25
|
-
|
26
|
-
it "allows to set copy mode through method" do
|
27
|
-
config.copy false
|
28
|
-
expect(config.strict).to eq(false)
|
29
|
-
end
|
30
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
RSpec.describe Necromancer::Conversions, '.register' do
|
6
|
-
it "allows to register converter" do
|
7
|
-
context = described_class.new
|
8
|
-
converter = double(:converter, {source: :string, target: :numeric})
|
9
|
-
expect(context.register(converter)).to eq(true)
|
10
|
-
expect(context[:string, :numeric]).to eq(converter)
|
11
|
-
end
|
12
|
-
|
13
|
-
it "allows to register converter with no source" do
|
14
|
-
context = described_class.new
|
15
|
-
converter = double(:converter, {source: nil, target: :numeric})
|
16
|
-
expect(context.register(converter)).to eq(true)
|
17
|
-
expect(context[:none, :numeric]).to eq(converter)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "allows to register converter with no target" do
|
21
|
-
context = described_class.new
|
22
|
-
converter = double(:converter, {source: :string, target: nil})
|
23
|
-
expect(context.register(converter)).to eq(true)
|
24
|
-
expect(context[:string, :none]).to eq(converter)
|
25
|
-
end
|
26
|
-
|
27
|
-
it "allows to register anonymous converter" do
|
28
|
-
conversions = described_class.new
|
29
|
-
|
30
|
-
conversions.register do |c|
|
31
|
-
c.source= :string
|
32
|
-
c.target= :upcase
|
33
|
-
c.convert = proc { |value| value.to_s.upcase }
|
34
|
-
end
|
35
|
-
expect(conversions[:string, :upcase].call('magic')).to eq('MAGIC')
|
36
|
-
end
|
37
|
-
|
38
|
-
it "allows to register custom converter" do
|
39
|
-
conversions = described_class.new
|
40
|
-
UpcaseConverter = Struct.new(:source, :target) do
|
41
|
-
def call(value)
|
42
|
-
value.to_s.upcase
|
43
|
-
end
|
44
|
-
end
|
45
|
-
upcase_converter = UpcaseConverter.new(:string, :upcase)
|
46
|
-
expect(conversions.register(upcase_converter)).to be(true)
|
47
|
-
expect(conversions[:string, :upcase].call('magic')).to eq('MAGIC')
|
48
|
-
end
|
49
|
-
end
|