nrser 0.1.4 → 0.2.0.pre.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/nrser.rb +3 -0
- data/lib/nrser/char.rb +2 -3
- data/lib/nrser/char/alpha_numeric_sub.rb +233 -0
- data/lib/nrser/ext.rb +1 -0
- data/lib/nrser/ext/binding.rb +36 -0
- data/lib/nrser/ext/string.rb +29 -0
- data/lib/nrser/functions/binding.rb +40 -15
- data/lib/nrser/functions/string.rb +17 -1
- data/lib/nrser/functions/string/style.rb +71 -0
- data/lib/nrser/mean_streak.rb +33 -8
- data/lib/nrser/mean_streak/document.rb +221 -36
- data/lib/nrser/refinements/binding.rb +3 -4
- data/lib/nrser/rspex.rb +3 -17
- data/lib/nrser/rspex/example.rb +49 -0
- data/lib/nrser/rspex/example_group.rb +61 -33
- data/lib/nrser/rspex/example_group/describe_called_with.rb +42 -0
- data/lib/nrser/rspex/example_group/describe_spec_file.rb +2 -0
- data/lib/nrser/rspex/format.rb +48 -78
- data/lib/nrser/types.rb +71 -14
- data/lib/nrser/types/attrs.rb +121 -110
- data/lib/nrser/types/bounded.rb +3 -2
- data/lib/nrser/types/combinators.rb +39 -8
- data/lib/nrser/types/hashes.rb +5 -4
- data/lib/nrser/types/is.rb +11 -1
- data/lib/nrser/types/is_a.rb +11 -2
- data/lib/nrser/types/maybe.rb +4 -5
- data/lib/nrser/types/nil.rb +1 -10
- data/lib/nrser/types/not.rb +53 -0
- data/lib/nrser/types/numbers.rb +20 -17
- data/lib/nrser/types/shape.rb +75 -0
- data/lib/nrser/types/strings.rb +49 -59
- data/lib/nrser/types/symbols.rb +13 -18
- data/lib/nrser/types/type.rb +32 -9
- data/lib/nrser/types/when.rb +102 -0
- data/lib/nrser/version.rb +1 -1
- data/spec/{nrser → lib/nrser}/collection/each_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/collection/map_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/env/path/insert_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/env/path_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/errors/abstract_method_error_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/binding/template_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/enumerable/find_all_map_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/enumerable/find_bounded_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/enumerable/find_map_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/enumerable/find_only_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/enumerable/include_slice_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/enumerable/to_h_by_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/exception/format_exception_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/hash/bury_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/hash/guess_label_key_type_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/hash_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/merge_by_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/object/truthy_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/open_struct_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/string/common_prefix_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/string/looks_like_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/string/truncate_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/text/dedent/gotchas_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/text/dedent_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/text/indent_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/text/words_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/tree/each_branch_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/tree/leaves_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/tree/map_branch_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/tree/map_tree_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/tree/transform_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/functions/tree/transformer_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/labs/globlin_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/labs/index_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/logger/dest_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/logger/die_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/logger/install_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/logger/level_int_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/logger/level_name_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/logger/level_sym_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/logger/send_log_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/logger/use_spec.rb +0 -0
- data/spec/lib/nrser/mean_streak/design_spec.rb +68 -0
- data/spec/lib/nrser/mean_streak/identity_instance_spec.rb +21 -0
- data/spec/{nrser → lib/nrser}/meta/class_attrs_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/meta/props/to_and_from_data_spec.rb +17 -11
- data/spec/{nrser → lib/nrser}/meta/props_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/op/message_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/refinements/array_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/refinements/erb_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/refinements/format_exception_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/refinements/hash_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/refinements/indent_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/refinements/object_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/refinements/pathname_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/refinements/set_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/refinements/truncate_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/types/array_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/types/attrs_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/types/combinators_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/types/is_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/types/pairs_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/types/paths_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/types/strings_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/types/symbols_spec.rb +1 -1
- data/spec/{nrser → lib/nrser}/types/tuples_spec.rb +0 -0
- data/spec/{nrser → lib/nrser}/types_spec.rb +0 -0
- data/spec/{nrser_spec.rb → lib/nrser_spec.rb} +0 -0
- metadata +148 -136
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b51533291e377070a1f4cac954fc49eee602d178
|
4
|
+
data.tar.gz: 57c89f078878e050a01dfd8a1b1c00a345de7cb5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6305b4adf84631b859377ed9c30d065b617b157299c066a0f8333f9133d979ccf37424cdc16ce3c6cef0219a95e769294cd19148b299f48358bb7934715b7003
|
7
|
+
data.tar.gz: 5cbf8bb41e319263a4eda303cdf0651080f628a566f723ca185136b198b3089e89b74b22b3b46f815b553ecb0a770eb48b28c09f935148dde7bd0338dc4201e6
|
data/lib/nrser.rb
CHANGED
data/lib/nrser/char.rb
CHANGED
@@ -18,6 +18,7 @@ module NRSER::Char; end
|
|
18
18
|
# ============================================================================
|
19
19
|
|
20
20
|
require_relative './char/special'
|
21
|
+
require_relative './char/alpha_numeric_sub'
|
21
22
|
|
22
23
|
|
23
24
|
# Definitions
|
@@ -141,9 +142,7 @@ module NRSER::Char
|
|
141
142
|
from_i source
|
142
143
|
else
|
143
144
|
raise ArgumentError.new binding.erb <<-END
|
144
|
-
Expected hex String like '12AB' or Integer, got <%= source.class
|
145
|
-
|
146
|
-
Found:
|
145
|
+
Expected hex String like '12AB' or Integer, got <%= source.class %>:
|
147
146
|
|
148
147
|
<%= source.pretty_inspect %>
|
149
148
|
|
@@ -0,0 +1,233 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
# Refinements
|
7
|
+
# =======================================================================
|
8
|
+
|
9
|
+
using NRSER
|
10
|
+
using NRSER::Types
|
11
|
+
|
12
|
+
|
13
|
+
# Definitions
|
14
|
+
# =======================================================================
|
15
|
+
|
16
|
+
# Lil' structure with useful info and methods for special characters.
|
17
|
+
#
|
18
|
+
class NRSER::Char::AlphaNumericSub
|
19
|
+
|
20
|
+
# Attributes
|
21
|
+
# ======================================================================
|
22
|
+
|
23
|
+
# The `a` character (as a length 1 {String}), the `#ord` of which is used
|
24
|
+
# to determine the target `#ord` of lower-case alpha (`a-z`) characters for
|
25
|
+
# substitution.
|
26
|
+
#
|
27
|
+
# @return [String]
|
28
|
+
# When the sub supports lower-case alpha substitution.
|
29
|
+
#
|
30
|
+
# @return [nil]
|
31
|
+
# When the sub does not support lower-case alpha substitution.
|
32
|
+
#
|
33
|
+
attr_reader :sub_a
|
34
|
+
|
35
|
+
|
36
|
+
# The `A` character (as a length 1 {String}), the `#ord` of which is used
|
37
|
+
# to determine the target `#ord` upper-case alpha (`A-Z`) characters for
|
38
|
+
# substitution.
|
39
|
+
#
|
40
|
+
# @return [String]
|
41
|
+
# When the sub supports upper-case alpha substitution.
|
42
|
+
#
|
43
|
+
# @return [nil]
|
44
|
+
# When the sub does not support upper-case alpha substitution.
|
45
|
+
#
|
46
|
+
attr_reader :sub_A
|
47
|
+
|
48
|
+
|
49
|
+
# The target set's `0` character (as a length 1 {String}), the `#ord` of
|
50
|
+
# which is used to determine the target `#ord` of numeric `0-9` characters
|
51
|
+
# for substitution.
|
52
|
+
#
|
53
|
+
# @return [String]
|
54
|
+
# When the sub supports numeric substitution.
|
55
|
+
#
|
56
|
+
# @return [nil]
|
57
|
+
# When the sub does not support numeric substitution.
|
58
|
+
#
|
59
|
+
attr_reader :sub_0
|
60
|
+
|
61
|
+
|
62
|
+
# Map of source character to dest character substitutions to handle cases
|
63
|
+
# where a few of the destination alpha-numerics don't follow the "offest
|
64
|
+
# from `a`/`A`/`0`" rule.
|
65
|
+
#
|
66
|
+
# @return [Hash<String, String>]
|
67
|
+
# All length 1 UTF-8 strings. Deeply frozen.
|
68
|
+
#
|
69
|
+
attr_reader :exceptions
|
70
|
+
|
71
|
+
|
72
|
+
# Class Methods
|
73
|
+
# ============================================================================
|
74
|
+
|
75
|
+
# @!group On-Demand Built-In Instances (Class Methods)
|
76
|
+
# ----------------------------------------------------------------------------
|
77
|
+
#
|
78
|
+
# Class functions that create "built-in" instances on demand. Doing it like
|
79
|
+
# this side-steps load-order issues with using the refinements.
|
80
|
+
#
|
81
|
+
|
82
|
+
# Instance to substitute alphas with their "Unicode Math Italic"
|
83
|
+
# counterpart.
|
84
|
+
#
|
85
|
+
# @return [NRSER::Char::AlphaNumericSub]
|
86
|
+
#
|
87
|
+
def self.unicode_math_italic
|
88
|
+
@@unicode_math_italic ||= new \
|
89
|
+
sub_a: '𝑎',
|
90
|
+
sub_A: '𝐴',
|
91
|
+
# Doesn't have italic numbers to just don't sub
|
92
|
+
exceptions: {
|
93
|
+
# The `h` is not in the run
|
94
|
+
'h' => 'ℎ'
|
95
|
+
}
|
96
|
+
end # .unicode_math_italic
|
97
|
+
|
98
|
+
|
99
|
+
# Instance to substitute alphas with their "Unicode Math Bold"
|
100
|
+
# counterpart.
|
101
|
+
#
|
102
|
+
# @return [NRSER::Char::AlphaNumericSub]
|
103
|
+
#
|
104
|
+
def self.unicode_math_bold
|
105
|
+
@@unicode_math_italic ||= new \
|
106
|
+
sub_a: '𝐚',
|
107
|
+
sub_A: '𝐀',
|
108
|
+
sub_0: '𝟬'
|
109
|
+
end # .unicode_math_italic
|
110
|
+
|
111
|
+
|
112
|
+
# Instance to substitute alphas with their "Unicode Math Bold Italic"
|
113
|
+
# counterpart.
|
114
|
+
#
|
115
|
+
# @return [NRSER::Char::AlphaNumericSub]
|
116
|
+
#
|
117
|
+
def self.unicode_math_bold_italic
|
118
|
+
@@unicode_math_italic ||= new \
|
119
|
+
sub_A: '𝑨',
|
120
|
+
sub_a: '𝒂',
|
121
|
+
# Just use the bold numbers since Unicode doesn't seem to have
|
122
|
+
# italic numbers
|
123
|
+
sub_0: '𝟬'
|
124
|
+
end # .unicode_math_italic
|
125
|
+
|
126
|
+
|
127
|
+
# Instance to substitute alphas with their "Unicode Math Bold Italic"
|
128
|
+
# counterpart.
|
129
|
+
#
|
130
|
+
# @return [NRSER::Char::AlphaNumericSub]
|
131
|
+
#
|
132
|
+
def self.unicode_math_monospace
|
133
|
+
@@unicode_math_italic ||= new \
|
134
|
+
sub_A: '𝙰',
|
135
|
+
sub_a: '𝚊',
|
136
|
+
sub_0: '𝟶'
|
137
|
+
end # .unicode_math_italic
|
138
|
+
|
139
|
+
# @!endgroup On-Demand Built-In Instances (Class Methods)
|
140
|
+
|
141
|
+
|
142
|
+
# Constructor
|
143
|
+
# ======================================================================
|
144
|
+
|
145
|
+
# Instantiate a new `Special`.
|
146
|
+
#
|
147
|
+
# @param [String] char:
|
148
|
+
# The actual character as a length 1 UTF-8 string.
|
149
|
+
#
|
150
|
+
# @param [nil | String] caret:
|
151
|
+
# Optional `^X` replacement for control characters, see {#caret} for
|
152
|
+
# details.
|
153
|
+
#
|
154
|
+
# @param [Array<#to_s>] names:
|
155
|
+
# Optional names this character goes by.
|
156
|
+
#
|
157
|
+
# @param [nil | String] symbol:
|
158
|
+
# Optional printable unicode character replacement, see {#symbol} for
|
159
|
+
# details.
|
160
|
+
#
|
161
|
+
def initialize sub_a: nil,
|
162
|
+
sub_A: nil,
|
163
|
+
sub_0: nil,
|
164
|
+
exceptions: nil
|
165
|
+
binding.locals.tap do |args|
|
166
|
+
t.list( t.utf8_char? ).check \
|
167
|
+
args.slice( :sub_a, :sub_A, :sub_0 ).values
|
168
|
+
|
169
|
+
t.hash_?( keys: t.utf8_char, values: t.utf8_char ).check exceptions
|
170
|
+
|
171
|
+
if args.all?( &:nil? )
|
172
|
+
raise ArgumentError.new,
|
173
|
+
"All arguments can't be `nil` (sub couldn't do anything)"
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
@sub_a = sub_a.freeze
|
178
|
+
@sub_A = sub_A.freeze
|
179
|
+
@sub_0 = sub_0.freeze
|
180
|
+
@exceptions = if exceptions
|
181
|
+
exceptions.each { |k, v| k.freeze; v.freeze }.freeze
|
182
|
+
end
|
183
|
+
end # #initialize
|
184
|
+
|
185
|
+
|
186
|
+
# Instance Methods
|
187
|
+
# ======================================================================
|
188
|
+
|
189
|
+
# The first of {#names} (if any).
|
190
|
+
#
|
191
|
+
# @return [nil]
|
192
|
+
# When {#names} is empty.
|
193
|
+
#
|
194
|
+
# @return [String]
|
195
|
+
# When {#names} is not empty.
|
196
|
+
#
|
197
|
+
def sub src
|
198
|
+
dest = src.dup
|
199
|
+
|
200
|
+
if @exceptions
|
201
|
+
@exceptions.each do |src_char, dest_char|
|
202
|
+
dest.gsub! src_char, dest_char
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
[
|
207
|
+
['a', /[a-z]/],
|
208
|
+
['A', /[A-Z]/],
|
209
|
+
['0', /[0-9]/],
|
210
|
+
].each do |src_char, regexp|
|
211
|
+
src_char_ord = src_char.ord
|
212
|
+
start_dest_char = instance_variable_get "@sub_#{ src_char }"
|
213
|
+
|
214
|
+
unless start_dest_char.nil?
|
215
|
+
start_dest_char_ord = start_dest_char.ord
|
216
|
+
|
217
|
+
dest.gsub!( regexp ) { |char|
|
218
|
+
NRSER::Char.from_i(
|
219
|
+
start_dest_char_ord + (char.ord - src_char_ord)
|
220
|
+
)
|
221
|
+
}
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
dest
|
226
|
+
end
|
227
|
+
|
228
|
+
|
229
|
+
def demo
|
230
|
+
sub ['a'..'z', 'A'..'Z', '0'..'9'].map { |_| _.to_a.join }.join
|
231
|
+
end
|
232
|
+
|
233
|
+
end # class NRSER::Char::Special
|
data/lib/nrser/ext.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
# Extension methods for {Binding}
|
2
|
+
#
|
3
|
+
module NRSER::Ext::Binding
|
4
|
+
|
5
|
+
# Calls {NRSER.template} with `self` prepended to `*args`
|
6
|
+
#
|
7
|
+
# @param (see NRSER.erb)
|
8
|
+
# @return (see NRSER.erb)
|
9
|
+
#
|
10
|
+
def template *args
|
11
|
+
NRSER.template self, *args
|
12
|
+
end
|
13
|
+
|
14
|
+
alias_method :erb, :template
|
15
|
+
|
16
|
+
|
17
|
+
# Calls {NRSER.locals} with `self` prepended to `*args`
|
18
|
+
#
|
19
|
+
# @param (see NRSER.locals)
|
20
|
+
# @return (see NRSER.locals)
|
21
|
+
#
|
22
|
+
def locals *args
|
23
|
+
NRSER.locals self, *args
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
# Calls {NRSER.local_values} with `self` prepended to `*args`
|
28
|
+
#
|
29
|
+
# @param (see NRSER.local_values)
|
30
|
+
# @return (see NRSER.local_values)
|
31
|
+
#
|
32
|
+
def local_values *args
|
33
|
+
NRSER.local_values self, *args
|
34
|
+
end
|
35
|
+
|
36
|
+
end # module NRSER::Ext::Binding
|
data/lib/nrser/ext/string.rb
CHANGED
@@ -59,4 +59,33 @@ module NRSER::Ext::String
|
|
59
59
|
NRSER::words self, *args, &block
|
60
60
|
end
|
61
61
|
|
62
|
+
|
63
|
+
# @!group Unicode Stylization
|
64
|
+
# ==========================================================================
|
65
|
+
|
66
|
+
# Calls {NRSER.u_italic} on `self`
|
67
|
+
def u_italic
|
68
|
+
NRSER.u_italic self
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
# Calls {NRSER.u_bold} on `self`
|
73
|
+
def u_bold
|
74
|
+
NRSER.u_bold self
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
# Calls {NRSER.u_bold_italic} on `self`
|
79
|
+
def u_bold_italic
|
80
|
+
NRSER.u_bold_italic self
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
# Calls {NRSER.u_mono} on `self`
|
85
|
+
def u_mono
|
86
|
+
NRSER.u_mono self
|
87
|
+
end
|
88
|
+
|
89
|
+
# @!endgroup Unicode Stylization
|
90
|
+
|
62
91
|
end # module NRSER::Ext::String
|
@@ -1,18 +1,43 @@
|
|
1
1
|
module NRSER
|
2
|
-
|
3
|
-
|
4
|
-
def erb bnd, str
|
5
|
-
require 'erb'
|
6
|
-
|
7
|
-
filter_repeated_blank_lines(
|
8
|
-
with_indent_tagged( dedent( str ) ) { |tagged_str|
|
9
|
-
ERB.new( tagged_str ).result( bnd )
|
10
|
-
},
|
11
|
-
remove_leading: true
|
12
|
-
)
|
13
|
-
end # erb
|
14
|
-
|
15
|
-
alias_method :template, :erb
|
2
|
+
def self.erb bnd, str
|
3
|
+
require 'erb'
|
16
4
|
|
17
|
-
|
5
|
+
filter_repeated_blank_lines(
|
6
|
+
with_indent_tagged( dedent( str ) ) { |tagged_str|
|
7
|
+
ERB.new( tagged_str ).result( bnd )
|
8
|
+
},
|
9
|
+
remove_leading: true
|
10
|
+
)
|
11
|
+
end # erb
|
12
|
+
|
13
|
+
singleton_class.send :alias_method, :template, :erb
|
14
|
+
|
15
|
+
|
16
|
+
# Get a {Hash} of all local variable names (as {Symbol}) to values.
|
17
|
+
#
|
18
|
+
# @param [Binding] bnd
|
19
|
+
# Binding to get locals from.
|
20
|
+
#
|
21
|
+
# @return [Hash<Symbol, Object>]
|
22
|
+
#
|
23
|
+
def self.locals bnd
|
24
|
+
NRSER.map_values( bnd.local_variables ) { |symbol, _|
|
25
|
+
bnd.local_variable_get symbol
|
26
|
+
}
|
27
|
+
end # .locals
|
28
|
+
|
29
|
+
|
30
|
+
# Get a {Array} of all local variable values.
|
31
|
+
#
|
32
|
+
# Written to facilitate checks like "all argument values are not `nil`".
|
33
|
+
#
|
34
|
+
# @param [Binding] bnd
|
35
|
+
# Binding to get locals from.
|
36
|
+
#
|
37
|
+
# @return [Array<Object>]
|
38
|
+
#
|
39
|
+
def self.local_values bnd
|
40
|
+
bnd.local_variables.map { |symbol| bnd.local_variable_get symbol }
|
41
|
+
end # .locals
|
42
|
+
|
18
43
|
end # module NRSER
|
@@ -1,16 +1,30 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative './string/looks_like'
|
4
|
+
require_relative './string/style'
|
4
5
|
|
5
6
|
module NRSER
|
6
7
|
|
7
|
-
#
|
8
|
+
# Constants
|
9
|
+
# ==========================================================================
|
8
10
|
|
11
|
+
# Regular expression used to match whitespace.
|
12
|
+
#
|
13
|
+
# @return [Regexp]
|
14
|
+
#
|
9
15
|
WHITESPACE_RE = /\A[[:space:]]*\z/
|
10
16
|
|
17
|
+
|
18
|
+
# Unicode ellipsis character.
|
19
|
+
#
|
20
|
+
# @return [String]
|
21
|
+
#
|
11
22
|
UNICODE_ELLIPSIS = '…'
|
12
23
|
|
13
24
|
|
25
|
+
# @!group String Functions
|
26
|
+
# ==========================================================================
|
27
|
+
|
14
28
|
def self.whitespace? string
|
15
29
|
string =~ WHITESPACE_RE
|
16
30
|
end
|
@@ -311,4 +325,6 @@ module NRSER
|
|
311
325
|
|
312
326
|
singleton_class.send :alias_method, :to_const, :constantize
|
313
327
|
|
328
|
+
# @!endgroup String Functions
|
329
|
+
|
314
330
|
end # module NRSER
|