structure 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: e26007affcbab4513f6b0a530eea8e54fd3a5caa
4
- data.tar.gz: 266ac459f30fcb317a0157ce13809e0b9c8da7ac
3
+ metadata.gz: 823aad004c9d12efcd46068c366ea7b50bc1ba63
4
+ data.tar.gz: 7b6c6e8140da79339101ed1974a075fee8a04113
5
5
  SHA512:
6
- metadata.gz: 10ee57322295d425a33020717d00a51ae8bf07c549b7559bac8bdf1741e2fe9c55d9541de2d19cabd7a30e39379e86c7cfda305e7ef915b955cb2440b9d8d4e7
7
- data.tar.gz: 27b62bea250c28d1d3b4f9ac768b4626794a529e017511dbed4472d4e3387ab9a43ee289e720ec9e24585ab31fc59ed6b40df792719e89d240f61383837d7986
6
+ metadata.gz: 77b205fa19ebed7e7a2b85981f5536024632ee7544555b5e84c067704338519c3b57e5a72c47e590cb5c33a489146540ade0239af0f7bbf0e0386f3520f14479
7
+ data.tar.gz: 1fd8b8777da2398ccdd9558ba469ee4c35b937a017ed24b87f9f9b82769e7c6111005b9a29a6cc5af1ddec6ea0213ba878bf06eeb6b21cce64c7b44bfd5daf29
@@ -1,3 +1,4 @@
1
+ # Structure
1
2
  module Structure
2
3
  class << self
3
4
  private
@@ -8,24 +9,25 @@ module Structure
8
9
  end
9
10
 
10
11
  def attributes
11
- attribute_names.reduce({}) { |hash, key|
12
+ attribute_names.reduce({}) do |hash, key|
12
13
  value = send(key)
13
- hash.update(key =>
14
- if value.respond_to?(:attributes)
15
- value.attributes
16
- elsif value.is_a?(Array)
17
- value.map { |element|
18
- if element.respond_to?(:attributes)
19
- element.attributes
20
- else
21
- element
14
+ hash.update(
15
+ key =>
16
+ if value.respond_to?(:attributes)
17
+ value.attributes
18
+ elsif value.is_a?(Array)
19
+ value.map do |element|
20
+ if element.respond_to?(:attributes)
21
+ element.attributes
22
+ else
23
+ element
24
+ end
22
25
  end
23
- }
24
- else
25
- value
26
- end
26
+ else
27
+ value
28
+ end
27
29
  )
28
- }
30
+ end
29
31
  end
30
32
 
31
33
  def attribute_names
@@ -39,26 +41,28 @@ module Structure
39
41
 
40
42
  def inspect
41
43
  name = self.class.name || self.class.to_s.gsub(/[^\w:]/, "")
42
- values = attribute_names
43
- .map { |key|
44
+ values =
45
+ attribute_names
46
+ .map do |key|
44
47
  value = send(key)
45
- if (value).is_a?(Array)
48
+ if value.is_a?(Array)
46
49
  description = value.take(3).map(&:inspect).join(", ")
47
50
  description += "..." if value.size > 3
48
51
  "#{key}=[#{description}]"
49
52
  else
50
53
  "#{key}=#{value.inspect}"
51
54
  end
52
- }
55
+ end
53
56
  .join(", ")
54
57
 
55
58
  "#<#{name} #{values}>"
56
59
  end
57
60
 
58
- alias_method :to_h, :attributes
59
- alias_method :eql?, :==
60
- alias_method :to_s, :inspect
61
+ alias to_h attributes
62
+ alias eql? ==
63
+ alias to_s inspect
61
64
 
65
+ # ClassMethods
62
66
  module ClassMethods
63
67
  attr_reader :attribute_names
64
68
 
@@ -1,4 +1,5 @@
1
1
  module Structure
2
+ # ClassMethods
2
3
  module ClassMethods
3
4
  def double
4
5
  klass = Class.new(self)
@@ -13,9 +14,10 @@ module Structure
13
14
 
14
15
  klass.module_eval do
15
16
  def initialize(data = {})
16
- data.each { |key, value|
17
+ data.each do |key, value|
18
+ value.freeze unless value.is_a?(Structure)
17
19
  instance_variable_set(:"@#{key}", value)
18
- }
20
+ end
19
21
  end
20
22
 
21
23
  attribute_names.each do |name|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: structure
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
  - Hakan Ensari
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-11 00:00:00.000000000 Z
11
+ date: 2017-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description:
42
56
  email: me@hakanensari.com
43
57
  executables: []
@@ -66,9 +80,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
80
  version: '0'
67
81
  requirements: []
68
82
  rubyforge_project:
69
- rubygems_version: 2.5.1
83
+ rubygems_version: 2.6.8
70
84
  signing_key:
71
85
  specification_version: 4
72
86
  summary: Parse data into value objects
73
87
  test_files: []
74
- has_rdoc: