sequel-string_nilifier 1.0.1 → 1.1.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
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YTQzMjJiOTViMjExMGI0MTk3N2RhZTJiNzM4NWFkYzQ1YjMxZTU0OQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NDZmZDdiMTQxMWIzM2VkNTNiOGUyZDkwMGM4MTMxMzQ0YjM3MDdhNw==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NjczMmEzZDdlOTMyMjhiYjcwNTU4MjY2NjI3Yzc5ZjM5ZGJmZjgyZTZlZGE1
|
10
|
+
N2E0ZmVhMGJhZTg1MjI2MDNlOTk3MTI5MDdlYzdhOTgxYzUwZTU4ODAwMTlm
|
11
|
+
OTIxNjM2YzFmODZkMWMwYjA5OGI4Yjg1MGIwMDdjNTBlYTk1MGQ=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NzY5MmYzMWRkZjM1MDljNmUyNDU2ZjM4MThiMjdkNDIzMWNkMWExNjhmMzA1
|
14
|
+
NTNlYTc2MzkyYThkZDExOGZhN2Q2MGE4NTM2NGVjOWQ2NjM5OWNhOWM1Yzcw
|
15
|
+
ZjE0NjUyYTlkZDFmODdmYTNmNTAxODdiYzhlNjNkMjBkMjAwY2Y=
|
@@ -1,34 +1,32 @@
|
|
1
1
|
module Sequel
|
2
2
|
module Plugins
|
3
3
|
module StringNilifier
|
4
|
+
def self.apply(model)
|
5
|
+
model.plugin(:input_transformer, :string_nilifier) do |v|
|
6
|
+
if v.is_a?(String) && !v.is_a?(SQL::Blob) && v.strip.empty?
|
7
|
+
nil
|
8
|
+
else
|
9
|
+
v
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
4
14
|
# Set blob columns as skipping nilifying when plugin is loaded.
|
5
15
|
def self.configure(model)
|
6
|
-
model.
|
7
|
-
model.send(:set_skipped_string_nilifying_columns)
|
16
|
+
model.instance_eval{set_skipped_string_nilifying_columns if @dataset}
|
8
17
|
end
|
9
18
|
|
10
19
|
module ClassMethods
|
11
|
-
|
12
|
-
def inherited(subclass)
|
13
|
-
subclass.instance_variable_set(:@skipped_string_nilifier_columns, @skipped_string_nilifier_columns.dup)
|
14
|
-
super
|
15
|
-
end
|
16
|
-
|
17
|
-
# Set blob columns as skipping nilifying when plugin is loaded.
|
18
|
-
def set_dataset(*)
|
19
|
-
res = super
|
20
|
-
set_skipped_string_nilifying_columns
|
21
|
-
res
|
22
|
-
end
|
20
|
+
Plugins.after_set_dataset(self, :set_skipped_string_nilifying_columns)
|
23
21
|
|
24
22
|
# Skip nilifying for the given columns.
|
25
23
|
def skip_string_nilifying(*columns)
|
26
|
-
|
24
|
+
skip_input_transformer(:string_nilifier, *columns)
|
27
25
|
end
|
28
26
|
|
29
27
|
# Return true if the column should not have values stripped.
|
30
28
|
def skip_string_nilifying?(column)
|
31
|
-
|
29
|
+
skip_input_transformer?(:string_nilifier, column)
|
32
30
|
end
|
33
31
|
|
34
32
|
private
|
@@ -41,20 +39,6 @@ module Sequel
|
|
41
39
|
end
|
42
40
|
end
|
43
41
|
end
|
44
|
-
|
45
|
-
module InstanceMethods
|
46
|
-
# Strip value if it is a non-blob string and the model hasn't been set
|
47
|
-
# to skip nilifying for the column, before attempting to assign
|
48
|
-
# it to the model's values.
|
49
|
-
def nil_string?(k,str)
|
50
|
-
str.is_a?(String) && !str.is_a?(SQL::Blob) && str.strip.empty? && !model.skip_string_nilifying?(k)
|
51
|
-
end
|
52
|
-
|
53
|
-
def []=(k, v)
|
54
|
-
v = nil if nil_string? k, v
|
55
|
-
super(k, v)
|
56
|
-
end
|
57
|
-
end
|
58
42
|
end
|
59
43
|
end
|
60
44
|
end
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_runtime_dependency "sequel"
|
21
|
+
spec.add_runtime_dependency "sequel", "~> 3.48.0"
|
22
22
|
|
23
23
|
spec.add_development_dependency "rake"
|
24
24
|
spec.add_development_dependency "rspec"
|
@@ -2,7 +2,7 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe Sequel::Plugins::StringNilifier do
|
4
4
|
before do
|
5
|
-
@db = Sequel
|
5
|
+
@db = Sequel.mock
|
6
6
|
@c = Class.new(Sequel::Model(@db[:test]))
|
7
7
|
@c.columns :name, :b
|
8
8
|
@c.db_schema[:b][:type] = :blob
|
@@ -58,6 +58,7 @@ describe Sequel::Plugins::StringNilifier do
|
|
58
58
|
it "should work correctly for dataset changes" do
|
59
59
|
c = Class.new(Sequel::Model(@db[:test]))
|
60
60
|
c.plugin :string_nilifier
|
61
|
+
def @db.supports_schema_parsing?() true end
|
61
62
|
def @db.schema(*) [[:name, {}], [:b, {:type=>:blob}]] end
|
62
63
|
c.set_dataset(@db[:test2])
|
63
64
|
o = c.new
|
data/spec/spec_helper.rb
CHANGED
@@ -16,9 +16,10 @@ class << Sequel::Model
|
|
16
16
|
end
|
17
17
|
|
18
18
|
Sequel::Model.use_transactions = false
|
19
|
-
Sequel
|
19
|
+
Sequel.cache_anonymous_models = false
|
20
20
|
|
21
21
|
db = Sequel.mock(:fetch=>{:id => 1, :x => 1}, :numrows=>1, :autoid=>proc{|sql| 10})
|
22
22
|
def db.schema(*) [[:id, {:primary_key=>true}]] end
|
23
23
|
def db.reset() sqls end
|
24
|
+
def db.supports_schema_parsing?() true end
|
24
25
|
Sequel::Model.db = MODEL_DB = db
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel-string_nilifier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 1.0.1
|
4
|
+
version: 1.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jonathan Tron
|
@@ -10,56 +9,50 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2013-
|
12
|
+
date: 2013-06-05 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
|
-
name: sequel
|
17
15
|
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
22
|
-
none: false
|
23
|
-
type: :runtime
|
19
|
+
version: 3.48.0
|
24
20
|
version_requirements: !ruby/object:Gem::Requirement
|
25
21
|
requirements:
|
26
|
-
- -
|
22
|
+
- - ~>
|
27
23
|
- !ruby/object:Gem::Version
|
28
|
-
version:
|
29
|
-
|
24
|
+
version: 3.48.0
|
25
|
+
type: :runtime
|
30
26
|
prerelease: false
|
27
|
+
name: sequel
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
|
-
name: rake
|
33
29
|
requirement: !ruby/object:Gem::Requirement
|
34
30
|
requirements:
|
35
31
|
- - ! '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
|
-
none: false
|
39
|
-
type: :development
|
40
34
|
version_requirements: !ruby/object:Gem::Requirement
|
41
35
|
requirements:
|
42
36
|
- - ! '>='
|
43
37
|
- !ruby/object:Gem::Version
|
44
38
|
version: '0'
|
45
|
-
|
39
|
+
type: :development
|
46
40
|
prerelease: false
|
41
|
+
name: rake
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
|
-
name: rspec
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
45
|
- - ! '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
|
-
none: false
|
55
|
-
type: :development
|
56
48
|
version_requirements: !ruby/object:Gem::Requirement
|
57
49
|
requirements:
|
58
50
|
- - ! '>='
|
59
51
|
- !ruby/object:Gem::Version
|
60
52
|
version: '0'
|
61
|
-
|
53
|
+
type: :development
|
62
54
|
prerelease: false
|
55
|
+
name: rspec
|
63
56
|
description: Sequel plugin to store empty string as nil
|
64
57
|
email:
|
65
58
|
- jonathan.tron@metrilio.com
|
@@ -82,6 +75,7 @@ files:
|
|
82
75
|
homepage: ''
|
83
76
|
licenses:
|
84
77
|
- MIT
|
78
|
+
metadata: {}
|
85
79
|
post_install_message:
|
86
80
|
rdoc_options: []
|
87
81
|
require_paths:
|
@@ -90,25 +84,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
90
84
|
requirements:
|
91
85
|
- - ! '>='
|
92
86
|
- !ruby/object:Gem::Version
|
93
|
-
segments:
|
94
|
-
- 0
|
95
|
-
hash: -1606853858529528596
|
96
87
|
version: '0'
|
97
|
-
none: false
|
98
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
89
|
requirements:
|
100
90
|
- - ! '>='
|
101
91
|
- !ruby/object:Gem::Version
|
102
|
-
segments:
|
103
|
-
- 0
|
104
|
-
hash: -1606853858529528596
|
105
92
|
version: '0'
|
106
|
-
none: false
|
107
93
|
requirements: []
|
108
94
|
rubyforge_project:
|
109
|
-
rubygems_version:
|
95
|
+
rubygems_version: 2.0.3
|
110
96
|
signing_key:
|
111
|
-
specification_version:
|
97
|
+
specification_version: 4
|
112
98
|
summary: Sequel plugin to store empty string as nil
|
113
99
|
test_files:
|
114
100
|
- spec/sequel/plugins/string_nilifier_spec.rb
|