decanter 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|