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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07fb31dcdcfe6189b2d63d268afb2cfb89f1c4c73a8cce840f7f988206a9b092
4
- data.tar.gz: 721e0d10cce975e0534671a37e6a3f28d614b2bda58678d27059db57ec66a3d2
3
+ metadata.gz: dbb3ead7f2e01c74596860dd9d08e128cf654538b70edc0141617909d81230fd
4
+ data.tar.gz: '08488c7003f0a900295f4e86b9a6f975b5f317c2490821a69060693f2c36d127'
5
5
  SHA512:
6
- metadata.gz: 52d99b4ed8d2ba3109cc09a1713738580928361b75173104da290fcb1595142ba79794b100d27817174fc0d853bc54d9931dde26c921c365dec61daee68be65e
7
- data.tar.gz: 299e4bae6b91d2cbb1d35b42faa2dc93c0d92862a24ae10bff4afb3767ae91095f2fd78b10754a000a3a2af1c17435c48f1fa61821d50a9899bbcc40eafa3137
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
@@ -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.gsub('Mapper', '').tableize.camelize(:lower).gsub('::','/')
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 { |renderer| renderer.call(resource) }
86
- renderers.reduce(&:merge).to_lower_camel_case
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.2.2
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-10-14 00:00:00.000000000 Z
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: