thefox-ext 1.7.0.pre.rc.1 → 1.10.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fdffb85cdbbe31d2df7577ff7aa3d04b46558ee3901d6fcd666bd547eceb3e2d
4
- data.tar.gz: 9527125c68ffd2b21efaaeba4beee8b6958c89823e81f62ccbe9c27f8c82db3e
3
+ metadata.gz: 6b68b006a1bf2b6cdc73ca86ef2291c7fe8561e622cdf9f4b6434df6ced40a48
4
+ data.tar.gz: 9e05dc8bedd4a625040d4899ed3f19315fa58c9a998e8cfc5749e929e15d7451
5
5
  SHA512:
6
- metadata.gz: a4005329ccf5422c2fe81f2e23c15560e03141393c36993c87c98ba891a27be999c943dbccaa75ac15bd57daf8f48e25640bfa8f48902371dcd20f4391457b3e
7
- data.tar.gz: 761e16f1c09e1e4891dac67b3bcb3db2a5a3c2f28c865de30c0fae53240a0efde47d38825c8631f9d85b739917597ede588dd9df88a37f6e96bed192d19d6a52
6
+ metadata.gz: 91b5ff18299878084605508f46a5559b8339d52006e32b1908c5a44ee8c04bfa420cddd6fabdf8c7f0996b4d093dae9c916d9affd4efc0c22df3aca2d4ff181d
7
+ data.tar.gz: d7629b1cff75db5e14ea30a5cd5d08f12227146e61491ca41368d696d7f5b3c5ee020161389fa6d7af113bbe8b7ac0fb9038ec95f32260fff4b552b6a48e7603
@@ -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:
@@ -22,6 +20,9 @@ jobs:
22
20
  - '2.3'
23
21
  - '2.4'
24
22
  - '2.5'
23
+ - '2.6'
24
+ - '2.7'
25
+ - '3.0'
25
26
  steps:
26
27
  - uses: actions/checkout@v2
27
28
  - name: Set up Ruby
@@ -17,7 +17,7 @@ jobs:
17
17
  strategy:
18
18
  matrix:
19
19
  ruby-version:
20
- - '2.5'
20
+ - '3.0'
21
21
  steps:
22
22
  - uses: actions/checkout@v2
23
23
  - name: Set up Ruby
data/CHANGELOG-v1.md CHANGED
@@ -1,6 +1,31 @@
1
1
  # Release Notes for Extended Ruby Classes v1.x
2
2
 
3
- ## v1.7.0 [unreleased]
3
+ ## v1.10.0
4
+
5
+ - [DEPRECATION] `Array.resolve_range_str` is deprecated.
6
+ - [DEPRECATION] `String.resolve_range` is deprecated.
7
+
8
+ ## v1.9.0
9
+
10
+ - Tests
11
+ - Array Ranges
12
+
13
+ ## v1.8.0
14
+
15
+ - Ruby v3 Support
16
+
17
+ ## v1.7.0
18
+
19
+ - GitHub Actions
20
+ - Ruby Support: 2.4, 2.5, 2.6, 2.7
21
+
22
+ ## v1.6.3 [unreleased]
23
+
24
+ Only RCs.
25
+
26
+ ## v1.6.1
27
+
28
+ - Deployment
4
29
 
5
30
  ## v1.6.0
6
31
 
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.10'
25
25
  ```
26
26
 
27
27
  Use it in your sources:
data/bin/dev ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # coding: UTF-8
3
+
4
+ require 'thefox-ext'
5
+ require 'pp'
6
+
@@ -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 v2.0.0.
5
+ def self.resolve_range_str(original_str, prefix = '')
6
+ warn "[DEPRECATION] `Array.resolve_range_str` is deprecated."
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,64 @@ class String
63
63
  self.force_encoding('ISO-8859-1').encode('UTF-8')
64
64
  end
65
65
  end
66
+
67
+ # DEPRECATED: will be removed in v2.0.0.
68
+ def resolve_range(prefix = '')
69
+ # puts '-> resolve_range: %s {%s}' % [self, prefix]
70
+ warn "[DEPRECATION] `String.resolve_range` is deprecated. Please use `TheFox::Range::Resolver` instead."
71
+
72
+ rv = Array.new
73
+
74
+ items = []
75
+ is_sub_range = false
76
+ sub_item = []
77
+ self.split(',').each do |item|
78
+ if item.count('{') > 0
79
+ is_sub_range = true
80
+ end
81
+ if is_sub_range
82
+ sub_item.push(item)
83
+ else
84
+ items.push(item)
85
+ end
86
+ if item.count('}') > 0
87
+ is_sub_range = false
88
+ items.push(sub_item.join(','))
89
+ sub_item = []
90
+ end
91
+ end
92
+
93
+ items.map{ |item|
94
+ item_striped = item.strip
95
+ if range_match = item_striped.match(/(\d+)\{([\d\-\+,]+)\}/)
96
+ range_match[2].resolve_range(range_match[1])
97
+ elsif /\.\./.match(item_striped) # ( . )( . ) <--- BOOBS
98
+ Range.new(*item_striped.split('..', 2).map{ |range| range.to_i })
99
+ elsif /-/.match(item_striped)
100
+ Range.new(*item_striped.split('-', 2).map{ |range| range.to_i })
101
+ elsif /\+/.match(item_striped)
102
+ range_begin = item_striped.split('+').first.to_i
103
+ range_end = range_begin + item_striped.count('+')
104
+ Range.new(range_begin, range_end)
105
+ else
106
+ item_striped.to_i
107
+ end
108
+ }.each{ |range|
109
+ if range.is_a?(Range)
110
+ rv.push(*range.to_a)
111
+ elsif range.is_a?(Array)
112
+ rv.push(*range)
113
+ else
114
+ rv << range
115
+ end
116
+ }
117
+
118
+ if !prefix.empty?
119
+ rv = rv.map { |i|
120
+ (prefix + i.to_s).to_i
121
+ }
122
+ end
123
+
124
+ rv
125
+ end
66
126
  end
@@ -1,8 +1,8 @@
1
1
 
2
2
  module TheFox
3
3
  module Ext
4
- VERSION = '1.7.0-rc.1'
5
- DATE = '2021-04-05'
4
+ VERSION = '1.10.0'
5
+ DATE = '2021-04-08'
6
6
  HOMEPAGE = 'https://github.com/TheFox/ext.rb'
7
7
  end
8
8
  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,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thefox-ext
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0.pre.rc.1
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Mayer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-05 00:00:00.000000000 Z
11
+ date: 2021-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -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.7.6.2
108
+ rubygems_version: 3.2.15
113
109
  signing_key:
114
110
  specification_version: 4
115
111
  summary: Extended Ruby Classes
data/bin/.gitignore DELETED
@@ -1 +0,0 @@
1
- dev