accessory 0.1.6 → 0.1.7

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: 9880e7e5ea88c0b373a1cc3d5d4861788f368905c761b2ec3a7236d7282ada39
4
- data.tar.gz: 7386d98dc728a663904564e0a6825de0d7690e806950e5e95d6e8b39d4d20cd6
3
+ metadata.gz: 9f4517af7f1ae501a9dea6721f8dd0966a85c2fd9e8ada3d1d444f8b58cb297e
4
+ data.tar.gz: 4e8bcc0130b9cb5078779642cc0e81f4d4121ac6275ead2fe7a5decd873a5047
5
5
  SHA512:
6
- metadata.gz: dbee544b8dc699adb962559b98278d48edeed2a4d5b9c4d3c6c92ad3c4a38ffb4df5ced18274b465dfe68fd34dd15a50c06c2febae4e54049a4049d377cb10cd
7
- data.tar.gz: 0d1be0f43650e87a1616b5c2ac968b7407c5d8e380abb7e30ad84823816d486341a2c1b791814c55695dc77f2bf0337df834816c2a703bacbb2a3f582f362907
6
+ metadata.gz: 295b43b1f100522c1dcc9e659acbcf174a9725c38448d68b8eb3be10603b9ad9df643f82dced994849616d194ccef080697febc3f934440b45420eae8229fa31
7
+ data.tar.gz: 5d9d93d0a17668ba39313dd8151cf7324a562df362fbbeb0a34bdc6c24b2dc7a8996f36f8e0b1be1c0d489dafc435f645e1b8a4348e3a080bdd66e9efe5dbc61
@@ -1,6 +1,3 @@
1
- ##
2
- #
3
-
4
1
  module Accessory; end
5
2
 
6
3
  require 'accessory/version'
@@ -18,59 +18,59 @@ require 'accessory/accessors/last_accessor'
18
18
  # include Accessory
19
19
 
20
20
  module Accessory::Access
21
- # (see Accessory::SubscriptAccessor)
21
+ # (see Accessory::Accessors::SubscriptAccessor)
22
22
  def self.subscript(...)
23
- Accessory::SubscriptAccessor.new(...)
23
+ Accessory::Accessors::SubscriptAccessor.new(...)
24
24
  end
25
25
 
26
- # (see Accessory::AttributeAccessor)
26
+ # (see Accessory::Accessors::AttributeAccessor)
27
27
  def self.attr(...)
28
- Accessory::AttributeAccessor.new(...)
28
+ Accessory::Accessors::AttributeAccessor.new(...)
29
29
  end
30
30
 
31
- # (see Accessory::InstanceVariableAccessor)
31
+ # (see Accessory::Accessors::InstanceVariableAccessor)
32
32
  def self.ivar(...)
33
- Accessory::InstanceVariableAccessor.new(...)
33
+ Accessory::Accessors::InstanceVariableAccessor.new(...)
34
34
  end
35
35
 
36
- # (see Accessory::BetwixtAccessor)
36
+ # (see Accessory::Accessors::BetwixtAccessor)
37
37
  def self.betwixt(...)
38
- Accessory::BetwixtAccessor.new(...)
38
+ Accessory::Accessors::BetwixtAccessor.new(...)
39
39
  end
40
40
 
41
- # Alias for +Accessory::Access.betwixt(0)+. See {Access.betwixt}
41
+ # Alias for +Accessory::Accessors::Access.betwixt(0)+. See {Access.betwixt}
42
42
  def self.before_first
43
43
  self.betwixt(0)
44
44
  end
45
45
 
46
- # Alias for +Accessory::Access.betwixt(-1)+. See {Access.betwixt}
46
+ # Alias for +Accessory::Accessors::Access.betwixt(-1)+. See {Access.betwixt}
47
47
  def self.after_last
48
48
  self.betwixt(-1)
49
49
  end
50
50
 
51
- # (see Accessory::BetweenEachAccessor)
51
+ # (see Accessory::Accessors::BetweenEachAccessor)
52
52
  def self.between_each
53
- Accessory::BetweenEachAccessor.new
53
+ Accessory::Accessors::BetweenEachAccessor.new
54
54
  end
55
55
 
56
- # (see Accessory::AllAccessor)
56
+ # (see Accessory::Accessors::AllAccessor)
57
57
  def self.all
58
- Accessory::AllAccessor.new
58
+ Accessory::Accessors::AllAccessor.new
59
59
  end
60
60
 
61
- # (see Accessory::FirstAccessor)
61
+ # (see Accessory::Accessors::FirstAccessor)
62
62
  def self.first
63
- Accessory::FirstAccessor.new
63
+ Accessory::Accessors::FirstAccessor.new
64
64
  end
65
65
 
66
- # (see Accessory::LastAccessor)
66
+ # (see Accessory::Accessors::LastAccessor)
67
67
  def self.last
68
- Accessory::LastAccessor.new
68
+ Accessory::Accessors::LastAccessor.new
69
69
  end
70
70
 
71
- # (see Accessory::FilterAccessor)
71
+ # (see Accessory::Accessors::FilterAccessor)
72
72
  def self.filter(&pred)
73
- Accessory::FilterAccessor.new(pred)
73
+ Accessory::Accessors::FilterAccessor.new(pred)
74
74
  end
75
75
  end
76
76
 
@@ -83,29 +83,29 @@ end
83
83
  # {Lens} or {BoundLens} from the addition of the accessor.
84
84
 
85
85
  module Accessory::Access::FluentHelpers
86
- # (see Accessory::SubscriptAccessor)
86
+ # (see Accessory::Accessors::SubscriptAccessor)
87
87
  def subscript(...)
88
- self.then(Accessory::SubscriptAccessor.new(...))
88
+ self.then(Accessory::Accessors::SubscriptAccessor.new(...))
89
89
  end
90
90
 
91
91
  # Alias for {#subscript}
92
92
  def [](...)
93
- self.then(Accessory::SubscriptAccessor.new(...))
93
+ self.then(Accessory::Accessors::SubscriptAccessor.new(...))
94
94
  end
95
95
 
96
- # (see Accessory::AttributeAccessor)
96
+ # (see Accessory::Accessors::AttributeAccessor)
97
97
  def attr(...)
98
- self.then(Accessory::AttributeAccessor.new(...))
98
+ self.then(Accessory::Accessors::AttributeAccessor.new(...))
99
99
  end
100
100
 
101
- # (see Accessory::InstanceVariableAccessor)
101
+ # (see Accessory::Accessors::InstanceVariableAccessor)
102
102
  def ivar(...)
103
- self.then(Accessory::InstanceVariableAccessor.new(...))
103
+ self.then(Accessory::Accessors::InstanceVariableAccessor.new(...))
104
104
  end
105
105
 
106
- # (see Accessory::BetwixtAccessor)
106
+ # (see Accessory::Accessors::BetwixtAccessor)
107
107
  def betwixt(...)
108
- self.then(Accessory::BetwixtAccessor.new(...))
108
+ self.then(Accessory::Accessors::BetwixtAccessor.new(...))
109
109
  end
110
110
 
111
111
  # Alias for +#betwixt(0)+. See {#betwixt}
@@ -118,29 +118,29 @@ module Accessory::Access::FluentHelpers
118
118
  self.betwixt(-1)
119
119
  end
120
120
 
121
- # (see Accessory::BetweenEachAccessor)
121
+ # (see Accessory::Accessors::BetweenEachAccessor)
122
122
  def between_each
123
- self.then(Accessory::BetweenEachAccessor.new)
123
+ self.then(Accessory::Accessors::BetweenEachAccessor.new)
124
124
  end
125
125
 
126
- # (see Accessory::AllAccessor)
126
+ # (see Accessory::Accessors::AllAccessor)
127
127
  def all
128
- self.then(Accessory::AllAccessor.new)
128
+ self.then(Accessory::Accessors::AllAccessor.new)
129
129
  end
130
130
 
131
- # (see Accessory::FirstAccessor)
131
+ # (see Accessory::Accessors::FirstAccessor)
132
132
  def first
133
- self.then(Accessory::FirstAccessor.new)
133
+ self.then(Accessory::Accessors::FirstAccessor.new)
134
134
  end
135
135
 
136
- # (see Accessory::LastAccessor)
136
+ # (see Accessory::Accessors::LastAccessor)
137
137
  def last
138
- self.then(Accessory::LastAccessor.new)
138
+ self.then(Accessory::Accessors::LastAccessor.new)
139
139
  end
140
140
 
141
- # (see Accessory::FilterAccessor)
141
+ # (see Accessory::Accessors::FilterAccessor)
142
142
  def filter(&pred)
143
- self.then(Accessory::FilterAccessor.new(pred))
143
+ self.then(Accessory::Accessors::FilterAccessor.new(pred))
144
144
  end
145
145
  end
146
146
 
@@ -19,7 +19,7 @@ module Accessory; end
19
19
  # info):
20
20
  #
21
21
  # * {Accessor#traverse}
22
- # * {Accessor#default_data_constructor}
22
+ # * {Accessor#ensure_valid}
23
23
 
24
24
  class Accessory::Accessor
25
25
  TERMINAL_DEFAULT_FN = lambda{ nil }
@@ -78,16 +78,13 @@ class Accessory::Accessor
78
78
  # call <tt>traverse_or_default(data)</tt> within your implementation to safely
79
79
  # get a traversal-result to operate on.
80
80
  #
81
- # This method will return +nil+ if the input-data is +nil+, _without_ calling
82
- # your {traverse} callback. This means that accessors that use
83
- # {traverse_or_default} will _forward_ +nil+ traversal-results along the chain
84
- # without being confused by them.
85
- #
86
- # If your {traverse} callback returns <tt>:error</tt>, a default value will
87
- # be used. This is either the +default+ passed to {initialize} by your
88
- # implementation calling <tt>super(default)</tt>; or it's the result of
89
- # calling {default_data_constructor} on the successor-accessor in the accessor
90
- # chain.
81
+ # The value returned by your {traverse} callback will be validated by your
82
+ # calling the {ensure_valid} callback of the _successor accessor_ in the Lens
83
+ # path. {ensure_valid} will replace any value it considers invalid with a
84
+ # reasonable default. This means you don't need to worry about what will
85
+ # happen if your traversal doesn't find a value and so returns +nil+. The
86
+ # successor's {ensure_valid} will replace that +nil+ with a value that works
87
+ # for it.
91
88
  def traverse_or_default(data)
92
89
  traversal_result = traverse(data) || @default_value
93
90
 
@@ -214,3 +211,5 @@ class Accessory::Accessor
214
211
 
215
212
  # @!endgroup
216
213
  end
214
+
215
+ module Accessory::Accessors; end
@@ -15,7 +15,7 @@ require 'accessory/accessor'
15
15
  #
16
16
  # * +Array.new+
17
17
 
18
- class Accessory::AllAccessor < Accessory::Accessor
18
+ class Accessory::Accessors::AllAccessor < Accessory::Accessor
19
19
  # @!visibility private
20
20
  def ensure_valid(traversal_result)
21
21
  if traversal_result.kind_of?(Enumerable)
@@ -19,7 +19,7 @@ require 'accessory/accessor'
19
19
  #
20
20
  # * +OpenStruct.new+
21
21
 
22
- class Accessory::AttributeAccessor < Accessory::Accessor
22
+ class Accessory::Accessors::AttributeAccessor < Accessory::Accessor
23
23
  # @param attr_name [Symbol] the attribute name (i.e. name of the getter method)
24
24
  # @param default [Object] the default to use if the predecessor accessor passes +nil+ data
25
25
  def initialize(attr_name, default: nil)
@@ -16,7 +16,7 @@ require 'accessory/traversal_position/enumerable_before_offset'
16
16
  #
17
17
  # * +Array.new+
18
18
 
19
- class Accessory::BetweenEachAccessor < Accessory::Accessor
19
+ class Accessory::Accessors::BetweenEachAccessor < Accessory::Accessor
20
20
  # @!visibility private
21
21
  def ensure_valid(traversal_result)
22
22
  if traversal_result.kind_of?(Enumerable)
@@ -26,7 +26,7 @@ require 'accessory/traversal_position/enumerable_before_offset'
26
26
  #
27
27
  # * +Array.new+
28
28
 
29
- class Accessory::BetwixtAccessor < Accessory::Accessor
29
+ class Accessory::Accessors::BetwixtAccessor < Accessory::Accessor
30
30
  # @param offset [Integer] the cursor position (i.e. the index of the element after the cursor)
31
31
  # @param default [Object] the default to use if the predecessor accessor passes +nil+ data
32
32
  def initialize(offset, default: nil)
@@ -15,7 +15,7 @@ require 'accessory/accessor'
15
15
  #
16
16
  # * +Array.new+
17
17
 
18
- class Accessory::FilterAccessor < Accessory::Accessor
18
+ class Accessory::Accessors::FilterAccessor < Accessory::Accessor
19
19
  # Returns a new instance of {FilterAccessor}.
20
20
  #
21
21
  # The predicate function may be passed in as either a positional argument,
@@ -15,7 +15,7 @@ require 'accessory/accessor'
15
15
  #
16
16
  # * +Array.new+
17
17
 
18
- class Accessory::FirstAccessor < Accessory::Accessor
18
+ class Accessory::Accessors::FirstAccessor < Accessory::Accessor
19
19
  # @!visibility private
20
20
  def ensure_valid(traversal_result)
21
21
  if traversal_result.kind_of?(Enumerable)
@@ -14,7 +14,7 @@ require 'accessory/accessor'
14
14
  #
15
15
  # * +Object.new+
16
16
 
17
- class Accessory::InstanceVariableAccessor < Accessory::Accessor
17
+ class Accessory::Accessors::InstanceVariableAccessor < Accessory::Accessor
18
18
  # @param ivar_name [Symbol] the instance-variable name
19
19
  # @param default [Object] the default to use if the predecessor accessor passes +nil+ data
20
20
  def initialize(ivar_name, default: nil)
@@ -15,7 +15,7 @@ require 'accessory/accessor'
15
15
  #
16
16
  # * +Array.new+
17
17
 
18
- class Accessory::LastAccessor < Accessory::Accessor
18
+ class Accessory::Accessors::LastAccessor < Accessory::Accessor
19
19
  # @!visibility private
20
20
  def ensure_valid(traversal_result)
21
21
  if traversal_result.kind_of?(Enumerable)
@@ -31,7 +31,7 @@ require 'accessory/accessor'
31
31
  #
32
32
  # Other accessors ({FirstAccessor}, {BetwixtAccessor}, etc.) may fit your expectations more closely for +Array+ traversal.
33
33
 
34
- class Accessory::SubscriptAccessor < Accessory::Accessor
34
+ class Accessory::Accessors::SubscriptAccessor < Accessory::Accessor
35
35
  # @!visibility private
36
36
  def initialize(key, **kwargs)
37
37
  super(**kwargs)
@@ -200,9 +200,9 @@ class Accessory::Lens
200
200
  when Accessory::Accessor
201
201
  part
202
202
  when Array
203
- Accessory::SubscriptAccessor.new(part[0], default: part[1])
203
+ Accessory::Accessors::SubscriptAccessor.new(part[0], default: part[1])
204
204
  else
205
- Accessory::SubscriptAccessor.new(part)
205
+ Accessory::Accessors::SubscriptAccessor.new(part)
206
206
  end
207
207
 
208
208
  unless @parts.empty?
@@ -1,3 +1,3 @@
1
1
  module Accessory
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: accessory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Levi Aul