nrser 0.1.4 → 0.2.0.pre.0
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 +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
|