accessory 0.1.6 → 0.1.7

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
  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