plain_text 0.7 → 0.7.1

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: 21f798fe1e22424b48114466382f56a8c27a065ee63d6e9c68c98f5c7e505f14
4
- data.tar.gz: 0dde006503a336e1e96960dedd7e04c09ea88723495df93ca11bfa177d0f390e
3
+ metadata.gz: 45fae90fbac6ba53a5f7c21d6a21b3f858d3db734d770eec82fdbb9838755b11
4
+ data.tar.gz: 2817d7be2e4e7a3029d00922177c881ae4cdad2c940bb764f8f49cd6c1b08e00
5
5
  SHA512:
6
- metadata.gz: 30a1f8819371a6b2204df7e47b671c95b227fe14d8b134373c3d0768e35e89bd0c3386707cebbc499aab026631aa0b6fb3838112f198a46ae35328e19ab66eec
7
- data.tar.gz: baca6464f9e66e01154fe72c7fee869ae8218f4a65f46679b2d9f934780eeef0f893f7d01c3a417a9beb007c390ce0b6c7f3aa40b9c49130ca4dcc5a40c2ba4e
6
+ metadata.gz: 5443ef391054d08a06f3cef5a67316b0f13ddbf2f60f7689eb51f027aa73804e09418d0e021446cc32f90111047f36a862278a62b92017000055658756fb4759
7
+ data.tar.gz: 0b158d573ba75b957a0c063aace1bad6c378a23e3e8cd97afe2af6cbd71e79bf26cdd32cce748c0fefd24f61cd6d9053380178889c3c30673219d1bcb13b8809
data/ChangeLog CHANGED
@@ -1,3 +1,8 @@
1
+ -----
2
+ (Version: 0.7.1)
3
+ 2022-09-09 Masa Sakano
4
+ * Skips some tests that break in Ruby 3.
5
+
1
6
  -----
2
7
  (Version: 0.7)
3
8
  2022-08-25 Masa Sakano
data/lib/plain_text.rb CHANGED
@@ -139,7 +139,7 @@ module PlainText
139
139
  # @param delete_asian_space [Boolean] Any spaces between, before, after Asian characters (but punctuation) are deleted, if true (Default).
140
140
  # @param linehead_style [Symbol] One of +(:truncate|:delete|:none)+ (Def: :none). Determine how to handle consecutive white spaces at the beggining of each line.
141
141
  # @param linetail_style [Symbol] One of +(:truncate|:delete|:markdown|:none)+ (Def: :delete). Determine how to handle consecutive white spaces at the end of each line. If +:markdown, 1 space is always deleted, and two or more spaces are truncated into two ASCII whitespaces *if* the last two spaces are ASCII whitespaces, or else untouched.
142
- # @param firstlbs_style [Symbol, String] One of +(:truncate|:delete|:none)+ or String (Def: :default). If +:truncate+, any linebreaks at the very beginning of self (and whitespaces in between), if exist, are truncated to a single linebreak. If String, they are, even if not exists, replaced with the specified String (such as a linebreak). If +:delete+, they are deleted. Note This option has nothing to do with the whitespaces at the beginning of the first significant line (hence the name of the option). Note if a (random) Part is given, this option only considers the first significant element of it.
142
+ # @param firstlbs_style [Symbol, String] One of +(:truncate|:delete|:none)+ or String (Def: :delete). If +:truncate+, any linebreaks at the very beginning of self (and whitespaces in between), if exist, are truncated to a single linebreak. If String, they are, even if not exists, replaced with the specified String (such as a linebreak). If +:delete+, they are deleted. Note This option has nothing to do with the whitespaces at the beginning of the first significant line (hence the name of the option). Note if a (random) Part is given, this option only considers the first significant element of it.
143
143
  # @param lastsps_style [Symbol, String] One of +(:truncate|:delete|:none|:linebreak)+ or String (Def: :truncate). If +:truncate+, any of linebreaks *AND* white spaces at the tail of self, if exist, are truncated to a single linebreak. If +:delete+, they are deleted. If String, they are, even if not exists, replaced with the specified String (such as a linebreak, in which case +lb_out+ is used as String, i.e., it guarantees only 1 linebreak to exist at the end of the String). Note if a (random) Part is given, this option only considers the last significant element of it.
144
144
  # @param lb [String] Linebreak character like +\n+ etc (Default: $/). If this is one of the standard line-breaks, irregular line-breaks (for example, existence of CR when only LF should be there) are corrected.
145
145
  # @param lb_out [String] Linebreak used for output (Default: +lb+)
data/plain_text.gemspec CHANGED
@@ -5,7 +5,7 @@ require 'date'
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{plain_text}.sub(/.*/){|c| (c == File.basename(Dir.pwd)) ? c : raise("ERROR: s.name=(#{c}) in gemspec seems wrong!")}
8
- s.version = "0.7".sub(/.*/){|c| fs = Dir.glob('changelog{,.*}', File::FNM_CASEFOLD); raise('More than one ChangeLog exist!') if fs.size > 1; warn("WARNING: Version(s.version=#{c}) already exists in #{fs[0]} - ok?") if fs.size == 1 && !IO.readlines(fs[0]).grep(/^\(Version: #{Regexp.quote c}\)$/).empty? ; c } # n.b., In macOS, changelog and ChangeLog are identical in default.
8
+ s.version = "0.7.1".sub(/.*/){|c| fs = Dir.glob('changelog{,.*}', File::FNM_CASEFOLD); raise('More than one ChangeLog exist!') if fs.size > 1; warn("WARNING: Version(s.version=#{c}) already exists in #{fs[0]} - ok?") if fs.size == 1 && !IO.readlines(fs[0]).grep(/^\(Version: #{Regexp.quote c}\)$/).empty? ; c } # n.b., In macOS, changelog and ChangeLog are identical in default.
9
9
  # s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
10
10
  s.bindir = 'bin'
11
11
  %w(countchar textclean head.rb tail.rb yard2md_afterclean).each do |f|
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
13
13
  File.executable?(path) ? s.executables << f : raise("ERROR: Executable (#{path}) is not executable!")
14
14
  end
15
15
  s.authors = ["Masa Sakano"]
16
- s.date = %q{2022-08-25}.sub(/.*/){|c| (Date.parse(c) == Date.today) ? c : raise("ERROR: s.date=(#{c}) is not today!")}
16
+ s.date = %q{2022-09-09}.sub(/.*/){|c| (Date.parse(c) == Date.today) ? c : raise("ERROR: s.date=(#{c}) is not today!")}
17
17
  s.summary = %q{Module to handle Plain-Text}
18
18
  s.description = %q{This module provides utility functions and methods to handle plain text, classes Part/Paragraph/Boundary to represent the logical structure of a document and ParseRule to describe the rules to parse plain text to produce a Part-type Ruby instance. A few handy Ruby executable scripts to make use of them are included.}
19
19
  # s.email = %q{abc@example.com}
@@ -41,7 +41,7 @@ Gem::Specification.new do |s|
41
41
  s.rdoc_options = ["--charset=UTF-8"]
42
42
 
43
43
  # s.require_paths = ["lib"] # Default "lib"
44
- s.required_ruby_version = '>= 2.0'
44
+ s.required_ruby_version = '>= 2.0', '< 3.2'
45
45
  s.test_files = Dir['test/**/*.rb']
46
46
  s.test_files.reject! { |fn| File.symlink? fn }
47
47
  # s.requirements << 'libmagick, v6.0' # Simply, info to users.
@@ -301,12 +301,22 @@ class TestUnitPlainText < MiniTest::Test
301
301
  assert_equal "", PT.tail_inverse("", 3)
302
302
 
303
303
  # Child class of String
304
+ # NOTE: In Ruby 3, a subclass of String is not respected in the methods of String:
305
+ # @see https://rubyreferences.github.io/rubychanges/3.0.html#string-always-returning-string
306
+ # NOTE: In Ruby 3, "".class.name is frozen?==true
304
307
  chs = ChString.new ""
305
- nam = chs.class.name
308
+ require 'rubygems' if !defined? Gem # for Ruby 1
309
+ is_ver_2 = (Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3'))
310
+ nam = (is_ver_2 ? chs.class : String).name
311
+
306
312
  assert_equal "", chs
307
313
  assert_equal chs, PT.tail(chs)
308
314
  assert_equal nam, PT.tail(chs).class.name, nam+" <=> \n"+PT.tail(chs).class.name.inspect
309
- assert_equal nam, PT.tail(chs.class.name)
315
+ if is_ver_2
316
+ assert_equal nam, PT.tail(chs.class.name)
317
+ else
318
+ assert_raises(FrozenError){ PT.tail(chs.class.name) }
319
+ end
310
320
  assert_equal nam, PT.tail(chs, -100).class.name
311
321
  end
312
322
 
@@ -18,6 +18,12 @@ gem "minitest"
18
18
  require 'minitest/autorun'
19
19
  # MiniTest::Unit.autorun
20
20
 
21
+ # NOTE: In Ruby 3, a subclass of Array is not respected in the methods of Array:
22
+ # @see https://rubyreferences.github.io/rubychanges/3.0.html#array-always-returning-array
23
+ # NOTE: In Ruby 3, "".class.name is frozen?==true
24
+ require 'rubygems' if !defined? Gem # for Ruby 1
25
+ IS_VER_2 = (Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3'))
26
+
21
27
  class TestUnitPlainTextPart < MiniTest::Test
22
28
  T = true
23
29
  F = false
@@ -143,7 +149,7 @@ class TestUnitPlainTextPart < MiniTest::Test
143
149
  assert_equal a1+["d", ""], pt3.to_a
144
150
  assert_equal pt1.class, pt3.class
145
151
  assert_equal Pt.new(a3), pt3 # Boundary("") is appended.
146
- assert_equal Pt::Boundary, pt3.to_a[-1].class
152
+ assert_equal Pt::Boundary, pt3.to_a[-1].class if IS_VER_2 # Not in Ruby 3 (see note at the top)
147
153
  assert_equal pt3, pt1 + ["d", ""]
148
154
 
149
155
  assert_equal a3.class, ([]+pt3).class # The latter, too, is an Array (NOT PlainText::Part)
@@ -154,6 +160,9 @@ class TestUnitPlainTextPart < MiniTest::Test
154
160
  end
155
161
 
156
162
  # Tests of [prm], [prm1, prm2], [prm1..prm2] and "equal" operator
163
+ # NOTE: In Ruby 3, a subclass of Array is not respected in the methods of Array:
164
+ # @see https://rubyreferences.github.io/rubychanges/3.0.html#array-always-returning-array
165
+ # NOTE: In Ruby 3, "".class.name is frozen?==true
157
166
  def test_bracket01
158
167
  a1 = ["a", "\n\n\n", "b", "\n\n\n", "c", "\n\n"]
159
168
  pt1 = Pt.new(a1)
@@ -167,17 +176,18 @@ class TestUnitPlainTextPart < MiniTest::Test
167
176
  assert_nil pt1[-99]
168
177
  assert_nil pt1[98]
169
178
 
170
- assert_equal pt1.class, pt1[0, 6].class
179
+ assert_equal pt1.class, pt1[0, 6].class if IS_VER_2 # Not in Ruby 3 (see note at the top)
171
180
  assert_equal a1, pt1[0, 6].to_a
172
181
  assert_equal a1[0, 6], pt1[0, 6].to_a
173
- assert_operator pt1[0, 6], :!=, a1
174
- assert_operator a1, :!=, pt1[0, 6]
182
+ oper = (IS_VER_2 ? :!= : :==) # Because PlainText::Part#== is redefined and pt1 is Part in Ruby 2, the following is unequal, whereas pt1 is Array in Ruby 3!
183
+ assert_operator pt1[0, 6], oper, a1
184
+ assert_operator a1, oper, pt1[0, 6]
175
185
 
176
186
  assert_equal a1[0, 2], pt1[0, 2].to_a
177
187
  assert_equal a1, pt1[0, 98].to_a
178
188
  assert_equal a1[0, 99], pt1[0, 98].to_a
179
189
 
180
- assert_equal pt1.class, pt1[0..1].class
190
+ assert_equal pt1.class, pt1[0..1].class if IS_VER_2 # Not in Ruby 3 (see note at the top)
181
191
  assert_equal a1[0..1], pt1[0..1].to_a
182
192
  assert_equal a1[0, 2], pt1[0..1].to_a
183
193
  assert_equal a1[0..5], pt1[0..5].to_a
@@ -192,12 +202,14 @@ class TestUnitPlainTextPart < MiniTest::Test
192
202
 
193
203
  assert_equal pt1[0..-1], pt1[0..99]
194
204
  assert_equal pt1[0, 6], pt1[0..-1]
195
- assert_equal pt1, pt1[0..99]
205
+ assert_equal pt1, pt1[0..99] if IS_VER_2 # Not in Ruby 3 (see note at the top)
196
206
 
197
- pt2 = pt1[0, 4]
198
- assert_equal pt1.class, pt2.class
199
- assert_equal pt1.paras[0, 2], pt2.paras
200
- assert_equal pt1.boundaries[0, 2], pt2.boundaries
207
+ if IS_VER_2 # Not in Ruby 3 (see note at the top)
208
+ pt2 = pt1[0, 4]
209
+ assert_equal pt1.class, pt2.class
210
+ assert_equal pt1.paras[0, 2], pt2.paras
211
+ assert_equal pt1.boundaries[0, 2], pt2.boundaries
212
+ end
201
213
 
202
214
  # negative or too-big out-of-bound begin
203
215
  assert_nil a1[-99..2]
@@ -206,7 +218,7 @@ class TestUnitPlainTextPart < MiniTest::Test
206
218
  assert_nil pt1[98..99]
207
219
 
208
220
  # other out-of-bounds: Empty
209
- assert_equal Pt.new([]), pt1[2..1]
221
+ assert_equal Pt.new([]), pt1[2..1] if IS_VER_2 # Not in Ruby 3 (see note at the top)
210
222
  assert_equal a1[-2..2], pt1[-2..2].to_a
211
223
  assert_equal a1[-2...3], pt1[-2...3].to_a
212
224
 
@@ -223,10 +235,12 @@ class TestUnitPlainTextPart < MiniTest::Test
223
235
  assert_nil pt1[pt1.size]
224
236
  assert_nil pt1[pt1.size, -2]
225
237
  assert_raises(TypeError){ pt1[pt1.size, ?a] }
226
- assert_equal Pt.new([]), pt1[pt1.size, 2]
227
- assert_equal Pt.new([]), pt1[pt1.size, 98]
228
- assert_equal Pt.new([]), pt1[pt1.size..99]
229
- assert_equal Pt.new([]), pt1[pt1.size..1]
238
+ if IS_VER_2 # Not in Ruby 3 (see note at the top)
239
+ assert_equal Pt.new([]), pt1[pt1.size, 2]
240
+ assert_equal Pt.new([]), pt1[pt1.size, 98]
241
+ assert_equal Pt.new([]), pt1[pt1.size..99]
242
+ assert_equal Pt.new([]), pt1[pt1.size..1]
243
+ end
230
244
  end
231
245
 
232
246
  # Tests of slice! to delete
@@ -247,12 +261,12 @@ class TestUnitPlainTextPart < MiniTest::Test
247
261
 
248
262
  assert_equal a11[4, 2], a1.slice!(4, 2)
249
263
  ptp = pt1.slice!(4, 2)
250
- assert_equal pt1.class, ptp.class # PlainText::Part
264
+ assert_equal pt1.class, ptp.class if IS_VER_2 # Not in Ruby 3 (see note at the top) # PlainText::Part
251
265
  assert_equal a11[4, 2], ptp.to_a
252
- assert_operator a11[4, 2], :!=, ptp # PlainText::Part != Array
266
+ assert_operator a11[4, 2], :!=, ptp if IS_VER_2 # PlainText::Part != Array
253
267
  assert_equal a11[0..3], a1
254
268
  assert_equal a11[0..3], pt1.to_a
255
- assert_equal pt2[0..3], pt1
269
+ assert_equal pt2[0..3], pt1 if IS_VER_2 # Not in Ruby 3 (see note at the top)
256
270
 
257
271
  # Negative size (Index, Size)
258
272
  a1 = a11.clone
@@ -268,9 +282,9 @@ class TestUnitPlainTextPart < MiniTest::Test
268
282
  pt1 = Pt.new(a11.clone)
269
283
  assert_equal a11[4, 6], a1.slice!(4, 6)
270
284
  ptp = pt1.slice!(4, 6)
271
- assert_equal pt1.class, ptp.class # PlainText::Part
285
+ assert_equal pt1.class, ptp.class if IS_VER_2 # Not in Ruby 3 (see note at the top) # PlainText::Part
272
286
  assert_equal a11[4, 2], ptp.to_a
273
- assert_operator a11[4, 2], :!=, ptp # PlainText::Part != Array
287
+ assert_operator a11[4, 2], :!=, ptp if IS_VER_2 # Not in Ruby 3 (see note at the top) # PlainText::Part != Array
274
288
  assert_equal a11[0..3], a1
275
289
 
276
290
  # Range exceeding (Range)
@@ -278,10 +292,10 @@ class TestUnitPlainTextPart < MiniTest::Test
278
292
  pt1 = Pt.new(a11.clone)
279
293
  assert_equal a11[4..9], a1.slice!(4..9)
280
294
  ptp = pt1.slice!(4..9)
281
- assert_equal pt1.class, ptp.class # PlainText::Part
295
+ assert_equal pt1.class, ptp.class if IS_VER_2 # Not in Ruby 3 (see note at the top) # PlainText::Part
282
296
  assert_equal a11[4..-1],ptp.to_a
283
297
  assert_equal a11[4..9], ptp.to_a
284
- assert_operator a11[4..9], :!=, ptp # PlainText::Part != Array
298
+ assert_operator a11[4..9], :!=, ptp if IS_VER_2 # Not in Ruby 3 (see note at the top) # PlainText::Part != Array
285
299
  assert_equal a11[0..3], a1
286
300
  assert_equal a11[0..3], pt1.to_a
287
301
 
@@ -301,9 +315,9 @@ class TestUnitPlainTextPart < MiniTest::Test
301
315
  pt1 = Pt.new(a11.clone)
302
316
  assert_equal a11[-6, 2], a1.slice!(-6, 2)
303
317
  ptp = pt1.slice!(-6, 2)
304
- assert_equal pt1.class, ptp.class # PlainText::Part
318
+ assert_equal pt1.class, ptp.class if IS_VER_2 # Not in Ruby 3 (see note at the top) # PlainText::Part
305
319
  assert_equal a11[0..1], ptp.to_a
306
- assert_operator a11[0..1], :!=, ptp # PlainText::Part != Array
320
+ assert_operator a11[0..1], :!=, ptp if IS_VER_2 # Not in Ruby 3 (see note at the top) # PlainText::Part != Array
307
321
  assert_equal a11[2..-1], a1
308
322
  assert_equal a11[2..-1], pt1.to_a
309
323
 
@@ -312,9 +326,9 @@ class TestUnitPlainTextPart < MiniTest::Test
312
326
  pt1 = Pt.new(a11.clone)
313
327
  assert_equal a11[-6..-5], a1.slice!(-6..-5)
314
328
  ptp = pt1.slice!(-6..-5)
315
- assert_equal pt1.class, ptp.class # PlainText::Part
329
+ assert_equal pt1.class, ptp.class if IS_VER_2 # Not in Ruby 3 (see note at the top) # PlainText::Part
316
330
  assert_equal a11[0..1], ptp.to_a
317
- assert_operator a11[0..1], :!=, ptp # PlainText::Part != Array
331
+ assert_operator a11[0..1], :!=, ptp if IS_VER_2 # Not in Ruby 3 (see note at the top) # PlainText::Part != Array
318
332
  assert_equal a11[2..-1], a1
319
333
  assert_equal a11[2..-1], pt1.to_a
320
334
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plain_text
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.7'
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masa Sakano
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-25 00:00:00.000000000 Z
11
+ date: 2022-09-09 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: This module provides utility functions and methods to handle plain text,
14
14
  classes Part/Paragraph/Boundary to represent the logical structure of a document
@@ -69,6 +69,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
69
69
  - - ">="
70
70
  - !ruby/object:Gem::Version
71
71
  version: '2.0'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.2'
72
75
  required_rubygems_version: !ruby/object:Gem::Requirement
73
76
  requirements:
74
77
  - - ">="