active_mappers 0.2.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/active_mappers/key_transformer.rb +40 -0
- data/lib/active_mappers/setup.rb +17 -0
- data/lib/active_mappers.rb +7 -3
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dbb3ead7f2e01c74596860dd9d08e128cf654538b70edc0141617909d81230fd
|
4
|
+
data.tar.gz: '08488c7003f0a900295f4e86b9a6f975b5f317c2490821a69060693f2c36d127'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17b41436d9c4477d5fe21936140a103c1c3f2e528d734601e69653e3d5e608117a97fa67c27d2742bd45b2ee170d85bea0940319152b0fe1b0d5bea26668b6f4
|
7
|
+
data.tar.gz: 06a3873ae63e407e1c4f35c3ae471502fbc30d1b935b21115aaaffada25e95060bae5498a44965913201276cd7dd9a10a0d2d892c28bbc829c60b79d931026a7
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require_relative 'setup'
|
2
|
+
|
3
|
+
module ActiveMappers
|
4
|
+
class KeyTransformer
|
5
|
+
def self.apply_on(name)
|
6
|
+
new(name)
|
7
|
+
.remove_ignored_namespace
|
8
|
+
.apply_root_key_transform
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.format_keys(hash)
|
12
|
+
Setup.camelcase_keys ? hash.to_lower_camel_case : hash
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize(name)
|
16
|
+
@name = name
|
17
|
+
end
|
18
|
+
|
19
|
+
def remove_ignored_namespace
|
20
|
+
Setup.ignored_namespaces.each do |namespace|
|
21
|
+
@name.gsub!("#{namespace.to_s.capitalize}::", '')
|
22
|
+
end
|
23
|
+
self
|
24
|
+
end
|
25
|
+
|
26
|
+
def apply_root_key_transform
|
27
|
+
camel_transformer = proc do |key|
|
28
|
+
key.gsub('Mapper', '').tableize.camelize(:lower).gsub('::', '/')
|
29
|
+
end
|
30
|
+
|
31
|
+
snake_transformer = proc do |key|
|
32
|
+
key.gsub('Mapper', '').tableize
|
33
|
+
end
|
34
|
+
|
35
|
+
transformer = Setup.camelcase_keys ? camel_transformer : snake_transformer
|
36
|
+
|
37
|
+
(Setup.root_keys_transformer || transformer).call(@name)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'active_support/core_ext/string/inflections'
|
2
|
+
|
3
|
+
module ActiveMappers
|
4
|
+
class Setup
|
5
|
+
@root_keys_transformer = nil
|
6
|
+
@camelcase_keys = true
|
7
|
+
@ignored_namespaces = []
|
8
|
+
|
9
|
+
class << self
|
10
|
+
attr_accessor :root_keys_transformer, :ignored_namespaces, :camelcase_keys
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.configure
|
14
|
+
yield self
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/active_mappers.rb
CHANGED
@@ -2,6 +2,7 @@ require 'active_support'
|
|
2
2
|
require 'active_support/core_ext/object/try'
|
3
3
|
require 'active_support/core_ext/string/inflections'
|
4
4
|
require_relative 'core_ext/hash'
|
5
|
+
require_relative 'active_mappers/key_transformer'
|
5
6
|
|
6
7
|
module ActiveMappers
|
7
8
|
class Base
|
@@ -68,7 +69,7 @@ module ActiveMappers
|
|
68
69
|
|
69
70
|
def self.render_with_root(args, options = {})
|
70
71
|
resource_name = options[:root]
|
71
|
-
resource_name ||= self.name
|
72
|
+
resource_name ||= KeyTransformer.apply_on(self.name)
|
72
73
|
|
73
74
|
if args.respond_to?(:each)
|
74
75
|
{ resource_name.to_s.pluralize.to_sym => all(args) }
|
@@ -82,8 +83,11 @@ module ActiveMappers
|
|
82
83
|
end
|
83
84
|
|
84
85
|
def self.one(resource)
|
85
|
-
renderers = @@renderers[name].map
|
86
|
-
|
86
|
+
renderers = @@renderers[name].map do |renderer|
|
87
|
+
renderer.call(resource)
|
88
|
+
end.reduce(&:merge)
|
89
|
+
|
90
|
+
KeyTransformer.format_keys(renderers)
|
87
91
|
end
|
88
92
|
end
|
89
93
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_mappers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michaël Villeneuve
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -31,6 +31,8 @@ extensions: []
|
|
31
31
|
extra_rdoc_files: []
|
32
32
|
files:
|
33
33
|
- lib/active_mappers.rb
|
34
|
+
- lib/active_mappers/key_transformer.rb
|
35
|
+
- lib/active_mappers/setup.rb
|
34
36
|
- lib/core_ext/hash.rb
|
35
37
|
homepage: https://github.com/fidme/active_mappers
|
36
38
|
licenses:
|