strong_struct 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/strong_struct.rb +51 -0
  3. metadata +30 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0ee9dcb43cb8b3b6a788a89185b3c339cca1d451
4
- data.tar.gz: 33722aa53504aa2fc69fb09441d8608d4815a73c
3
+ metadata.gz: 6da0ce0fd400e2261e0d0d4a0c440a24e445c277
4
+ data.tar.gz: ed652d3f426af94e1e7440281882d9715aab0ba6
5
5
  SHA512:
6
- metadata.gz: 879fad4d740acbdf6f18a15917aebd9de21875dfc4e8318a58e25da288698dd88b1ec8e952f835f5bc30ae8dfa9cba7202a9b0f82bb6d05b0400434222806edc
7
- data.tar.gz: 8c402d601f73e40a7b5633f224be452b417284b8dd4e49b4792aa0c2215289c5c4d9045297403cb5c8fb45022385590bb2bb24be178a86a120d7ecabef343a5b
6
+ metadata.gz: a42475f2527501aedc7cf0b49cde07e2bd8540c55c9804ab66c14e5e81fc70a7ee7911c33a530f5383fe172908fc5701090b8fb8937d643a128c5ad183d59b42
7
+ data.tar.gz: 9f6fc7abf5c3784d38603beff5f7413a64ab1ecf38007db92853c8baa060a81ca6afd4b26d46309746bb1223c0179c00093ada9ccea0ae153e575d6644b2d0cb
data/lib/strong_struct.rb CHANGED
@@ -1,9 +1,33 @@
1
+ # frozen_string_literal: true
1
2
  module StrongStruct
2
3
  module ClassMethods
3
4
  def accessors
4
5
  @accessors ||= []
5
6
  end
6
7
 
8
+ def name
9
+ return super unless defined?(@name)
10
+ @name
11
+ end
12
+
13
+ def name=(value)
14
+ if defined?(@name)
15
+ raise "#{StrongStruct} pseudo-classes may not be renamed."
16
+ end
17
+
18
+ @name = value
19
+ end
20
+
21
+ def to_s
22
+ return super unless defined?(@name)
23
+ super.gsub(/^#<Class:/, "#<#{@name}:")
24
+ end
25
+
26
+ def inspect
27
+ return super unless defined?(@name)
28
+ super.gsub(/^#<Class:/, "#<#{@name}:")
29
+ end
30
+
7
31
  private
8
32
 
9
33
  def add_accessor(accessor)
@@ -30,8 +54,35 @@ module StrongStruct
30
54
  hash
31
55
  end
32
56
 
57
+ def to_s
58
+ base = super
59
+ klass_name = class_name
60
+ return base unless klass_name != 'Object'
61
+ base.gsub(/^#<#<Class:/, "#<#<#{klass_name}:")
62
+ end
63
+
64
+
65
+ def inspect
66
+ base = super
67
+ klass_name = class_name
68
+ return base unless klass_name != 'Object'
69
+ base.gsub(/^#<#<Class:/, "#<#<#{klass_name}:")
70
+ end
71
+
33
72
  private
34
73
 
74
+ def class_name
75
+ klass = self.class
76
+ return klass.name if klass.name
77
+
78
+ while klass.superclass
79
+ klass = klass.superclass
80
+ break if klass.name
81
+ end
82
+
83
+ klass.name
84
+ end
85
+
35
86
  def accessors
36
87
  @accessors ||= get_accessors
37
88
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strong_struct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Travis Herrick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-31 00:00:00.000000000 Z
11
+ date: 2016-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -80,6 +80,34 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: travis-yaml
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: wwtd
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
83
111
  description: A structure that has strong attributes
84
112
  email:
85
113
  - tthetoad@gmail.com