decanter 1.0.1 → 1.0.2
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/Gemfile.lock +8 -0
- data/decanter.gemspec +1 -0
- data/lib/decanter/parser.rb +8 -4
- data/lib/decanter/parser/utils.rb +31 -0
- data/lib/decanter/version.rb +1 -1
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a061153858121ad20bbdccc2a4c3c746fd426637
|
4
|
+
data.tar.gz: a6c3411501306fa3254f3a60ed4305bb0db30b68
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 986160ac735d3b66da3ff09a9c450b343be392bb2d62ced4a33574ee98de4f681bdd477b63d314b7d6e4dd44d0edddc91b69bb8b062f31208bd6f99a450a3975
|
7
|
+
data.tar.gz: e0d5fcbedb8d9cd49f626c54be27ce57d95c1cb8956dcac63ad5a7252eb8a535227e90d8445bc644b711990952a8baeb8c991d2572b2fa93b35af61591efc75d
|
data/Gemfile.lock
CHANGED
@@ -27,6 +27,7 @@ GEM
|
|
27
27
|
thread_safe (~> 0.3, >= 0.3.4)
|
28
28
|
tzinfo (~> 1.1)
|
29
29
|
builder (3.2.3)
|
30
|
+
coderay (1.1.2)
|
30
31
|
concurrent-ruby (1.0.5)
|
31
32
|
crass (1.0.3)
|
32
33
|
diff-lcs (1.3)
|
@@ -39,10 +40,15 @@ GEM
|
|
39
40
|
loofah (2.1.1)
|
40
41
|
crass (~> 1.0.2)
|
41
42
|
nokogiri (>= 1.5.9)
|
43
|
+
method_source (0.8.2)
|
42
44
|
mini_portile2 (2.3.0)
|
43
45
|
minitest (5.10.3)
|
44
46
|
nokogiri (1.8.1)
|
45
47
|
mini_portile2 (~> 2.3.0)
|
48
|
+
pry (0.10.4)
|
49
|
+
coderay (~> 1.1.0)
|
50
|
+
method_source (~> 0.8.1)
|
51
|
+
slop (~> 3.4)
|
46
52
|
rack (1.6.8)
|
47
53
|
rack-test (0.6.3)
|
48
54
|
rack (>= 1.0)
|
@@ -82,6 +88,7 @@ GEM
|
|
82
88
|
json (>= 1.8, < 3)
|
83
89
|
simplecov-html (~> 0.10.0)
|
84
90
|
simplecov-html (0.10.2)
|
91
|
+
slop (3.6.0)
|
85
92
|
thor (0.20.0)
|
86
93
|
thread_safe (0.3.6)
|
87
94
|
tzinfo (1.2.4)
|
@@ -94,6 +101,7 @@ DEPENDENCIES
|
|
94
101
|
bundler (~> 1.9)
|
95
102
|
decanter!
|
96
103
|
dotenv
|
104
|
+
pry
|
97
105
|
rake (~> 10.0)
|
98
106
|
rspec-rails
|
99
107
|
simplecov (~> 0.15.1)
|
data/decanter.gemspec
CHANGED
data/lib/decanter/parser.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
+
require_relative 'parser/utils'
|
2
|
+
|
1
3
|
module Decanter
|
2
4
|
module Parser
|
3
|
-
|
4
5
|
class << self
|
6
|
+
include Utils
|
7
|
+
|
5
8
|
def parsers_for(klass_or_syms)
|
6
9
|
Array.wrap(klass_or_syms)
|
7
10
|
.map { |klass_or_sym| klass_or_sym_to_str(klass_or_sym) }
|
@@ -16,7 +19,7 @@ module Decanter
|
|
16
19
|
when Class
|
17
20
|
klass_or_sym.name
|
18
21
|
when Symbol
|
19
|
-
klass_or_sym
|
22
|
+
symbol_to_string(klass_or_sym)
|
20
23
|
else
|
21
24
|
raise ArgumentError.new("cannot lookup parser for #{klass_or_sym} with class #{klass_or_sym.class}")
|
22
25
|
end.concat('Parser')
|
@@ -24,9 +27,10 @@ module Decanter
|
|
24
27
|
|
25
28
|
# convert from a string to a constant
|
26
29
|
def parser_constantize(parser_str)
|
30
|
+
# safe_constantize returns nil if match not found
|
27
31
|
parser_str.safe_constantize ||
|
28
|
-
|
29
|
-
|
32
|
+
concat_str(parser_str).safe_constantize ||
|
33
|
+
raise(NameError.new("cannot find parser #{parser_str}"))
|
30
34
|
end
|
31
35
|
|
32
36
|
# expand to include preparsers
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Decanter
|
2
|
+
module Parser
|
3
|
+
module Utils
|
4
|
+
# extract string transformation strategies
|
5
|
+
def symbol_to_string(klass_or_sym)
|
6
|
+
if singular_class_present?(klass_or_sym)
|
7
|
+
singularize_and_camelize_str(klass_or_sym)
|
8
|
+
else
|
9
|
+
camelize_str(klass_or_sym)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def singular_class_present?(klass_or_sym)
|
14
|
+
parser_str = singularize_and_camelize_str(klass_or_sym)
|
15
|
+
concat_str(parser_str).safe_constantize.present?
|
16
|
+
end
|
17
|
+
|
18
|
+
def singularize_and_camelize_str(klass_or_sym)
|
19
|
+
klass_or_sym.to_s.singularize.camelize
|
20
|
+
end
|
21
|
+
|
22
|
+
def camelize_str(klass_or_sym)
|
23
|
+
klass_or_sym.to_s.camelize
|
24
|
+
end
|
25
|
+
|
26
|
+
def concat_str(parser_str)
|
27
|
+
'Decanter::Parser::'.concat(parser_str)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/decanter/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decanter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Francis
|
@@ -109,6 +109,20 @@ dependencies:
|
|
109
109
|
- - ">="
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: pry
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
112
126
|
description: Decanter aims to reduce complexity in Rails controllers by creating a
|
113
127
|
place for transforming data before it hits the model and database.
|
114
128
|
email:
|
@@ -147,6 +161,7 @@ files:
|
|
147
161
|
- lib/decanter/parser/pass_parser.rb
|
148
162
|
- lib/decanter/parser/phone_parser.rb
|
149
163
|
- lib/decanter/parser/string_parser.rb
|
164
|
+
- lib/decanter/parser/utils.rb
|
150
165
|
- lib/decanter/parser/value_parser.rb
|
151
166
|
- lib/decanter/railtie.rb
|
152
167
|
- lib/decanter/version.rb
|