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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: afa1153de833e92615e8897d9ad5a3589f9807bb
4
- data.tar.gz: f8e18271e54e77cf9e3c9549535b3b3324d15de7
3
+ metadata.gz: a061153858121ad20bbdccc2a4c3c746fd426637
4
+ data.tar.gz: a6c3411501306fa3254f3a60ed4305bb0db30b68
5
5
  SHA512:
6
- metadata.gz: 14240a78a4499bfc3a96a048aefb2f8ecfde3084b8e74a7d372fbe2f83dbec46566b94f9d20c9d913f62ad5788e6c35952db0504e800b22e9426978a58b8557f
7
- data.tar.gz: 83e7b7010e57a4c8f0155d674f52fc9fd609b4ff5a82d16ce406ccb8f819f009c9d49058123a558bc63b541dd0d935766910e3a1f808f342178f47065436505b
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
@@ -35,4 +35,5 @@ Gem::Specification.new do |spec|
35
35
  spec.add_development_dependency 'rake', '~> 10.0'
36
36
  spec.add_development_dependency 'rspec-rails'
37
37
  spec.add_development_dependency 'dotenv'
38
+ spec.add_development_dependency 'pry'
38
39
  end
@@ -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.to_s.singularize.camelize
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
- "Decanter::Parser::".concat(parser_str).safe_constantize ||
29
- raise(NameError.new("cannot find parser #{parser_str}"))
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
@@ -1,3 +1,3 @@
1
1
  module Decanter
2
- VERSION = '1.0.1'.freeze
2
+ VERSION = '1.0.2'.freeze
3
3
  end
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.1
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