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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: fb29dbe2b611a1e90870883e49ed7f76ae04e5c7
4
- data.tar.gz: 116453f66db3968ee85a1580640ce0bfaba857f8
2
+ SHA256:
3
+ metadata.gz: 569a588809c70468e59dc2d762bf261d94108cc4d9c535c664c518c99b820914
4
+ data.tar.gz: 9307e0cf0b76da29e09537bc93e7e77f70137dcb69621d94089ad24f08a080d2
5
5
  SHA512:
6
- metadata.gz: 36a74d9e537ff7719d1f55c8c29bc4d885271d273b437b63f1dd3611f45607a017a5a264ca4faaa5613282d5c26e71de60518f342b170af5c358cc8fc62aa21c
7
- data.tar.gz: ec59119bc45373620c74a7e13c856a4c4f8c9bc482a091395a73b302707c0967ac22ae6089611f73ebf58cf479f6d3e87c5e6b74be0569adeb3044a4427dc9fb
6
+ metadata.gz: 4e8c14d434bd57584ae5f72d2c99923af6da39c0e88b1e2cee8afb5f03776d1997be3a994e54f97632c9b96e7f280a4e2249717cdb1d4ee1163f9be7c8c98e20
7
+ data.tar.gz: 5f4527fb0be38f6e1c4018a8896374475405565907484d894e5294bdb43f989050f1af2217b25c12095d454a64f162fd148355a0685218560d6ad1e085e6c735
@@ -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
- - '2.4'
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.7.0 [unreleased]
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
@@ -21,7 +21,7 @@ gem install thefox-ext
21
21
  or via `Gemfile`:
22
22
 
23
23
  ```ruby
24
- gem 'thefox-ext', '~>1.5'
24
+ gem 'thefox-ext', '~>1.9'
25
25
  ```
26
26
 
27
27
  Use it in your sources:
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()
@@ -1,10 +1,10 @@
1
1
 
2
2
  class Array
3
3
 
4
- # Resolve a range string to an array.
5
- # A range string can be like '1, 3..5, 9-11, 12+, 14++, 17+++'.
6
- # Which will be resolved to [1, 3, 4, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20].
7
- def self.resolve_range_str(original_str)
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 do |range|
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
- end
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
@@ -1,7 +1,7 @@
1
1
 
2
2
  module TheFox
3
3
  module Ext
4
- VERSION = '1.6.3-rc.4'
4
+ VERSION = '1.9.0'
5
5
  DATE = '2021-04-05'
6
6
  HOMEPAGE = 'https://github.com/TheFox/ext.rb'
7
7
  end
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', '<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.6.3.pre.rc.4
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/.gitignore
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: 1.3.1
106
+ version: '0'
110
107
  requirements: []
111
- rubyforge_project:
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