tbpgr_utils 0.0.34 → 0.0.35
Sign up to get free protection for your applications and to get access to all the features.
- data/.coveralls.yml +1 -0
- data/Gemfile +3 -0
- data/README.md +38 -0
- data/lib/open_classes/array.rb +37 -1
- data/lib/tbpgr_utils/version.rb +1 -1
- data/spec/open_classes/array_spec.rb +101 -2
- data/spec/spec_helper.rb +9 -1
- metadata +13 -12
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service_name: travis-ci
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# TbpgrUtils
|
2
2
|
|
3
3
|
[![Build Status](https://travis-ci.org/tbpgr/tbpgr_utils.png?branch=master)](https://travis-ci.org/tbpgr/tbpgr_utils)
|
4
|
+
[![Coverage Status](https://coveralls.io/repos/tbpgr/tbpgr_utils/badge.png)](https://coveralls.io/r/tbpgr/tbpgr_utils)
|
4
5
|
|
5
6
|
TbpgrUtils is Utilities.
|
6
7
|
|
@@ -40,6 +41,7 @@ Or install it yourself as:
|
|
40
41
|
|[TbpgrUtils Array#together_last](#arraytogether_last) |together version of Array#last. together_last has alias :tlast |
|
41
42
|
|[TbpgrUtils Array#together_map](#arraytogether_mapor-tmap-together_collect-tcollect) |together version of Enumerable#map. together_map has aliases [:tmap, :together_collect, :tcollect] |
|
42
43
|
|[TbpgrUtils Array#together_map!](#arraytogether_map-1or-tmap-1-together_collect-1-tcollect-1) |together version of Enumerable#map!. together_map! has aliases [:tmap!, :together_collect!, :tcollect!] |
|
44
|
+
|[TbpgrUtils Array#together_pop](#arraytogether_pop) |together version of Array#pop. together_pop has alias :tpop |
|
43
45
|
|[TbpgrUtils Array#together_reduce](#arraytogether_reduceor-treduce-together_inject-tinject) |together version of Enumerable#reduce. together_reduce has aliases [:treduce, :together_inject, :tinject] |
|
44
46
|
|[TbpgrUtils Array#together_select](#arraytogether_selector-tselect-together_find_all-tfindall) |together version of Enumerable#select. together_select has aliases [:tselect, :together_find_all, :tfindall] |
|
45
47
|
|[TbpgrUtils Array#together_shift](#arraytogether_shift) |together version of Array#shift. together_shift has alias :tshift |
|
@@ -522,6 +524,41 @@ print ary # => output [['1:one', '2:two', '3:three'], ['one:1', 'two:2', 'three:
|
|
522
524
|
|
523
525
|
[back to list](#list)
|
524
526
|
|
527
|
+
### Array#together_pop(or tpop)
|
528
|
+
together_pop has alias :tpop
|
529
|
+
|
530
|
+
not empty case
|
531
|
+
~~~ruby
|
532
|
+
lists = [[1, 2], [5, 6]]
|
533
|
+
ret = lists.together_pop
|
534
|
+
print ret # => [2, 6]
|
535
|
+
print lists # => [1, 5]
|
536
|
+
~~~
|
537
|
+
|
538
|
+
empty case
|
539
|
+
~~~ruby
|
540
|
+
lists = [[], []]
|
541
|
+
ret = lists.together_pop
|
542
|
+
print ret # => [nil, nil]
|
543
|
+
print lists # => [[], []]
|
544
|
+
~~~
|
545
|
+
|
546
|
+
not empty case with args
|
547
|
+
lists = [[1, 2], [5, 6]]
|
548
|
+
ret = lists.together_pop 2
|
549
|
+
print ret # => [[1, 2], [5, 6]]
|
550
|
+
print lists # => [[], []]
|
551
|
+
~~~
|
552
|
+
|
553
|
+
not empty case with args
|
554
|
+
lists = [[], []]
|
555
|
+
ret = lists.together_pop 2
|
556
|
+
print ret # => [[], []]
|
557
|
+
print lists # => [[], []]
|
558
|
+
~~~
|
559
|
+
|
560
|
+
[back to list](#list)
|
561
|
+
|
525
562
|
### Array#together_reduce(or :treduce, :together_inject, :tinject)
|
526
563
|
* if you want to single return
|
527
564
|
|
@@ -1249,6 +1286,7 @@ if you are Sublime Text2 user, you can use snippet for TbpgrUtils.
|
|
1249
1286
|
https://github.com/tbpgr/tbpgr_utils_snippets
|
1250
1287
|
|
1251
1288
|
## History
|
1289
|
+
* version 0.0.35 : add Array#together_pop(alias tpop).
|
1252
1290
|
* version 0.0.34 : add Array#together_last(alias tlast).
|
1253
1291
|
* version 0.0.33 : add Array#together_shift(alias tshift).
|
1254
1292
|
* version 0.0.32 : add Array#together_insert(alias tinsert).
|
data/lib/open_classes/array.rb
CHANGED
@@ -533,7 +533,6 @@ class Array
|
|
533
533
|
each { |list|list.insert(index, *args) }
|
534
534
|
end
|
535
535
|
|
536
|
-
|
537
536
|
# Arrays bulk shift.
|
538
537
|
#
|
539
538
|
# together_shift has alias :tshift
|
@@ -570,6 +569,42 @@ class Array
|
|
570
569
|
end
|
571
570
|
end
|
572
571
|
|
572
|
+
# Arrays bulk pop.
|
573
|
+
#
|
574
|
+
# together_pop has alias :tpop
|
575
|
+
#
|
576
|
+
# not empty case
|
577
|
+
# lists = [[1, 2], [5, 6]]
|
578
|
+
# ret = lists.together_pop
|
579
|
+
# print ret # => [2, 6]
|
580
|
+
# print lists # => [1, 5]
|
581
|
+
#
|
582
|
+
# empty case
|
583
|
+
# lists = [[], []]
|
584
|
+
# ret = lists.together_pop
|
585
|
+
# print ret # => [nil, nil]
|
586
|
+
# print lists # => [[], []]
|
587
|
+
#
|
588
|
+
# not empty case with args
|
589
|
+
# lists = [[1, 2], [5, 6]]
|
590
|
+
# ret = lists.together_pop 2
|
591
|
+
# print ret # => [[1, 2], [5, 6]]
|
592
|
+
# print lists # => [[], []]
|
593
|
+
#
|
594
|
+
# not empty case with args
|
595
|
+
# lists = [[], []]
|
596
|
+
# ret = lists.together_pop 2
|
597
|
+
# print ret # => [[], []]
|
598
|
+
# print lists # => [[], []]
|
599
|
+
def together_pop(count = nil)
|
600
|
+
if_not_contain_array_rails_type_error
|
601
|
+
if count.nil?
|
602
|
+
reduce([]) { |ret, list|ret << list.pop }
|
603
|
+
else
|
604
|
+
reduce([]) { |ret, list|ret << list.pop(count) }
|
605
|
+
end
|
606
|
+
end
|
607
|
+
|
573
608
|
private
|
574
609
|
|
575
610
|
def if_not_contain_array_rails_type_error
|
@@ -633,6 +668,7 @@ class Array
|
|
633
668
|
alias_method :tindex, :together_index
|
634
669
|
alias_method :tinsert, :together_insert
|
635
670
|
alias_method :tshift, :together_shift
|
671
|
+
alias_method :tpop, :together_pop
|
636
672
|
alias_methods [:together_collect, :tmap, :tcollect], :together_map
|
637
673
|
alias_methods [:together_collect!, :tmap!, :tcollect!], :together_map!
|
638
674
|
alias_methods [:together_find_all, :tselect, :tfindall], :together_select
|
data/lib/tbpgr_utils/version.rb
CHANGED
@@ -1304,7 +1304,6 @@ describe Array do
|
|
1304
1304
|
end
|
1305
1305
|
end
|
1306
1306
|
|
1307
|
-
|
1308
1307
|
context :together_shift do
|
1309
1308
|
cases = [
|
1310
1309
|
{
|
@@ -1362,7 +1361,7 @@ describe Array do
|
|
1362
1361
|
has_args: true,
|
1363
1362
|
},
|
1364
1363
|
{
|
1365
|
-
case_no:
|
1364
|
+
case_no: 7,
|
1366
1365
|
case_title: 'not empty case(alias tshift)',
|
1367
1366
|
inputs: [[1, 2], [5, 6]],
|
1368
1367
|
method_name: 'tshift',
|
@@ -1483,4 +1482,104 @@ describe Array do
|
|
1483
1482
|
end
|
1484
1483
|
end
|
1485
1484
|
end
|
1485
|
+
|
1486
|
+
context :together_pop do
|
1487
|
+
cases = [
|
1488
|
+
{
|
1489
|
+
case_no: 1,
|
1490
|
+
case_title: 'not empty case',
|
1491
|
+
inputs: [[1, 2], [5, 6]],
|
1492
|
+
method_name: 'together_pop',
|
1493
|
+
expected_ret: [2, 6],
|
1494
|
+
expected_self: [[1], [5]],
|
1495
|
+
},
|
1496
|
+
{
|
1497
|
+
case_no: 2,
|
1498
|
+
case_title: 'one empty case',
|
1499
|
+
inputs: [[1, 2], []],
|
1500
|
+
method_name: 'together_pop',
|
1501
|
+
expected_ret: [2, nil],
|
1502
|
+
expected_self: [[1], []],
|
1503
|
+
},
|
1504
|
+
{
|
1505
|
+
case_no: 3,
|
1506
|
+
case_title: 'both empty case',
|
1507
|
+
inputs: [[], []],
|
1508
|
+
method_name: 'together_pop',
|
1509
|
+
expected_ret: [nil, nil],
|
1510
|
+
expected_self: [[], []],
|
1511
|
+
},
|
1512
|
+
{
|
1513
|
+
case_no: 4,
|
1514
|
+
case_title: 'not empty, has args case',
|
1515
|
+
inputs: [[1, 2], [5, 6]],
|
1516
|
+
method_name: 'together_pop',
|
1517
|
+
args: 2,
|
1518
|
+
expected_ret: [[1, 2], [5, 6]],
|
1519
|
+
expected_self: [[], []],
|
1520
|
+
has_args: true,
|
1521
|
+
},
|
1522
|
+
{
|
1523
|
+
case_no: 5,
|
1524
|
+
case_title: 'one empty, has args case',
|
1525
|
+
inputs: [[1, 2], []],
|
1526
|
+
method_name: 'together_pop',
|
1527
|
+
args: 2,
|
1528
|
+
expected_ret: [[1, 2], []],
|
1529
|
+
expected_self: [[], []],
|
1530
|
+
has_args: true,
|
1531
|
+
},
|
1532
|
+
{
|
1533
|
+
case_no: 6,
|
1534
|
+
case_title: 'both empty, has args case',
|
1535
|
+
inputs: [[], []],
|
1536
|
+
method_name: 'together_pop',
|
1537
|
+
args: 2,
|
1538
|
+
expected_ret: [[], []],
|
1539
|
+
expected_self: [[], []],
|
1540
|
+
has_args: true,
|
1541
|
+
},
|
1542
|
+
{
|
1543
|
+
case_no: 7,
|
1544
|
+
case_title: 'not empty case(alias tpop)',
|
1545
|
+
inputs: [[1, 2], [5, 6]],
|
1546
|
+
method_name: 'tpop',
|
1547
|
+
expected_ret: [1, 5],
|
1548
|
+
expected_self: [[2], [6]],
|
1549
|
+
},
|
1550
|
+
]
|
1551
|
+
|
1552
|
+
cases.each do |c|
|
1553
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
1554
|
+
begin
|
1555
|
+
case_before c
|
1556
|
+
|
1557
|
+
# -- given --
|
1558
|
+
# nothing
|
1559
|
+
|
1560
|
+
# -- when --
|
1561
|
+
actual = \
|
1562
|
+
if c[:has_args]
|
1563
|
+
c[:inputs].send c[:method_name], c[:args]
|
1564
|
+
else
|
1565
|
+
c[:inputs].send c[:method_name]
|
1566
|
+
end
|
1567
|
+
|
1568
|
+
# -- then --
|
1569
|
+
expect(actual).to eq(c[:expected_ret])
|
1570
|
+
expect(c[:inputs]).to eq(c[:expected_self])
|
1571
|
+
ensure
|
1572
|
+
case_after c
|
1573
|
+
end
|
1574
|
+
end
|
1575
|
+
|
1576
|
+
def case_before(c)
|
1577
|
+
# implement each case before
|
1578
|
+
end
|
1579
|
+
|
1580
|
+
def case_after(c)
|
1581
|
+
# implement each case after
|
1582
|
+
end
|
1583
|
+
end
|
1584
|
+
end
|
1486
1585
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'simplecov'
|
3
|
-
|
3
|
+
require 'coveralls'
|
4
|
+
Coveralls.wear!
|
5
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
6
|
+
SimpleCov::Formatter::HTMLFormatter,
|
7
|
+
Coveralls::SimpleCov::Formatter
|
8
|
+
]
|
9
|
+
SimpleCov.start do
|
10
|
+
add_filter "/spec/"
|
11
|
+
end
|
4
12
|
RSpec.configure do |config|
|
5
13
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
6
14
|
config.run_all_when_everything_filtered = true
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tbpgr_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.35
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-02-
|
12
|
+
date: 2014-02-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &28801860 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 4.0.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *28801860
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &28801428 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '1.3'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *28801428
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &28800936 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *28800936
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &28800480 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 2.14.1
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *28800480
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: simplecov
|
60
|
-
requirement: &
|
60
|
+
requirement: &28800036 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: 0.8.2
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *28800036
|
69
69
|
description: Utilities
|
70
70
|
email:
|
71
71
|
- tbpgr@tbpgr.jp
|
@@ -73,6 +73,7 @@ executables: []
|
|
73
73
|
extensions: []
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
|
+
- .coveralls.yml
|
76
77
|
- .gitignore
|
77
78
|
- .rspec
|
78
79
|
- .rubocop.yml
|