strscan 3.1.1 → 3.1.2
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 +4 -4
- data/doc/strscan/helper_methods.md +4 -8
- data/doc/strscan/methods/get_byte.md +2 -2
- data/doc/strscan/methods/get_charpos.md +1 -1
- data/doc/strscan/methods/get_pos.md +1 -1
- data/doc/strscan/methods/getch.md +3 -3
- data/doc/strscan/methods/scan.md +2 -2
- data/doc/strscan/methods/scan_until.md +2 -2
- data/doc/strscan/methods/set_pos.md +2 -2
- data/doc/strscan/methods/skip.md +1 -1
- data/doc/strscan/methods/skip_until.md +2 -2
- data/doc/strscan/methods/terminate.md +1 -1
- data/doc/strscan/strscan.md +15 -15
- data/ext/strscan/strscan.c +39 -39
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73c77caa81f5b813c59e442c9499b5a7ab4ea7b1150beb9ec2c74e77db6594df
|
4
|
+
data.tar.gz: 06cc976fa2b5da016adee87d62d306c96c64da26ff32cc38c01de113e20403f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68e02c4724557b03798d0c13761cc84c604278ad482c693208fc448459270faa6653069139757a9b4095c6d0fdecdff75982e8a47172e2602d1173dd6c7bf61c
|
7
|
+
data.tar.gz: f6df1e074a2a6330058d3c8f4b7961a1ab0b3f077860940feadc0515e95deab8fcae3c06fccb4d3482f2127a4479b12e0c1e0482fd638decd047f770331fad47
|
@@ -10,7 +10,7 @@ Display scanner's situation:
|
|
10
10
|
- Character position (`#charpos`)
|
11
11
|
- Target string (`#rest`) and size (`#rest_size`).
|
12
12
|
|
13
|
-
```
|
13
|
+
```rb
|
14
14
|
scanner = StringScanner.new('foobarbaz')
|
15
15
|
scanner.scan(/foo/)
|
16
16
|
put_situation(scanner)
|
@@ -25,7 +25,7 @@ put_situation(scanner)
|
|
25
25
|
|
26
26
|
Display the scanner's match values:
|
27
27
|
|
28
|
-
```
|
28
|
+
```rb
|
29
29
|
scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
30
30
|
pattern = /(?<wday>\w+) (?<month>\w+) (?<day>\d+) /
|
31
31
|
scanner.match?(pattern)
|
@@ -53,7 +53,7 @@ put_match_values(scanner)
|
|
53
53
|
|
54
54
|
Returns whether the scanner's match values are all properly cleared:
|
55
55
|
|
56
|
-
```
|
56
|
+
```rb
|
57
57
|
scanner = StringScanner.new('foobarbaz')
|
58
58
|
match_values_cleared?(scanner) # => true
|
59
59
|
put_match_values(scanner)
|
@@ -75,7 +75,7 @@ match_values_cleared?(scanner) # => false
|
|
75
75
|
|
76
76
|
## The Code
|
77
77
|
|
78
|
-
```
|
78
|
+
```rb
|
79
79
|
def put_situation(scanner)
|
80
80
|
puts '# Situation:'
|
81
81
|
puts "# pos: #{scanner.pos}"
|
@@ -83,9 +83,7 @@ def put_situation(scanner)
|
|
83
83
|
puts "# rest: #{scanner.rest.inspect}"
|
84
84
|
puts "# rest_size: #{scanner.rest_size}"
|
85
85
|
end
|
86
|
-
```
|
87
86
|
|
88
|
-
```
|
89
87
|
def put_match_values(scanner)
|
90
88
|
puts '# Basic match values:'
|
91
89
|
puts "# matched?: #{scanner.matched?}"
|
@@ -109,9 +107,7 @@ def put_match_values(scanner)
|
|
109
107
|
end
|
110
108
|
end
|
111
109
|
end
|
112
|
-
```
|
113
110
|
|
114
|
-
```
|
115
111
|
def match_values_cleared?(scanner)
|
116
112
|
scanner.matched? == false &&
|
117
113
|
scanner.matched_size.nil? &&
|
@@ -10,7 +10,7 @@ Returns the next byte, if available:
|
|
10
10
|
- Increments the [byte position][2].
|
11
11
|
- Adjusts the [character position][7].
|
12
12
|
|
13
|
-
```
|
13
|
+
```rb
|
14
14
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
15
15
|
# => #<StringScanner 0/15 @ "\xE3\x81\x93\xE3\x82...">
|
16
16
|
scanner.string # => "こんにちは"
|
@@ -24,7 +24,7 @@ Returns the next byte, if available:
|
|
24
24
|
|
25
25
|
- Otherwise, returns `nil`, and does not change the positions.
|
26
26
|
|
27
|
-
```
|
27
|
+
```rb
|
28
28
|
scanner.terminate
|
29
29
|
[scanner.get_byte, scanner.pos, scanner.charpos] # => [nil, 15, 5]
|
30
30
|
```
|
@@ -5,7 +5,7 @@ Returns the [character position][7] (initially zero),
|
|
5
5
|
which may be different from the [byte position][2]
|
6
6
|
given by method #pos:
|
7
7
|
|
8
|
-
```
|
8
|
+
```rb
|
9
9
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
10
10
|
scanner.string # => "こんにちは"
|
11
11
|
scanner.getch # => "こ" # 3-byte character.
|
@@ -12,7 +12,7 @@ if available:
|
|
12
12
|
- Increments the [byte position][2]
|
13
13
|
by the size (in bytes) of the character.
|
14
14
|
|
15
|
-
```
|
15
|
+
```rb
|
16
16
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
17
17
|
scanner.string # => "こんにちは"
|
18
18
|
[scanner.getch, scanner.pos, scanner.charpos] # => ["こ", 3, 1]
|
@@ -27,7 +27,7 @@ if available:
|
|
27
27
|
(that is, not at its beginning),
|
28
28
|
behaves like #get_byte (returns a 1-byte character):
|
29
29
|
|
30
|
-
```
|
30
|
+
```rb
|
31
31
|
scanner.pos = 1
|
32
32
|
[scanner.getch, scanner.pos, scanner.charpos] # => ["\x81", 2, 2]
|
33
33
|
[scanner.getch, scanner.pos, scanner.charpos] # => ["\x93", 3, 1]
|
@@ -37,7 +37,7 @@ if available:
|
|
37
37
|
- If the [position][2] is at the end of the [stored string][1],
|
38
38
|
returns `nil` and does not modify the positions:
|
39
39
|
|
40
|
-
```
|
40
|
+
```rb
|
41
41
|
scanner.terminate
|
42
42
|
[scanner.getch, scanner.pos, scanner.charpos] # => [nil, 15, 5]
|
43
43
|
```
|
data/doc/strscan/methods/scan.md
CHANGED
@@ -11,7 +11,7 @@ If the match succeeds:
|
|
11
11
|
and may increment the [character position][7].
|
12
12
|
- Sets [match values][9].
|
13
13
|
|
14
|
-
```
|
14
|
+
```rb
|
15
15
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
16
16
|
scanner.string # => "こんにちは"
|
17
17
|
scanner.pos = 6
|
@@ -45,7 +45,7 @@ If the match fails:
|
|
45
45
|
- Does not increment byte and character positions.
|
46
46
|
- Clears match values.
|
47
47
|
|
48
|
-
```
|
48
|
+
```rb
|
49
49
|
scanner.scan(/nope/) # => nil
|
50
50
|
match_values_cleared?(scanner) # => true
|
51
51
|
```
|
@@ -12,7 +12,7 @@ If the match attempt succeeds:
|
|
12
12
|
- Returns the matched substring.
|
13
13
|
|
14
14
|
|
15
|
-
```
|
15
|
+
```rb
|
16
16
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
17
17
|
scanner.string # => "こんにちは"
|
18
18
|
scanner.pos = 6
|
@@ -46,7 +46,7 @@ If the match attempt fails:
|
|
46
46
|
- Returns `nil`.
|
47
47
|
- Does not update positions.
|
48
48
|
|
49
|
-
```
|
49
|
+
```rb
|
50
50
|
scanner.scan_until(/nope/) # => nil
|
51
51
|
match_values_cleared?(scanner) # => true
|
52
52
|
```
|
@@ -9,7 +9,7 @@ Does not affect [match values][9].
|
|
9
9
|
|
10
10
|
For non-negative `n`, sets the position to `n`:
|
11
11
|
|
12
|
-
```
|
12
|
+
```rb
|
13
13
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
14
14
|
scanner.string # => "こんにちは"
|
15
15
|
scanner.pos = 3 # => 3
|
@@ -19,7 +19,7 @@ scanner.charpos # => 1
|
|
19
19
|
|
20
20
|
For negative `n`, counts from the end of the [stored string][1]:
|
21
21
|
|
22
|
-
```
|
22
|
+
```rb
|
23
23
|
scanner.pos = -9 # => -9
|
24
24
|
scanner.pos # => 6
|
25
25
|
scanner.rest # => "にちは"
|
data/doc/strscan/methods/skip.md
CHANGED
@@ -10,7 +10,7 @@ If the match attempt succeeds:
|
|
10
10
|
- Sets [match values][9].
|
11
11
|
- Returns the size of the matched substring.
|
12
12
|
|
13
|
-
```
|
13
|
+
```rb
|
14
14
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
15
15
|
scanner.string # => "こんにちは"
|
16
16
|
scanner.pos = 6
|
@@ -43,7 +43,7 @@ If the match attempt fails:
|
|
43
43
|
- Clears match values.
|
44
44
|
- Returns `nil`.
|
45
45
|
|
46
|
-
```
|
46
|
+
```rb
|
47
47
|
scanner.skip_until(/nope/) # => nil
|
48
48
|
match_values_cleared?(scanner) # => true
|
49
49
|
```
|
data/doc/strscan/strscan.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
\Class `StringScanner` supports processing a stored string as a stream;
|
2
2
|
this code creates a new `StringScanner` object with string `'foobarbaz'`:
|
3
3
|
|
4
|
-
```
|
4
|
+
```rb
|
5
5
|
require 'strscan'
|
6
6
|
scanner = StringScanner.new('foobarbaz')
|
7
7
|
```
|
@@ -10,13 +10,13 @@ scanner = StringScanner.new('foobarbaz')
|
|
10
10
|
|
11
11
|
All examples here assume that `StringScanner` has been required:
|
12
12
|
|
13
|
-
```
|
13
|
+
```rb
|
14
14
|
require 'strscan'
|
15
15
|
```
|
16
16
|
|
17
17
|
Some examples here assume that these constants are defined:
|
18
18
|
|
19
|
-
```
|
19
|
+
```rb
|
20
20
|
MULTILINE_TEXT = <<~EOT
|
21
21
|
Go placidly amid the noise and haste,
|
22
22
|
and remember what peace there may be in silence.
|
@@ -45,7 +45,7 @@ This code creates a `StringScanner` object
|
|
45
45
|
(we'll call it simply a _scanner_),
|
46
46
|
and shows some of its basic properties:
|
47
47
|
|
48
|
-
```
|
48
|
+
```rb
|
49
49
|
scanner = StringScanner.new('foobarbaz')
|
50
50
|
scanner.string # => "foobarbaz"
|
51
51
|
put_situation(scanner)
|
@@ -138,7 +138,7 @@ To get or set the byte position:
|
|
138
138
|
Many methods use the byte position as the basis for finding matches;
|
139
139
|
many others set, increment, or decrement the byte position:
|
140
140
|
|
141
|
-
```
|
141
|
+
```rb
|
142
142
|
scanner = StringScanner.new('foobar')
|
143
143
|
scanner.pos # => 0
|
144
144
|
scanner.scan(/foo/) # => "foo" # Match found.
|
@@ -176,7 +176,7 @@ see:
|
|
176
176
|
|
177
177
|
Example (string includes multi-byte characters):
|
178
178
|
|
179
|
-
```
|
179
|
+
```rb
|
180
180
|
scanner = StringScanner.new(ENGLISH_TEXT) # Five 1-byte characters.
|
181
181
|
scanner.concat(HIRAGANA_TEXT) # Five 3-byte characters
|
182
182
|
scanner.string # => "Helloこんにちは" # Twenty bytes in all.
|
@@ -216,7 +216,7 @@ and its size is returned by method #rest_size.
|
|
216
216
|
|
217
217
|
Examples:
|
218
218
|
|
219
|
-
```
|
219
|
+
```rb
|
220
220
|
scanner = StringScanner.new('foobarbaz')
|
221
221
|
put_situation(scanner)
|
222
222
|
# Situation:
|
@@ -430,7 +430,7 @@ See examples below.
|
|
430
430
|
|
431
431
|
Successful basic match attempt (no captures):
|
432
432
|
|
433
|
-
```
|
433
|
+
```rb
|
434
434
|
scanner = StringScanner.new('foobarbaz')
|
435
435
|
scanner.exist?(/bar/)
|
436
436
|
put_match_values(scanner)
|
@@ -452,7 +452,7 @@ put_match_values(scanner)
|
|
452
452
|
|
453
453
|
Failed basic match attempt (no captures);
|
454
454
|
|
455
|
-
```
|
455
|
+
```rb
|
456
456
|
scanner = StringScanner.new('foobarbaz')
|
457
457
|
scanner.exist?(/nope/)
|
458
458
|
match_values_cleared?(scanner) # => true
|
@@ -460,7 +460,7 @@ match_values_cleared?(scanner) # => true
|
|
460
460
|
|
461
461
|
Successful unnamed capture match attempt:
|
462
462
|
|
463
|
-
```
|
463
|
+
```rb
|
464
464
|
scanner = StringScanner.new('foobarbazbatbam')
|
465
465
|
scanner.exist?(/(foo)bar(baz)bat(bam)/)
|
466
466
|
put_match_values(scanner)
|
@@ -486,7 +486,7 @@ put_match_values(scanner)
|
|
486
486
|
Successful named capture match attempt;
|
487
487
|
same as unnamed above, except for #named_captures:
|
488
488
|
|
489
|
-
```
|
489
|
+
```rb
|
490
490
|
scanner = StringScanner.new('foobarbazbatbam')
|
491
491
|
scanner.exist?(/(?<x>foo)bar(?<y>baz)bat(?<z>bam)/)
|
492
492
|
scanner.named_captures # => {"x"=>"foo", "y"=>"baz", "z"=>"bam"}
|
@@ -494,7 +494,7 @@ scanner.named_captures # => {"x"=>"foo", "y"=>"baz", "z"=>"bam"}
|
|
494
494
|
|
495
495
|
Failed unnamed capture match attempt:
|
496
496
|
|
497
|
-
```
|
497
|
+
```rb
|
498
498
|
scanner = StringScanner.new('somestring')
|
499
499
|
scanner.exist?(/(foo)bar(baz)bat(bam)/)
|
500
500
|
match_values_cleared?(scanner) # => true
|
@@ -503,7 +503,7 @@ match_values_cleared?(scanner) # => true
|
|
503
503
|
Failed named capture match attempt;
|
504
504
|
same as unnamed above, except for #named_captures:
|
505
505
|
|
506
|
-
```
|
506
|
+
```rb
|
507
507
|
scanner = StringScanner.new('somestring')
|
508
508
|
scanner.exist?(/(?<x>foo)bar(?<y>baz)bat(?<z>bam)/)
|
509
509
|
match_values_cleared?(scanner) # => false
|
@@ -518,7 +518,7 @@ which determines the meaning of `'\A'`:
|
|
518
518
|
|
519
519
|
* `false` (the default): matches the current byte position.
|
520
520
|
|
521
|
-
```
|
521
|
+
```rb
|
522
522
|
scanner = StringScanner.new('foobar')
|
523
523
|
scanner.scan(/\A./) # => "f"
|
524
524
|
scanner.scan(/\A./) # => "o"
|
@@ -529,7 +529,7 @@ which determines the meaning of `'\A'`:
|
|
529
529
|
* `true`: matches the beginning of the target substring;
|
530
530
|
never matches unless the byte position is zero:
|
531
531
|
|
532
|
-
```
|
532
|
+
```rb
|
533
533
|
scanner = StringScanner.new('foobar', fixed_anchor: true)
|
534
534
|
scanner.scan(/\A./) # => "f"
|
535
535
|
scanner.scan(/\A./) # => nil
|
data/ext/strscan/strscan.c
CHANGED
@@ -22,7 +22,7 @@ extern size_t onig_region_memsize(const struct re_registers *regs);
|
|
22
22
|
|
23
23
|
#include <stdbool.h>
|
24
24
|
|
25
|
-
#define STRSCAN_VERSION "3.1.
|
25
|
+
#define STRSCAN_VERSION "3.1.2"
|
26
26
|
|
27
27
|
/* =======================================================================
|
28
28
|
Data Type Definitions
|
@@ -231,7 +231,7 @@ strscan_s_allocate(VALUE klass)
|
|
231
231
|
* is the given `string`;
|
232
232
|
* sets the [fixed-anchor property][10]:
|
233
233
|
*
|
234
|
-
* ```
|
234
|
+
* ```rb
|
235
235
|
* scanner = StringScanner.new('foobarbaz')
|
236
236
|
* scanner.string # => "foobarbaz"
|
237
237
|
* scanner.fixed_anchor? # => false
|
@@ -339,7 +339,7 @@ strscan_s_mustc(VALUE self)
|
|
339
339
|
* and clears [match values][9];
|
340
340
|
* returns +self+:
|
341
341
|
*
|
342
|
-
* ```
|
342
|
+
* ```rb
|
343
343
|
* scanner = StringScanner.new('foobarbaz')
|
344
344
|
* scanner.exist?(/bar/) # => 6
|
345
345
|
* scanner.reset # => #<StringScanner 0/9 @ "fooba...">
|
@@ -405,7 +405,7 @@ strscan_clear(VALUE self)
|
|
405
405
|
*
|
406
406
|
* Returns the [stored string][1]:
|
407
407
|
*
|
408
|
-
* ```
|
408
|
+
* ```rb
|
409
409
|
* scanner = StringScanner.new('foobar')
|
410
410
|
* scanner.string # => "foobar"
|
411
411
|
* scanner.concat('baz')
|
@@ -435,7 +435,7 @@ strscan_get_string(VALUE self)
|
|
435
435
|
* - Clears [match values][9].
|
436
436
|
* - Returns `other_string`.
|
437
437
|
*
|
438
|
-
* ```
|
438
|
+
* ```rb
|
439
439
|
* scanner = StringScanner.new('foobar')
|
440
440
|
* scanner.scan(/foo/)
|
441
441
|
* put_situation(scanner)
|
@@ -483,7 +483,7 @@ strscan_set_string(VALUE self, VALUE str)
|
|
483
483
|
* or [match values][9].
|
484
484
|
*
|
485
485
|
*
|
486
|
-
* ```
|
486
|
+
* ```rb
|
487
487
|
* scanner = StringScanner.new('foo')
|
488
488
|
* scanner.string # => "foo"
|
489
489
|
* scanner.terminate
|
@@ -789,7 +789,7 @@ strscan_scan(VALUE self, VALUE re)
|
|
789
789
|
* - Returns the size in bytes of the matched substring.
|
790
790
|
*
|
791
791
|
*
|
792
|
-
* ```
|
792
|
+
* ```rb
|
793
793
|
* scanner = StringScanner.new('foobarbaz')
|
794
794
|
* scanner.pos = 3
|
795
795
|
* scanner.match?(/bar/) => 3
|
@@ -822,7 +822,7 @@ strscan_scan(VALUE self, VALUE re)
|
|
822
822
|
* - Returns `nil`.
|
823
823
|
* - Does not increment positions.
|
824
824
|
*
|
825
|
-
* ```
|
825
|
+
* ```rb
|
826
826
|
* scanner.match?(/nope/) # => nil
|
827
827
|
* match_values_cleared?(scanner) # => true
|
828
828
|
* ```
|
@@ -861,7 +861,7 @@ strscan_skip(VALUE self, VALUE re)
|
|
861
861
|
* - Returns the matched substring.
|
862
862
|
* - Sets all [match values][9].
|
863
863
|
*
|
864
|
-
* ```
|
864
|
+
* ```rb
|
865
865
|
* scanner = StringScanner.new('foobarbaz')
|
866
866
|
* scanner.pos = 3
|
867
867
|
* scanner.check('bar') # => "bar"
|
@@ -894,7 +894,7 @@ strscan_skip(VALUE self, VALUE re)
|
|
894
894
|
* - Returns `nil`.
|
895
895
|
* - Clears all [match values][9].
|
896
896
|
*
|
897
|
-
* ```
|
897
|
+
* ```rb
|
898
898
|
* scanner.check(/nope/) # => nil
|
899
899
|
* match_values_cleared?(scanner) # => true
|
900
900
|
* ```
|
@@ -961,7 +961,7 @@ strscan_scan_until(VALUE self, VALUE re)
|
|
961
961
|
* and the end of the matched substring.
|
962
962
|
* - Sets all [match values][9].
|
963
963
|
*
|
964
|
-
* ```
|
964
|
+
* ```rb
|
965
965
|
* scanner = StringScanner.new('foobarbazbatbam')
|
966
966
|
* scanner.pos = 6
|
967
967
|
* scanner.exist?(/bat/) # => 6
|
@@ -993,7 +993,7 @@ strscan_scan_until(VALUE self, VALUE re)
|
|
993
993
|
* - Returns `nil`.
|
994
994
|
* - Clears all [match values][9].
|
995
995
|
*
|
996
|
-
* ```
|
996
|
+
* ```rb
|
997
997
|
* scanner.exist?(/nope/) # => nil
|
998
998
|
* match_values_cleared?(scanner) # => true
|
999
999
|
* ```
|
@@ -1035,7 +1035,7 @@ strscan_skip_until(VALUE self, VALUE re)
|
|
1035
1035
|
* which extends from the current [position][2]
|
1036
1036
|
* to the end of the matched substring.
|
1037
1037
|
*
|
1038
|
-
* ```
|
1038
|
+
* ```rb
|
1039
1039
|
* scanner = StringScanner.new('foobarbazbatbam')
|
1040
1040
|
* scanner.pos = 6
|
1041
1041
|
* scanner.check_until(/bat/) # => "bazbat"
|
@@ -1067,7 +1067,7 @@ strscan_skip_until(VALUE self, VALUE re)
|
|
1067
1067
|
* - Clears all [match values][9].
|
1068
1068
|
* - Returns `nil`.
|
1069
1069
|
*
|
1070
|
-
* ```
|
1070
|
+
* ```rb
|
1071
1071
|
* scanner.check_until(/nope/) # => nil
|
1072
1072
|
* match_values_cleared?(scanner) # => true
|
1073
1073
|
* ```
|
@@ -1239,7 +1239,7 @@ strscan_getbyte(VALUE self)
|
|
1239
1239
|
* Returns the substring `string[pos, length]`;
|
1240
1240
|
* does not update [match values][9] or [positions][11]:
|
1241
1241
|
*
|
1242
|
-
* ```
|
1242
|
+
* ```rb
|
1243
1243
|
* scanner = StringScanner.new('foobarbaz')
|
1244
1244
|
* scanner.pos = 3
|
1245
1245
|
* scanner.peek(3) # => "bar"
|
@@ -1403,7 +1403,7 @@ strscan_scan_base16_integer(VALUE self)
|
|
1403
1403
|
* Sets the [position][2] to its value previous to the recent successful
|
1404
1404
|
* [match][17] attempt:
|
1405
1405
|
*
|
1406
|
-
* ```
|
1406
|
+
* ```rb
|
1407
1407
|
* scanner = StringScanner.new('foobarbaz')
|
1408
1408
|
* scanner.scan(/foo/)
|
1409
1409
|
* put_situation(scanner)
|
@@ -1424,7 +1424,7 @@ strscan_scan_base16_integer(VALUE self)
|
|
1424
1424
|
*
|
1425
1425
|
* Raises an exception if match values are clear:
|
1426
1426
|
*
|
1427
|
-
* ```
|
1427
|
+
* ```rb
|
1428
1428
|
* scanner.scan(/nope/) # => nil
|
1429
1429
|
* match_values_cleared?(scanner) # => true
|
1430
1430
|
* scanner.unscan # Raises StringScanner::Error.
|
@@ -1498,7 +1498,7 @@ strscan_bol_p(VALUE self)
|
|
1498
1498
|
* Returns whether the [position][2]
|
1499
1499
|
* is at the end of the [stored string][1]:
|
1500
1500
|
*
|
1501
|
-
* ```
|
1501
|
+
* ```rb
|
1502
1502
|
* scanner = StringScanner.new('foobarbaz')
|
1503
1503
|
* scanner.eos? # => false
|
1504
1504
|
* pos = 3
|
@@ -1567,7 +1567,7 @@ strscan_rest_p(VALUE self)
|
|
1567
1567
|
* `false` otherwise;
|
1568
1568
|
* see [Basic Matched Values][18]:
|
1569
1569
|
*
|
1570
|
-
* ```
|
1570
|
+
* ```rb
|
1571
1571
|
* scanner = StringScanner.new('foobarbaz')
|
1572
1572
|
* scanner.matched? # => false
|
1573
1573
|
* scanner.pos = 3
|
@@ -1599,7 +1599,7 @@ strscan_matched_p(VALUE self)
|
|
1599
1599
|
* or `nil` otherwise;
|
1600
1600
|
* see [Basic Matched Values][18]:
|
1601
1601
|
*
|
1602
|
-
* ```
|
1602
|
+
* ```rb
|
1603
1603
|
* scanner = StringScanner.new('foobarbaz')
|
1604
1604
|
* scanner.matched # => nil
|
1605
1605
|
* scanner.pos = 3
|
@@ -1634,7 +1634,7 @@ strscan_matched(VALUE self)
|
|
1634
1634
|
* or `nil` otherwise;
|
1635
1635
|
* see [Basic Matched Values][18]:
|
1636
1636
|
*
|
1637
|
-
* ```
|
1637
|
+
* ```rb
|
1638
1638
|
* scanner = StringScanner.new('foobarbaz')
|
1639
1639
|
* scanner.matched_size # => nil
|
1640
1640
|
*
|
@@ -1688,14 +1688,14 @@ name_to_backref_number(struct re_registers *regs, VALUE regexp, const char* name
|
|
1688
1688
|
*
|
1689
1689
|
* When there are captures:
|
1690
1690
|
*
|
1691
|
-
* ```
|
1691
|
+
* ```rb
|
1692
1692
|
* scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
1693
1693
|
* scanner.scan(/(?<wday>\w+) (?<month>\w+) (?<day>\d+) /)
|
1694
1694
|
* ```
|
1695
1695
|
*
|
1696
1696
|
* - `specifier` zero: returns the entire matched substring:
|
1697
1697
|
*
|
1698
|
-
* ```
|
1698
|
+
* ```rb
|
1699
1699
|
* scanner[0] # => "Fri Dec 12 "
|
1700
1700
|
* scanner.pre_match # => ""
|
1701
1701
|
* scanner.post_match # => "1975 14:39"
|
@@ -1703,7 +1703,7 @@ name_to_backref_number(struct re_registers *regs, VALUE regexp, const char* name
|
|
1703
1703
|
*
|
1704
1704
|
* - `specifier` positive integer. returns the `n`th capture, or `nil` if out of range:
|
1705
1705
|
*
|
1706
|
-
* ```
|
1706
|
+
* ```rb
|
1707
1707
|
* scanner[1] # => "Fri"
|
1708
1708
|
* scanner[2] # => "Dec"
|
1709
1709
|
* scanner[3] # => "12"
|
@@ -1712,7 +1712,7 @@ name_to_backref_number(struct re_registers *regs, VALUE regexp, const char* name
|
|
1712
1712
|
*
|
1713
1713
|
* - `specifier` negative integer. counts backward from the last subgroup:
|
1714
1714
|
*
|
1715
|
-
* ```
|
1715
|
+
* ```rb
|
1716
1716
|
* scanner[-1] # => "12"
|
1717
1717
|
* scanner[-4] # => "Fri Dec 12 "
|
1718
1718
|
* scanner[-5] # => nil
|
@@ -1720,7 +1720,7 @@ name_to_backref_number(struct re_registers *regs, VALUE regexp, const char* name
|
|
1720
1720
|
*
|
1721
1721
|
* - `specifier` symbol or string. returns the named subgroup, or `nil` if no such:
|
1722
1722
|
*
|
1723
|
-
* ```
|
1723
|
+
* ```rb
|
1724
1724
|
* scanner[:wday] # => "Fri"
|
1725
1725
|
* scanner['wday'] # => "Fri"
|
1726
1726
|
* scanner[:month] # => "Dec"
|
@@ -1730,7 +1730,7 @@ name_to_backref_number(struct re_registers *regs, VALUE regexp, const char* name
|
|
1730
1730
|
*
|
1731
1731
|
* When there are no captures, only `[0]` returns non-`nil`:
|
1732
1732
|
*
|
1733
|
-
* ```
|
1733
|
+
* ```rb
|
1734
1734
|
* scanner = StringScanner.new('foobarbaz')
|
1735
1735
|
* scanner.exist?(/bar/)
|
1736
1736
|
* scanner[0] # => "bar"
|
@@ -1739,7 +1739,7 @@ name_to_backref_number(struct re_registers *regs, VALUE regexp, const char* name
|
|
1739
1739
|
*
|
1740
1740
|
* For a failed match, even `[0]` returns `nil`:
|
1741
1741
|
*
|
1742
|
-
* ```
|
1742
|
+
* ```rb
|
1743
1743
|
* scanner.scan(/nope/) # => nil
|
1744
1744
|
* scanner[0] # => nil
|
1745
1745
|
* scanner[1] # => nil
|
@@ -1790,7 +1790,7 @@ strscan_aref(VALUE self, VALUE idx)
|
|
1790
1790
|
* Returns the count of captures if the most recent match attempt succeeded, `nil` otherwise;
|
1791
1791
|
* see [Captures Match Values][13]:
|
1792
1792
|
*
|
1793
|
-
* ```
|
1793
|
+
* ```rb
|
1794
1794
|
* scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
1795
1795
|
* scanner.size # => nil
|
1796
1796
|
*
|
@@ -1824,7 +1824,7 @@ strscan_size(VALUE self)
|
|
1824
1824
|
* Returns the array of [captured match values][13] at indexes `(1..)`
|
1825
1825
|
* if the most recent match attempt succeeded, or `nil` otherwise:
|
1826
1826
|
*
|
1827
|
-
* ```
|
1827
|
+
* ```rb
|
1828
1828
|
* scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
1829
1829
|
* scanner.captures # => nil
|
1830
1830
|
*
|
@@ -1879,7 +1879,7 @@ strscan_captures(VALUE self)
|
|
1879
1879
|
* For each `specifier`, the returned substring is `[specifier]`;
|
1880
1880
|
* see #[].
|
1881
1881
|
*
|
1882
|
-
* ```
|
1882
|
+
* ```rb
|
1883
1883
|
* scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
1884
1884
|
* pattern = /(?<wday>\w+) (?<month>\w+) (?<day>\d+) /
|
1885
1885
|
* scanner.match?(pattern)
|
@@ -1919,7 +1919,7 @@ strscan_values_at(int argc, VALUE *argv, VALUE self)
|
|
1919
1919
|
* or `nil` otherwise;
|
1920
1920
|
* see [Basic Match Values][18]:
|
1921
1921
|
*
|
1922
|
-
* ```
|
1922
|
+
* ```rb
|
1923
1923
|
* scanner = StringScanner.new('foobarbaz')
|
1924
1924
|
* scanner.pre_match # => nil
|
1925
1925
|
*
|
@@ -1956,7 +1956,7 @@ strscan_pre_match(VALUE self)
|
|
1956
1956
|
* or `nil` otherwise;
|
1957
1957
|
* see [Basic Match Values][18]:
|
1958
1958
|
*
|
1959
|
-
* ```
|
1959
|
+
* ```rb
|
1960
1960
|
* scanner = StringScanner.new('foobarbaz')
|
1961
1961
|
* scanner.post_match # => nil
|
1962
1962
|
*
|
@@ -1991,7 +1991,7 @@ strscan_post_match(VALUE self)
|
|
1991
1991
|
* Returns the 'rest' of the [stored string][1] (all after the current [position][2]),
|
1992
1992
|
* which is the [target substring][3]:
|
1993
1993
|
*
|
1994
|
-
* ```
|
1994
|
+
* ```rb
|
1995
1995
|
* scanner = StringScanner.new('foobarbaz')
|
1996
1996
|
* scanner.rest # => "foobarbaz"
|
1997
1997
|
* scanner.pos = 3
|
@@ -2022,7 +2022,7 @@ strscan_rest(VALUE self)
|
|
2022
2022
|
*
|
2023
2023
|
* Returns the size (in bytes) of the #rest of the [stored string][1]:
|
2024
2024
|
*
|
2025
|
-
* ```
|
2025
|
+
* ```rb
|
2026
2026
|
* scanner = StringScanner.new('foobarbaz')
|
2027
2027
|
* scanner.rest # => "foobarbaz"
|
2028
2028
|
* scanner.rest_size # => 9
|
@@ -2081,7 +2081,7 @@ strscan_restsize(VALUE self)
|
|
2081
2081
|
* 3. The substring preceding the current position.
|
2082
2082
|
* 4. The substring following the current position (which is also the [target substring][3]).
|
2083
2083
|
*
|
2084
|
-
* ```
|
2084
|
+
* ```rb
|
2085
2085
|
* scanner = StringScanner.new("Fri Dec 12 1975 14:39")
|
2086
2086
|
* scanner.pos = 11
|
2087
2087
|
* scanner.inspect # => "#<StringScanner 11/21 \"...c 12 \" @ \"1975 ...\">"
|
@@ -2089,14 +2089,14 @@ strscan_restsize(VALUE self)
|
|
2089
2089
|
*
|
2090
2090
|
* If at beginning-of-string, item 4 above (following substring) is omitted:
|
2091
2091
|
*
|
2092
|
-
* ```
|
2092
|
+
* ```rb
|
2093
2093
|
* scanner.reset
|
2094
2094
|
* scanner.inspect # => "#<StringScanner 0/21 @ \"Fri D...\">"
|
2095
2095
|
* ```
|
2096
2096
|
*
|
2097
2097
|
* If at end-of-string, all items above are omitted:
|
2098
2098
|
*
|
2099
|
-
* ```
|
2099
|
+
* ```rb
|
2100
2100
|
* scanner.terminate
|
2101
2101
|
* scanner.inspect # => "#<StringScanner fin>"
|
2102
2102
|
* ```
|
@@ -2224,7 +2224,7 @@ named_captures_iter(const OnigUChar *name,
|
|
2224
2224
|
* if the most recent match attempt succeeded, or nil otherwise;
|
2225
2225
|
* see [Captured Match Values][13]:
|
2226
2226
|
*
|
2227
|
-
* ```
|
2227
|
+
* ```rb
|
2228
2228
|
* scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
2229
2229
|
* scanner.named_captures # => {}
|
2230
2230
|
*
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: strscan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
4
|
+
version: 3.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Minero Aoki
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2024-12-
|
13
|
+
date: 2024-12-15 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: Provides lexical scanning operations on a String.
|
16
16
|
email:
|