nrser 0.1.3 → 0.1.4
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 +10 -12
- data/lib/nrser/ext.rb +1 -0
- data/lib/nrser/ext/enumerable.rb +6 -0
- data/lib/nrser/ext/string.rb +62 -0
- data/lib/nrser/functions/enumerable.rb +1 -0
- data/lib/nrser/functions/enumerable/include_slice.rb +84 -0
- data/lib/nrser/functions/enumerable/include_slice/array_include_slice.rb +80 -0
- data/lib/nrser/functions/text.rb +1 -0
- data/lib/nrser/functions/text/words.rb +23 -0
- data/lib/nrser/labs.rb +13 -0
- data/lib/nrser/labs/globlin.rb +106 -0
- data/lib/nrser/labs/index.rb +89 -0
- data/lib/nrser/{temp → labs}/unicode_math.rb +2 -2
- data/lib/nrser/{temp → labs}/where.rb +2 -4
- data/lib/nrser/meta/props.rb +13 -7
- data/lib/nrser/meta/props/prop.rb +144 -86
- data/lib/nrser/refinements/exception.rb +2 -2
- data/lib/nrser/refinements/string.rb +1 -51
- data/lib/nrser/rspex/example_group/describe_spec_file.rb +20 -0
- data/lib/nrser/version.rb +21 -1
- data/spec/nrser/functions/enumerable/include_slice_spec.rb +28 -0
- data/spec/nrser/functions/text/words_spec.rb +17 -0
- data/spec/nrser/labs/globlin_spec.rb +61 -0
- data/spec/nrser/labs/index_spec.rb +87 -0
- data/spec/spec_helper.rb +16 -0
- metadata +19 -4
@@ -1,55 +1,5 @@
|
|
1
1
|
module NRSER
|
2
2
|
refine String do
|
3
|
-
|
4
|
-
NRSER.squish self
|
5
|
-
end
|
6
|
-
|
7
|
-
|
8
|
-
def unblock
|
9
|
-
NRSER.unblock self
|
10
|
-
end
|
11
|
-
|
12
|
-
|
13
|
-
def dedent
|
14
|
-
NRSER.dedent self
|
15
|
-
end
|
16
|
-
|
17
|
-
|
18
|
-
def indent *args
|
19
|
-
NRSER.indent self, *args
|
20
|
-
end
|
21
|
-
|
22
|
-
|
23
|
-
def truncate *args
|
24
|
-
NRSER.truncate self, *args
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
# See {NRSER.constantize}
|
29
|
-
def constantize
|
30
|
-
NRSER.constantize self
|
31
|
-
end
|
32
|
-
|
33
|
-
alias_method :to_const, :constantize
|
34
|
-
|
35
|
-
|
36
|
-
# @return [Pathname]
|
37
|
-
# Convert self into a {Pathname}
|
38
|
-
#
|
39
|
-
def to_pn
|
40
|
-
Pathname.new self
|
41
|
-
end
|
42
|
-
|
43
|
-
|
44
|
-
def whitespace?
|
45
|
-
NRSER.whitespace? self
|
46
|
-
end
|
47
|
-
|
48
|
-
|
49
|
-
# Calls {NRSER.ellipsis} on `self`.
|
50
|
-
def ellipsis *args
|
51
|
-
NRSER.ellipsis self, *args
|
52
|
-
end
|
53
|
-
|
3
|
+
include NRSER::Ext::String
|
54
4
|
end # refine String
|
55
5
|
end # NRSER
|
@@ -59,6 +59,26 @@ module NRSER::RSpex::ExampleGroup
|
|
59
59
|
file, line = instance_method.source_location
|
60
60
|
|
61
61
|
name = "#{ klass.name }##{ metadata[:instance_method] }"
|
62
|
+
|
63
|
+
elsif metadata[:method]
|
64
|
+
# Class method
|
65
|
+
meth = metadata[:class].method metadata[:method]
|
66
|
+
file, line = meth.source_location
|
67
|
+
path = Pathname.new file
|
68
|
+
loc = "./#{ path.relative_path_from Pathname.getwd }:#{ line }"
|
69
|
+
|
70
|
+
spec_rel_path = \
|
71
|
+
"./#{ Pathname.new( spec_path ).relative_path_from Pathname.getwd }"
|
72
|
+
|
73
|
+
desc = [
|
74
|
+
"#{ metadata[:class].name }.#{ metadata[:method] }",
|
75
|
+
"(#{ loc })",
|
76
|
+
description,
|
77
|
+
"Spec (#{ spec_rel_path})"
|
78
|
+
].compact.join " "
|
79
|
+
|
80
|
+
subj = meth
|
81
|
+
|
62
82
|
else
|
63
83
|
name = klass.name
|
64
84
|
|
data/lib/nrser/version.rb
CHANGED
@@ -1,5 +1,25 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
1
3
|
module NRSER
|
2
|
-
|
4
|
+
# Absolute, expanded path to the gem's root directory.
|
5
|
+
#
|
6
|
+
# Here in `//lib/nrser/version` so that it can be used via
|
7
|
+
#
|
8
|
+
# require 'nrser/version'
|
9
|
+
#
|
10
|
+
# without loading the entire module.
|
11
|
+
#
|
12
|
+
# @return [Pathname]
|
13
|
+
#
|
14
|
+
ROOT = ( Pathname.new( __FILE__ ).dirname / '..' / '..' ).expand_path
|
15
|
+
|
16
|
+
|
17
|
+
# String version of the gem.
|
18
|
+
#
|
19
|
+
# @return [String]
|
20
|
+
#
|
21
|
+
VERSION = "0.1.4"
|
22
|
+
|
3
23
|
|
4
24
|
module Version
|
5
25
|
|
@@ -0,0 +1,28 @@
|
|
1
|
+
describe_spec_file(
|
2
|
+
spec_path: __FILE__,
|
3
|
+
module: NRSER,
|
4
|
+
method: :slice?,
|
5
|
+
) do
|
6
|
+
|
7
|
+
it_behaves_like "function",
|
8
|
+
mapping: {
|
9
|
+
[ [1, 2, 3], [] ] => true,
|
10
|
+
[ [1, 2, 3], [1] ] => true,
|
11
|
+
[ [1, 2, 3], [1, 2] ] => true,
|
12
|
+
[ [1, 2, 3], [1, 2, 3] ] => true,
|
13
|
+
[ [1, 2, 3], [2] ] => true,
|
14
|
+
[ [1, 2, 3], [2, 3] ] => true,
|
15
|
+
[ [1, 2, 3], [3] ] => true,
|
16
|
+
[ [1, 2, 1, 2, 3], [1, 2, 3] ] => true,
|
17
|
+
|
18
|
+
[ [1, 2, 3], [1, 3] ] => false,
|
19
|
+
[ [1, 2, 3], [1, 2, 3, 4] ] => false,
|
20
|
+
|
21
|
+
[ [1, 2, 3], [4] ] => false,
|
22
|
+
[ [1, 2, 3], [4, 5] ] => false,
|
23
|
+
|
24
|
+
# Doesn't work for now...
|
25
|
+
# [(1..5), (2..3)] => true,
|
26
|
+
}
|
27
|
+
|
28
|
+
end # spec file
|
@@ -0,0 +1,17 @@
|
|
1
|
+
describe_spec_file(
|
2
|
+
spec_path: __FILE__,
|
3
|
+
module: NRSER,
|
4
|
+
method: :words,
|
5
|
+
) do
|
6
|
+
it_behaves_like "function",
|
7
|
+
mapping: {
|
8
|
+
'some-words' => ['some', 'words'],
|
9
|
+
'NRSER' => ['NRSER'],
|
10
|
+
'NRSER::Text' => ['NRSER', 'Text'],
|
11
|
+
|
12
|
+
# Doesn't de-camel
|
13
|
+
'NRSER::RSpex' => ['NRSER', 'RSpex'],
|
14
|
+
|
15
|
+
|
16
|
+
}
|
17
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'nrser/labs/globlin'
|
2
|
+
|
3
|
+
describe_spec_file(
|
4
|
+
spec_path: __FILE__,
|
5
|
+
class: NRSER::Labs::Globlin,
|
6
|
+
labs: true, # run with `LABS=1 rspec ...` to include
|
7
|
+
) do
|
8
|
+
it "scratch" do
|
9
|
+
|
10
|
+
items = [
|
11
|
+
'qb/git/ignore',
|
12
|
+
'qb/call',
|
13
|
+
'qb/dev/ref/repo/git',
|
14
|
+
'qb/dump/vars',
|
15
|
+
'qb/facts',
|
16
|
+
'qb/git/check/clean',
|
17
|
+
'qb/git/repo',
|
18
|
+
'qb/github/pages/setup',
|
19
|
+
'qb/osx/git/change_case',
|
20
|
+
'qb/osx/notif',
|
21
|
+
'qb/pkg/bump',
|
22
|
+
'qb/project',
|
23
|
+
'qb/role',
|
24
|
+
'qb/role/qb',
|
25
|
+
'qb/rspex/generate',
|
26
|
+
'qb/rspex/issue',
|
27
|
+
'qb/ruby/bundler',
|
28
|
+
'qb/ruby/dependency',
|
29
|
+
'qb/ruby/gem/bin_stubs',
|
30
|
+
'qb/ruby/gem/build',
|
31
|
+
'qb/ruby/gem/install',
|
32
|
+
'qb/ruby/gem/new',
|
33
|
+
'qb/ruby/gem/release',
|
34
|
+
'qb/ruby/rspec/setup',
|
35
|
+
'qb/ruby/yard/clean',
|
36
|
+
'qb/ruby/yard/config',
|
37
|
+
'qb/ruby/yard/setup',
|
38
|
+
'qb/yarn/setup',
|
39
|
+
'qb.git_submodule_update',
|
40
|
+
'qb.hack_npm',
|
41
|
+
'qb.install',
|
42
|
+
'qb.npm_package',
|
43
|
+
'qb.package_json_info',
|
44
|
+
'qb.qb_setup',
|
45
|
+
'qb.read_json',
|
46
|
+
'qb.unhack_gem',
|
47
|
+
'qb.yarn_release',
|
48
|
+
]
|
49
|
+
|
50
|
+
def split_item item
|
51
|
+
item.split( /[\.\/]/ )
|
52
|
+
end
|
53
|
+
|
54
|
+
g = NRSER::Globlin.new \
|
55
|
+
split: [/[\/\.]/, :words],
|
56
|
+
ignore: [:case]
|
57
|
+
|
58
|
+
g.find_only! 'git/repo'
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'nrser/labs/index'
|
2
|
+
|
3
|
+
describe_spec_file(
|
4
|
+
spec_path: __FILE__,
|
5
|
+
class: NRSER::Labs::Index,
|
6
|
+
labs: true, # run with `LABS=1 rspec ...` to include
|
7
|
+
) do
|
8
|
+
it "scratch" do
|
9
|
+
|
10
|
+
items = [
|
11
|
+
'qb/git/ignore',
|
12
|
+
'qb/call',
|
13
|
+
'qb/dev/ref/repo/git',
|
14
|
+
'qb/dump/vars',
|
15
|
+
'qb/facts',
|
16
|
+
'qb/git/check/clean',
|
17
|
+
'qb/git/repo',
|
18
|
+
'qb/github/pages/setup',
|
19
|
+
'qb/osx/git/change_case',
|
20
|
+
'qb/osx/notif',
|
21
|
+
'qb/pkg/bump',
|
22
|
+
'qb/project',
|
23
|
+
'qb/role',
|
24
|
+
'qb/role/qb',
|
25
|
+
'qb/rspex/generate',
|
26
|
+
'qb/rspex/issue',
|
27
|
+
'qb/ruby/bundler',
|
28
|
+
'qb/ruby/dependency',
|
29
|
+
'qb/ruby/gem/bin_stubs',
|
30
|
+
'qb/ruby/gem/build',
|
31
|
+
'qb/ruby/gem/install',
|
32
|
+
'qb/ruby/gem/new',
|
33
|
+
'qb/ruby/gem/release',
|
34
|
+
'qb/ruby/rspec/setup',
|
35
|
+
'qb/ruby/yard/clean',
|
36
|
+
'qb/ruby/yard/config',
|
37
|
+
'qb/ruby/yard/setup',
|
38
|
+
'qb/yarn/setup',
|
39
|
+
'qb.git_submodule_update',
|
40
|
+
'qb.hack_npm',
|
41
|
+
'qb.install',
|
42
|
+
'qb.npm_package',
|
43
|
+
'qb.package_json_info',
|
44
|
+
'qb.qb_setup',
|
45
|
+
'qb.read_json',
|
46
|
+
'qb.unhack_gem',
|
47
|
+
'qb.yarn_release',
|
48
|
+
]
|
49
|
+
|
50
|
+
def split_item item
|
51
|
+
item.split( /[\.\/]/ )
|
52
|
+
end
|
53
|
+
|
54
|
+
expect( split_item 'qb/git/repo' ).to eq ['qb', 'git', 'repo']
|
55
|
+
expect( split_item 'qb/git/repo' ).to have_attributes length: 3
|
56
|
+
|
57
|
+
# Index one thing
|
58
|
+
index = described_class.new( items ) { |item|
|
59
|
+
split_item( item ).length
|
60
|
+
}
|
61
|
+
|
62
|
+
expect( index.key_for 'qb/git/repo' ).to be 3
|
63
|
+
|
64
|
+
expect( index.keys ).to include 2, 3, 4, 5
|
65
|
+
|
66
|
+
expect( index[3] ).to include 'qb/role/qb'
|
67
|
+
|
68
|
+
expect( index[3] ).to eq Set.new items.select { |item|
|
69
|
+
split_item( item ).length == 3
|
70
|
+
}
|
71
|
+
|
72
|
+
expect( true ).to be false
|
73
|
+
|
74
|
+
# # Index multiple things
|
75
|
+
# names_index = NRSER::Index.new( items ) { |item|
|
76
|
+
# seg = item.split( /\.\// ).length,
|
77
|
+
#
|
78
|
+
# {
|
79
|
+
# seg_count: segs.length,
|
80
|
+
# namespace: segs.first,
|
81
|
+
# }
|
82
|
+
# }
|
83
|
+
#
|
84
|
+
# names_index[:seg_count]
|
85
|
+
|
86
|
+
end
|
87
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -7,6 +7,12 @@ require 'nrser'
|
|
7
7
|
require 'nrser/logger'
|
8
8
|
require 'nrser/rspex'
|
9
9
|
|
10
|
+
RSpec.configure do |config|
|
11
|
+
unless ENV['LABS']
|
12
|
+
config.filter_run_excluding labs: true
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
10
16
|
|
11
17
|
# Dumping ground for classes and modules that we need to create for tests.
|
12
18
|
#
|
@@ -30,6 +36,16 @@ LOG_LEVELS = {
|
|
30
36
|
|
31
37
|
BAD_LOG_LEVELS = [:blah, -1, 6, "BLAH"]
|
32
38
|
|
39
|
+
|
40
|
+
if ENV['DEBUG']
|
41
|
+
SemanticLogger.default_level = :debug
|
42
|
+
SemanticLogger.add_appender(
|
43
|
+
io: $stderr,
|
44
|
+
formatter: { color: {ap: { multiline: true } }}
|
45
|
+
)
|
46
|
+
end
|
47
|
+
|
48
|
+
|
33
49
|
def expect_to_log &block
|
34
50
|
expect(&block).to output.to_stderr_from_any_process
|
35
51
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nrser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nrser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hamster
|
@@ -227,6 +227,7 @@ files:
|
|
227
227
|
- lib/nrser/ext.rb
|
228
228
|
- lib/nrser/ext/enumerable.rb
|
229
229
|
- lib/nrser/ext/pathname.rb
|
230
|
+
- lib/nrser/ext/string.rb
|
230
231
|
- lib/nrser/ext/tree.rb
|
231
232
|
- lib/nrser/functions.rb
|
232
233
|
- lib/nrser/functions/array.rb
|
@@ -234,6 +235,8 @@ files:
|
|
234
235
|
- lib/nrser/functions/enumerable.rb
|
235
236
|
- lib/nrser/functions/enumerable/find_all_map.rb
|
236
237
|
- lib/nrser/functions/enumerable/find_map.rb
|
238
|
+
- lib/nrser/functions/enumerable/include_slice.rb
|
239
|
+
- lib/nrser/functions/enumerable/include_slice/array_include_slice.rb
|
237
240
|
- lib/nrser/functions/exception.rb
|
238
241
|
- lib/nrser/functions/git.rb
|
239
242
|
- lib/nrser/functions/hash.rb
|
@@ -259,6 +262,7 @@ files:
|
|
259
262
|
- lib/nrser/functions/text/indentation.rb
|
260
263
|
- lib/nrser/functions/text/lines.rb
|
261
264
|
- lib/nrser/functions/text/word_wrap.rb
|
265
|
+
- lib/nrser/functions/text/words.rb
|
262
266
|
- lib/nrser/functions/tree.rb
|
263
267
|
- lib/nrser/functions/tree/each_branch.rb
|
264
268
|
- lib/nrser/functions/tree/leaves.rb
|
@@ -266,6 +270,11 @@ files:
|
|
266
270
|
- lib/nrser/functions/tree/map_leaves.rb
|
267
271
|
- lib/nrser/functions/tree/map_tree.rb
|
268
272
|
- lib/nrser/functions/tree/transform.rb
|
273
|
+
- lib/nrser/labs.rb
|
274
|
+
- lib/nrser/labs/globlin.rb
|
275
|
+
- lib/nrser/labs/index.rb
|
276
|
+
- lib/nrser/labs/unicode_math.rb
|
277
|
+
- lib/nrser/labs/where.rb
|
269
278
|
- lib/nrser/logger.rb
|
270
279
|
- lib/nrser/mean_streak.rb
|
271
280
|
- lib/nrser/mean_streak/document.rb
|
@@ -300,8 +309,6 @@ files:
|
|
300
309
|
- lib/nrser/rspex/example_group/describe_x.rb
|
301
310
|
- lib/nrser/rspex/format.rb
|
302
311
|
- lib/nrser/rspex/shared_examples.rb
|
303
|
-
- lib/nrser/temp/unicode_math.rb
|
304
|
-
- lib/nrser/temp/where.rb
|
305
312
|
- lib/nrser/types.rb
|
306
313
|
- lib/nrser/types/any.rb
|
307
314
|
- lib/nrser/types/array.rb
|
@@ -337,6 +344,7 @@ files:
|
|
337
344
|
- spec/nrser/functions/enumerable/find_bounded_spec.rb
|
338
345
|
- spec/nrser/functions/enumerable/find_map_spec.rb
|
339
346
|
- spec/nrser/functions/enumerable/find_only_spec.rb
|
347
|
+
- spec/nrser/functions/enumerable/include_slice_spec.rb
|
340
348
|
- spec/nrser/functions/enumerable/to_h_by_spec.rb
|
341
349
|
- spec/nrser/functions/exception/format_exception_spec.rb
|
342
350
|
- spec/nrser/functions/hash/bury_spec.rb
|
@@ -351,12 +359,15 @@ files:
|
|
351
359
|
- spec/nrser/functions/text/dedent/gotchas_spec.rb
|
352
360
|
- spec/nrser/functions/text/dedent_spec.rb
|
353
361
|
- spec/nrser/functions/text/indent_spec.rb
|
362
|
+
- spec/nrser/functions/text/words_spec.rb
|
354
363
|
- spec/nrser/functions/tree/each_branch_spec.rb
|
355
364
|
- spec/nrser/functions/tree/leaves_spec.rb
|
356
365
|
- spec/nrser/functions/tree/map_branch_spec.rb
|
357
366
|
- spec/nrser/functions/tree/map_tree_spec.rb
|
358
367
|
- spec/nrser/functions/tree/transform_spec.rb
|
359
368
|
- spec/nrser/functions/tree/transformer_spec.rb
|
369
|
+
- spec/nrser/labs/globlin_spec.rb
|
370
|
+
- spec/nrser/labs/index_spec.rb
|
360
371
|
- spec/nrser/logger/dest_spec.rb
|
361
372
|
- spec/nrser/logger/die_spec.rb
|
362
373
|
- spec/nrser/logger/install_spec.rb
|
@@ -425,6 +436,7 @@ test_files:
|
|
425
436
|
- spec/nrser/functions/enumerable/find_bounded_spec.rb
|
426
437
|
- spec/nrser/functions/enumerable/find_map_spec.rb
|
427
438
|
- spec/nrser/functions/enumerable/find_only_spec.rb
|
439
|
+
- spec/nrser/functions/enumerable/include_slice_spec.rb
|
428
440
|
- spec/nrser/functions/enumerable/to_h_by_spec.rb
|
429
441
|
- spec/nrser/functions/exception/format_exception_spec.rb
|
430
442
|
- spec/nrser/functions/hash/bury_spec.rb
|
@@ -439,12 +451,15 @@ test_files:
|
|
439
451
|
- spec/nrser/functions/text/dedent/gotchas_spec.rb
|
440
452
|
- spec/nrser/functions/text/dedent_spec.rb
|
441
453
|
- spec/nrser/functions/text/indent_spec.rb
|
454
|
+
- spec/nrser/functions/text/words_spec.rb
|
442
455
|
- spec/nrser/functions/tree/each_branch_spec.rb
|
443
456
|
- spec/nrser/functions/tree/leaves_spec.rb
|
444
457
|
- spec/nrser/functions/tree/map_branch_spec.rb
|
445
458
|
- spec/nrser/functions/tree/map_tree_spec.rb
|
446
459
|
- spec/nrser/functions/tree/transform_spec.rb
|
447
460
|
- spec/nrser/functions/tree/transformer_spec.rb
|
461
|
+
- spec/nrser/labs/globlin_spec.rb
|
462
|
+
- spec/nrser/labs/index_spec.rb
|
448
463
|
- spec/nrser/logger/dest_spec.rb
|
449
464
|
- spec/nrser/logger/die_spec.rb
|
450
465
|
- spec/nrser/logger/install_spec.rb
|