upholsterer 1.4.0 → 1.4.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 88f0915e56e87ac3f84674452a38276d04fb7afe
4
- data.tar.gz: 7f6250fc690066c2bfcfa4824f3ccff02b21cbe3
3
+ metadata.gz: f86ecfdcf45ec231c8fbc8891e6434e365278a95
4
+ data.tar.gz: a9d6c734325567bf1a4fb1040782147bcd95688d
5
5
  SHA512:
6
- metadata.gz: fd5aa4746a69768107a55f6503245cc897172583b67f7e3893f213188809f3e61901e1c2a69873c716efbbb3b08d1225d97f4512f544b44cdeae8074eb09ca0e
7
- data.tar.gz: 116a4360f2d79882f65eca474ff38adcf19e864f73b787d63914b6dfc7ce30440af0208d751dbb1ab97f892d6cb1f120c0511457ec0f8d57ad6a35331feb40b4
6
+ metadata.gz: 245da627ee9baab2a4f2422bb0a7103b1d1372f62a6e88e2c72c00704b430ab2c86796bee24f6908f3c4461171e0d1464c0b4a12d4ab0f1ea37f0f0f0f20064e
7
+ data.tar.gz: dc459f25c07027059bfb1897c0888b9c1919f2a95a7b2017fbe99578d1fc56e4eccfd12f0fc54507a5ff1ab75703e4a667ffd407d5cf206782ab8d65c05c76d8
data/.gitignore CHANGED
@@ -3,3 +3,5 @@ pkg
3
3
  tmp
4
4
  .tags
5
5
  .idea
6
+ .ruby-version
7
+ .ruby-gemset
@@ -5,5 +5,5 @@ cache: bundler
5
5
  rvm:
6
6
  - 2.0.0
7
7
  - 2.1
8
- - 2.2
9
8
  - 2.2.3
9
+ - 2.3.1
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- upholsterer (1.4.0)
4
+ upholsterer (1.4.1)
5
5
  activesupport
6
6
 
7
7
  GEM
@@ -17,7 +17,7 @@ GEM
17
17
  coderay (1.0.9)
18
18
  diff-lcs (1.2.4)
19
19
  i18n (0.6.11)
20
- json (1.8.1)
20
+ json (1.8.3)
21
21
  method_source (0.8.2)
22
22
  minitest (5.4.2)
23
23
  pry (0.9.12.2)
@@ -59,4 +59,4 @@ DEPENDENCIES
59
59
  upholsterer!
60
60
 
61
61
  BUNDLED WITH
62
- 1.11.2
62
+ 1.12.5
@@ -10,25 +10,27 @@ module Upholsterer
10
10
  end
11
11
  end
12
12
 
13
- def to_hash
14
- Hash[json_fields.collect do |field|
15
- [field, public_send(field)]
16
- end]
17
- end
18
-
19
- alias :to_h :to_hash
20
-
21
- private
22
-
23
- def json_fields
24
- @json_fields ||= begin
25
- methods = public_methods(false).tap do |fields|
13
+ def self.serialize_attributes
14
+ @_json_fields ||= begin
15
+ methods = instance_methods(false).tap do |fields|
26
16
  fields.delete(:subject)
27
17
  fields.delete(:respond_to?)
28
18
  fields.delete(:method_missing)
29
19
  end
30
- (methods + self.class.attributes.keys).uniq
20
+ (methods + attributes.keys).uniq
21
+ end
22
+ end
23
+
24
+ def to_hash
25
+ json = {}
26
+
27
+ self.class.serialize_attributes.each do |field|
28
+ json[field] = public_send(field)
31
29
  end
30
+
31
+ json
32
32
  end
33
+
34
+ alias :to_h :to_hash
33
35
  end
34
- end
36
+ end
@@ -23,7 +23,7 @@ module Upholsterer
23
23
  alias_method :r, :routes
24
24
 
25
25
  def helpers
26
- ApplicationController.helpers
26
+ @_helpers ||= ApplicationController.helpers
27
27
  end
28
28
  alias_method :h, :helpers
29
29
  end
@@ -2,7 +2,7 @@ module Upholsterer
2
2
  module Version
3
3
  MAJOR = 1
4
4
  MINOR = 4
5
- PATCH = 0
5
+ PATCH = 1
6
6
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
7
7
  end
8
8
  end
@@ -1,6 +1,27 @@
1
1
  RSpec::Matchers.define :be_json_with do |expected|
2
2
  match do |json_string|
3
- json_string == expected.to_json
3
+ current_hash = JSON.parse(json_string)
4
+
5
+ compare_hashes(current_hash, expected)
6
+ end
7
+
8
+ def compare_hashes(actual, expected)
9
+ if actual.keys.count == expected.keys.count
10
+ actual.all? do |key, value|
11
+ key = key.to_sym
12
+ if expected.has_key?(key)
13
+ expected_value = expected[key]
14
+
15
+ if value.is_a? Hash
16
+ if expected_value.is_a? Hash
17
+ compare_hashes(value, expected_value)
18
+ end
19
+ else
20
+ expected_value == value
21
+ end
22
+ end
23
+ end
24
+ end
4
25
  end
5
26
  end
6
27
 
@@ -15,4 +36,4 @@ RSpec::Matchers.define :contain_keys do |*expected|
15
36
  false
16
37
  end
17
38
  end
18
- end
39
+ end
@@ -6,10 +6,10 @@ Gem::Specification.new do |s|
6
6
  s.name = 'upholsterer'
7
7
  s.version = Upholsterer::Version::STRING
8
8
  s.platform = Gem::Platform::RUBY
9
- s.authors = ['Nando Vieira', 'Aleksandr Fomin', 'Gleb Sinyavsky']
10
- s.email = ['fnando.vieira@gmail.com', 'll.wg.bin@gmail.com']
9
+ s.authors = ['Aleksandr Fomin']
10
+ s.email = ['ll.wg.bin@gmail.com']
11
11
  s.homepage = 'https://github.com/llxff/upholsterer'
12
- s.summary = 'A simple presenter/facade/decorator/whatever implementation.'
12
+ s.summary = 'A simple serializer implementation.'
13
13
  s.description = s.summary
14
14
 
15
15
  s.files = `git ls-files`.split("\n")
metadata CHANGED
@@ -1,16 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upholsterer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
- - Nando Vieira
8
7
  - Aleksandr Fomin
9
- - Gleb Sinyavsky
10
8
  autorequire:
11
9
  bindir: bin
12
10
  cert_chain: []
13
- date: 2016-03-16 00:00:00.000000000 Z
11
+ date: 2016-07-19 00:00:00.000000000 Z
14
12
  dependencies:
15
13
  - !ruby/object:Gem::Dependency
16
14
  name: rake
@@ -68,9 +66,8 @@ dependencies:
68
66
  - - ">="
69
67
  - !ruby/object:Gem::Version
70
68
  version: '0'
71
- description: A simple presenter/facade/decorator/whatever implementation.
69
+ description: A simple serializer implementation.
72
70
  email:
73
- - fnando.vieira@gmail.com
74
71
  - ll.wg.bin@gmail.com
75
72
  executables: []
76
73
  extensions: []
@@ -124,8 +121,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
121
  version: '0'
125
122
  requirements: []
126
123
  rubyforge_project:
127
- rubygems_version: 2.4.8
124
+ rubygems_version: 2.5.1
128
125
  signing_key:
129
126
  specification_version: 4
130
- summary: A simple presenter/facade/decorator/whatever implementation.
127
+ summary: A simple serializer implementation.
131
128
  test_files: []