thefox-ext 1.6.3.pre.rc.4 → 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/workflows/ci.yml +4 -2
- data/.github/workflows/release.yml +1 -3
- data/CHANGELOG-v1.md +21 -1
- data/README.md +1 -1
- data/bin/dev +13 -0
- data/lib/thefox-ext/ext/array.rb +6 -6
- data/lib/thefox-ext/ext/string.rb +67 -0
- data/lib/thefox-ext/version.rb +1 -1
- data/thefox-ext.gemspec +1 -1
- metadata +5 -9
- data/bin/.gitignore +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 569a588809c70468e59dc2d762bf261d94108cc4d9c535c664c518c99b820914
|
4
|
+
data.tar.gz: 9307e0cf0b76da29e09537bc93e7e77f70137dcb69621d94089ad24f08a080d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e8c14d434bd57584ae5f72d2c99923af6da39c0e88b1e2cee8afb5f03776d1997be3a994e54f97632c9b96e7f280a4e2249717cdb1d4ee1163f9be7c8c98e20
|
7
|
+
data.tar.gz: 5f4527fb0be38f6e1c4018a8896374475405565907484d894e5294bdb43f989050f1af2217b25c12095d454a64f162fd148355a0685218560d6ad1e085e6c735
|
data/.github/workflows/ci.yml
CHANGED
@@ -10,8 +10,6 @@ on:
|
|
10
10
|
push:
|
11
11
|
branches:
|
12
12
|
- master
|
13
|
-
tags:
|
14
|
-
- v*
|
15
13
|
|
16
14
|
jobs:
|
17
15
|
test:
|
@@ -21,6 +19,10 @@ jobs:
|
|
21
19
|
ruby-version:
|
22
20
|
- '2.3'
|
23
21
|
- '2.4'
|
22
|
+
- '2.5'
|
23
|
+
- '2.6'
|
24
|
+
- '2.7'
|
25
|
+
- '3.0'
|
24
26
|
steps:
|
25
27
|
- uses: actions/checkout@v2
|
26
28
|
- name: Set up Ruby
|
@@ -17,7 +17,7 @@ jobs:
|
|
17
17
|
strategy:
|
18
18
|
matrix:
|
19
19
|
ruby-version:
|
20
|
-
- '
|
20
|
+
- '3.0'
|
21
21
|
steps:
|
22
22
|
- uses: actions/checkout@v2
|
23
23
|
- name: Set up Ruby
|
@@ -32,7 +32,5 @@ jobs:
|
|
32
32
|
run: |
|
33
33
|
mkdir -p ~/.gem
|
34
34
|
printf "%s\n:rubygems_api_key: %s" "---" "${RUBYGEMSORG_API_KEY}" > ~/.gem/credentials; chmod 0600 ~/.gem/credentials
|
35
|
-
- name: Install
|
36
|
-
run: ./bin/install.sh
|
37
35
|
- name: Release
|
38
36
|
run: ./bin/release.sh
|
data/CHANGELOG-v1.md
CHANGED
@@ -1,6 +1,26 @@
|
|
1
1
|
# Release Notes for Extended Ruby Classes v1.x
|
2
2
|
|
3
|
-
## v1.
|
3
|
+
## v1.9.0
|
4
|
+
|
5
|
+
- Tests
|
6
|
+
- Array Ranges
|
7
|
+
|
8
|
+
## v1.8.0
|
9
|
+
|
10
|
+
- Ruby v3 Support
|
11
|
+
|
12
|
+
## v1.7.0
|
13
|
+
|
14
|
+
- GitHub Actions
|
15
|
+
- Ruby Support: 2.4, 2.5, 2.6, 2.7
|
16
|
+
|
17
|
+
## v1.6.3 [unreleased]
|
18
|
+
|
19
|
+
Only RCs.
|
20
|
+
|
21
|
+
## v1.6.1
|
22
|
+
|
23
|
+
- Deployment
|
4
24
|
|
5
25
|
## v1.6.0
|
6
26
|
|
data/README.md
CHANGED
data/bin/dev
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# coding: UTF-8
|
3
|
+
|
4
|
+
require 'thefox-ext'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
# pp '5{1,2}'.resolve_range()
|
8
|
+
# pp '1,2{1-3,5,6,7},4,5{1,2}'.resolve_range()
|
9
|
+
# pp [1, 2].resolve_range_str('3, 4')
|
10
|
+
# pp Array.resolve_range_str('3,4')
|
11
|
+
# pp '3, 4'.resolve_range()
|
12
|
+
# pp '3, 4'.resolve_range()
|
13
|
+
# pp '3, 4'.resolve_range2()
|
data/lib/thefox-ext/ext/array.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
|
2
2
|
class Array
|
3
3
|
|
4
|
-
#
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
# DEPRECATED: will be removed in v1.10.0.
|
5
|
+
def self.resolve_range_str(original_str, prefix = '')
|
6
|
+
warn "[DEPRECATION] `Array.resolve_range_str` is deprecated. Please use `String.resolve_range` instead."
|
7
|
+
|
8
8
|
rv = Array.new
|
9
9
|
if !original_str.is_a?(String)
|
10
10
|
return rv
|
@@ -24,13 +24,13 @@ class Array
|
|
24
24
|
else
|
25
25
|
item_striped.to_i
|
26
26
|
end
|
27
|
-
}.each
|
27
|
+
}.each{ |range|
|
28
28
|
if range.is_a?(Range)
|
29
29
|
rv.push(*range.to_a)
|
30
30
|
else
|
31
31
|
rv << range
|
32
32
|
end
|
33
|
-
|
33
|
+
}
|
34
34
|
|
35
35
|
rv
|
36
36
|
end
|
@@ -63,4 +63,71 @@ class String
|
|
63
63
|
self.force_encoding('ISO-8859-1').encode('UTF-8')
|
64
64
|
end
|
65
65
|
end
|
66
|
+
|
67
|
+
# Resolve a range string to an array.
|
68
|
+
# A range string can be like '1, 3..5, 9-11, 12+, 14++, 17+++'.
|
69
|
+
# Which will be resolved to [1, 3, 4, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20].
|
70
|
+
def resolve_range(prefix = '')
|
71
|
+
# puts '-> resolve_range: %s {%s}' % [self, prefix]
|
72
|
+
|
73
|
+
rv = Array.new
|
74
|
+
|
75
|
+
items1 = self.split(',')
|
76
|
+
# pp items1
|
77
|
+
|
78
|
+
items2 = []
|
79
|
+
is_sub_range = false
|
80
|
+
sub_item = []
|
81
|
+
items1.each do |item|
|
82
|
+
if item.count('{') > 0
|
83
|
+
is_sub_range = true
|
84
|
+
end
|
85
|
+
if is_sub_range
|
86
|
+
sub_item.push(item)
|
87
|
+
else
|
88
|
+
items2.push(item)
|
89
|
+
end
|
90
|
+
if item.count('}') > 0
|
91
|
+
is_sub_range = false
|
92
|
+
items2.push(sub_item.join(','))
|
93
|
+
sub_item = []
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
# pp items2
|
98
|
+
|
99
|
+
items2.map{ |item|
|
100
|
+
item_striped = item.strip
|
101
|
+
if range_match = item_striped.match(/(\d+)\{([\d\-\+,]+)\}/)
|
102
|
+
range_match[2].resolve_range(range_match[1])
|
103
|
+
elsif /\.\./.match(item_striped) # ( . )( . ) <--- BOOBS
|
104
|
+
Range.new(*item_striped.split('..', 2).map{ |range| range.to_i })
|
105
|
+
elsif /-/.match(item_striped)
|
106
|
+
Range.new(*item_striped.split('-', 2).map{ |range| range.to_i })
|
107
|
+
elsif /\+/.match(item_striped)
|
108
|
+
items = item_striped.split('+')
|
109
|
+
range_begin = items[0].to_i
|
110
|
+
range_end = range_begin + item_striped.count('+')
|
111
|
+
Range.new(range_begin, range_end)
|
112
|
+
else
|
113
|
+
item_striped.to_i
|
114
|
+
end
|
115
|
+
}.each{ |range|
|
116
|
+
if range.is_a?(Range)
|
117
|
+
rv.push(*range.to_a)
|
118
|
+
elsif range.is_a?(Array)
|
119
|
+
rv.push(*range)
|
120
|
+
else
|
121
|
+
rv << range
|
122
|
+
end
|
123
|
+
}
|
124
|
+
|
125
|
+
if !prefix.empty?
|
126
|
+
rv = rv.map { |i|
|
127
|
+
(prefix + i.to_s).to_i
|
128
|
+
}
|
129
|
+
end
|
130
|
+
|
131
|
+
rv
|
132
|
+
end
|
66
133
|
end
|
data/lib/thefox-ext/version.rb
CHANGED
data/thefox-ext.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
|
20
20
|
spec.files = `git ls-files -z`.split("\x0").reject{ |f| f.match(%r{^(test|spec|features)/}) }
|
21
21
|
spec.require_paths = ['lib']
|
22
|
-
spec.required_ruby_version = ['>=2.3.0'
|
22
|
+
spec.required_ruby_version = ['>=2.3.0']
|
23
23
|
|
24
24
|
spec.add_development_dependency 'minitest', '~>5.8'
|
25
25
|
spec.add_development_dependency 'simplecov', '~>0.13'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thefox-ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Mayer
|
@@ -67,7 +67,7 @@ files:
|
|
67
67
|
- Gemfile
|
68
68
|
- LICENSE
|
69
69
|
- README.md
|
70
|
-
- bin
|
70
|
+
- bin/dev
|
71
71
|
- bin/install.sh
|
72
72
|
- bin/release.sh
|
73
73
|
- bin/setup.sh
|
@@ -99,17 +99,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
99
99
|
- - ">="
|
100
100
|
- !ruby/object:Gem::Version
|
101
101
|
version: 2.3.0
|
102
|
-
- - "<"
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
version: '3.0'
|
105
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
103
|
requirements:
|
107
|
-
- - "
|
104
|
+
- - ">="
|
108
105
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
106
|
+
version: '0'
|
110
107
|
requirements: []
|
111
|
-
|
112
|
-
rubygems_version: 2.6.14.4
|
108
|
+
rubygems_version: 3.2.3
|
113
109
|
signing_key:
|
114
110
|
specification_version: 4
|
115
111
|
summary: Extended Ruby Classes
|
data/bin/.gitignore
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
dev
|