[ruby/strscan] [DOC] Add syntax highlighting to MarkDown code blocks
(https://github.com/ruby/strscan/pull/126) Split off from https://github.com/ruby/ruby/pull/12322 https://github.com/ruby/strscan/commit/9bee37e0f5
This commit is contained in:
parent
219c2eee5a
commit
41e24c2f3e
@ -10,7 +10,7 @@ Display scanner's situation:
|
|||||||
- Character position (`#charpos`)
|
- Character position (`#charpos`)
|
||||||
- Target string (`#rest`) and size (`#rest_size`).
|
- Target string (`#rest`) and size (`#rest_size`).
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new('foobarbaz')
|
scanner = StringScanner.new('foobarbaz')
|
||||||
scanner.scan(/foo/)
|
scanner.scan(/foo/)
|
||||||
put_situation(scanner)
|
put_situation(scanner)
|
||||||
@ -25,7 +25,7 @@ put_situation(scanner)
|
|||||||
|
|
||||||
Display the scanner's match values:
|
Display the scanner's match values:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
||||||
pattern = /(?<wday>\w+) (?<month>\w+) (?<day>\d+) /
|
pattern = /(?<wday>\w+) (?<month>\w+) (?<day>\d+) /
|
||||||
scanner.match?(pattern)
|
scanner.match?(pattern)
|
||||||
@ -53,7 +53,7 @@ put_match_values(scanner)
|
|||||||
|
|
||||||
Returns whether the scanner's match values are all properly cleared:
|
Returns whether the scanner's match values are all properly cleared:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new('foobarbaz')
|
scanner = StringScanner.new('foobarbaz')
|
||||||
match_values_cleared?(scanner) # => true
|
match_values_cleared?(scanner) # => true
|
||||||
put_match_values(scanner)
|
put_match_values(scanner)
|
||||||
@ -75,7 +75,7 @@ match_values_cleared?(scanner) # => false
|
|||||||
|
|
||||||
## The Code
|
## The Code
|
||||||
|
|
||||||
```
|
```rb
|
||||||
def put_situation(scanner)
|
def put_situation(scanner)
|
||||||
puts '# Situation:'
|
puts '# Situation:'
|
||||||
puts "# pos: #{scanner.pos}"
|
puts "# pos: #{scanner.pos}"
|
||||||
@ -83,9 +83,7 @@ def put_situation(scanner)
|
|||||||
puts "# rest: #{scanner.rest.inspect}"
|
puts "# rest: #{scanner.rest.inspect}"
|
||||||
puts "# rest_size: #{scanner.rest_size}"
|
puts "# rest_size: #{scanner.rest_size}"
|
||||||
end
|
end
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
def put_match_values(scanner)
|
def put_match_values(scanner)
|
||||||
puts '# Basic match values:'
|
puts '# Basic match values:'
|
||||||
puts "# matched?: #{scanner.matched?}"
|
puts "# matched?: #{scanner.matched?}"
|
||||||
@ -109,9 +107,7 @@ def put_match_values(scanner)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
def match_values_cleared?(scanner)
|
def match_values_cleared?(scanner)
|
||||||
scanner.matched? == false &&
|
scanner.matched? == false &&
|
||||||
scanner.matched_size.nil? &&
|
scanner.matched_size.nil? &&
|
||||||
|
@ -10,7 +10,7 @@ Returns the next byte, if available:
|
|||||||
- Increments the [byte position][2].
|
- Increments the [byte position][2].
|
||||||
- Adjusts the [character position][7].
|
- Adjusts the [character position][7].
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new(HIRAGANA_TEXT)
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
||||||
# => #<StringScanner 0/15 @ "\xE3\x81\x93\xE3\x82...">
|
# => #<StringScanner 0/15 @ "\xE3\x81\x93\xE3\x82...">
|
||||||
scanner.string # => "こんにちは"
|
scanner.string # => "こんにちは"
|
||||||
@ -24,7 +24,7 @@ Returns the next byte, if available:
|
|||||||
|
|
||||||
- Otherwise, returns `nil`, and does not change the positions.
|
- Otherwise, returns `nil`, and does not change the positions.
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner.terminate
|
scanner.terminate
|
||||||
[scanner.get_byte, scanner.pos, scanner.charpos] # => [nil, 15, 5]
|
[scanner.get_byte, scanner.pos, scanner.charpos] # => [nil, 15, 5]
|
||||||
```
|
```
|
||||||
|
@ -5,7 +5,7 @@ Returns the [character position][7] (initially zero),
|
|||||||
which may be different from the [byte position][2]
|
which may be different from the [byte position][2]
|
||||||
given by method #pos:
|
given by method #pos:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new(HIRAGANA_TEXT)
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
||||||
scanner.string # => "こんにちは"
|
scanner.string # => "こんにちは"
|
||||||
scanner.getch # => "こ" # 3-byte character.
|
scanner.getch # => "こ" # 3-byte character.
|
||||||
|
@ -4,7 +4,7 @@ call-seq:
|
|||||||
Returns the integer [byte position][2],
|
Returns the integer [byte position][2],
|
||||||
which may be different from the [character position][7]:
|
which may be different from the [character position][7]:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new(HIRAGANA_TEXT)
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
||||||
scanner.string # => "こんにちは"
|
scanner.string # => "こんにちは"
|
||||||
scanner.pos # => 0
|
scanner.pos # => 0
|
||||||
|
@ -12,7 +12,7 @@ if available:
|
|||||||
- Increments the [byte position][2]
|
- Increments the [byte position][2]
|
||||||
by the size (in bytes) of the character.
|
by the size (in bytes) of the character.
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new(HIRAGANA_TEXT)
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
||||||
scanner.string # => "こんにちは"
|
scanner.string # => "こんにちは"
|
||||||
[scanner.getch, scanner.pos, scanner.charpos] # => ["こ", 3, 1]
|
[scanner.getch, scanner.pos, scanner.charpos] # => ["こ", 3, 1]
|
||||||
@ -27,7 +27,7 @@ if available:
|
|||||||
(that is, not at its beginning),
|
(that is, not at its beginning),
|
||||||
behaves like #get_byte (returns a 1-byte character):
|
behaves like #get_byte (returns a 1-byte character):
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner.pos = 1
|
scanner.pos = 1
|
||||||
[scanner.getch, scanner.pos, scanner.charpos] # => ["\x81", 2, 2]
|
[scanner.getch, scanner.pos, scanner.charpos] # => ["\x81", 2, 2]
|
||||||
[scanner.getch, scanner.pos, scanner.charpos] # => ["\x93", 3, 1]
|
[scanner.getch, scanner.pos, scanner.charpos] # => ["\x93", 3, 1]
|
||||||
@ -37,7 +37,7 @@ if available:
|
|||||||
- If the [position][2] is at the end of the [stored string][1],
|
- If the [position][2] is at the end of the [stored string][1],
|
||||||
returns `nil` and does not modify the positions:
|
returns `nil` and does not modify the positions:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner.terminate
|
scanner.terminate
|
||||||
[scanner.getch, scanner.pos, scanner.charpos] # => [nil, 15, 5]
|
[scanner.getch, scanner.pos, scanner.charpos] # => [nil, 15, 5]
|
||||||
```
|
```
|
||||||
|
@ -11,7 +11,7 @@ If the match succeeds:
|
|||||||
and may increment the [character position][7].
|
and may increment the [character position][7].
|
||||||
- Sets [match values][9].
|
- Sets [match values][9].
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new(HIRAGANA_TEXT)
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
||||||
scanner.string # => "こんにちは"
|
scanner.string # => "こんにちは"
|
||||||
scanner.pos = 6
|
scanner.pos = 6
|
||||||
@ -45,7 +45,7 @@ If the match fails:
|
|||||||
- Does not increment byte and character positions.
|
- Does not increment byte and character positions.
|
||||||
- Clears match values.
|
- Clears match values.
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner.scan(/nope/) # => nil
|
scanner.scan(/nope/) # => nil
|
||||||
match_values_cleared?(scanner) # => true
|
match_values_cleared?(scanner) # => true
|
||||||
```
|
```
|
||||||
|
@ -12,7 +12,7 @@ If the match attempt succeeds:
|
|||||||
- Returns the matched substring.
|
- Returns the matched substring.
|
||||||
|
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new(HIRAGANA_TEXT)
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
||||||
scanner.string # => "こんにちは"
|
scanner.string # => "こんにちは"
|
||||||
scanner.pos = 6
|
scanner.pos = 6
|
||||||
@ -46,7 +46,7 @@ If the match attempt fails:
|
|||||||
- Returns `nil`.
|
- Returns `nil`.
|
||||||
- Does not update positions.
|
- Does not update positions.
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner.scan_until(/nope/) # => nil
|
scanner.scan_until(/nope/) # => nil
|
||||||
match_values_cleared?(scanner) # => true
|
match_values_cleared?(scanner) # => true
|
||||||
```
|
```
|
||||||
|
@ -9,7 +9,7 @@ Does not affect [match values][9].
|
|||||||
|
|
||||||
For non-negative `n`, sets the position to `n`:
|
For non-negative `n`, sets the position to `n`:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new(HIRAGANA_TEXT)
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
||||||
scanner.string # => "こんにちは"
|
scanner.string # => "こんにちは"
|
||||||
scanner.pos = 3 # => 3
|
scanner.pos = 3 # => 3
|
||||||
@ -19,7 +19,7 @@ scanner.charpos # => 1
|
|||||||
|
|
||||||
For negative `n`, counts from the end of the [stored string][1]:
|
For negative `n`, counts from the end of the [stored string][1]:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner.pos = -9 # => -9
|
scanner.pos = -9 # => -9
|
||||||
scanner.pos # => 6
|
scanner.pos # => 6
|
||||||
scanner.rest # => "にちは"
|
scanner.rest # => "にちは"
|
||||||
|
@ -11,7 +11,7 @@ If the match succeeds:
|
|||||||
- Sets [match values][9].
|
- Sets [match values][9].
|
||||||
- Returns the size (bytes) of the matched substring.
|
- Returns the size (bytes) of the matched substring.
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new(HIRAGANA_TEXT)
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
||||||
scanner.string # => "こんにちは"
|
scanner.string # => "こんにちは"
|
||||||
scanner.pos = 6
|
scanner.pos = 6
|
||||||
|
@ -10,7 +10,7 @@ If the match attempt succeeds:
|
|||||||
- Sets [match values][9].
|
- Sets [match values][9].
|
||||||
- Returns the size of the matched substring.
|
- Returns the size of the matched substring.
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new(HIRAGANA_TEXT)
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
||||||
scanner.string # => "こんにちは"
|
scanner.string # => "こんにちは"
|
||||||
scanner.pos = 6
|
scanner.pos = 6
|
||||||
@ -43,7 +43,7 @@ If the match attempt fails:
|
|||||||
- Clears match values.
|
- Clears match values.
|
||||||
- Returns `nil`.
|
- Returns `nil`.
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner.skip_until(/nope/) # => nil
|
scanner.skip_until(/nope/) # => nil
|
||||||
match_values_cleared?(scanner) # => true
|
match_values_cleared?(scanner) # => true
|
||||||
```
|
```
|
||||||
|
@ -7,7 +7,7 @@ returns +self+:
|
|||||||
- Sets both [positions][11] to end-of-stream.
|
- Sets both [positions][11] to end-of-stream.
|
||||||
- Clears [match values][9].
|
- Clears [match values][9].
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new(HIRAGANA_TEXT)
|
scanner = StringScanner.new(HIRAGANA_TEXT)
|
||||||
scanner.string # => "こんにちは"
|
scanner.string # => "こんにちは"
|
||||||
scanner.scan_until(/に/)
|
scanner.scan_until(/に/)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
\Class `StringScanner` supports processing a stored string as a stream;
|
\Class `StringScanner` supports processing a stored string as a stream;
|
||||||
this code creates a new `StringScanner` object with string `'foobarbaz'`:
|
this code creates a new `StringScanner` object with string `'foobarbaz'`:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
require 'strscan'
|
require 'strscan'
|
||||||
scanner = StringScanner.new('foobarbaz')
|
scanner = StringScanner.new('foobarbaz')
|
||||||
```
|
```
|
||||||
@ -10,13 +10,13 @@ scanner = StringScanner.new('foobarbaz')
|
|||||||
|
|
||||||
All examples here assume that `StringScanner` has been required:
|
All examples here assume that `StringScanner` has been required:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
require 'strscan'
|
require 'strscan'
|
||||||
```
|
```
|
||||||
|
|
||||||
Some examples here assume that these constants are defined:
|
Some examples here assume that these constants are defined:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
MULTILINE_TEXT = <<~EOT
|
MULTILINE_TEXT = <<~EOT
|
||||||
Go placidly amid the noise and haste,
|
Go placidly amid the noise and haste,
|
||||||
and remember what peace there may be in silence.
|
and remember what peace there may be in silence.
|
||||||
@ -45,7 +45,7 @@ This code creates a `StringScanner` object
|
|||||||
(we'll call it simply a _scanner_),
|
(we'll call it simply a _scanner_),
|
||||||
and shows some of its basic properties:
|
and shows some of its basic properties:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new('foobarbaz')
|
scanner = StringScanner.new('foobarbaz')
|
||||||
scanner.string # => "foobarbaz"
|
scanner.string # => "foobarbaz"
|
||||||
put_situation(scanner)
|
put_situation(scanner)
|
||||||
@ -138,7 +138,7 @@ To get or set the byte position:
|
|||||||
Many methods use the byte position as the basis for finding matches;
|
Many methods use the byte position as the basis for finding matches;
|
||||||
many others set, increment, or decrement the byte position:
|
many others set, increment, or decrement the byte position:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new('foobar')
|
scanner = StringScanner.new('foobar')
|
||||||
scanner.pos # => 0
|
scanner.pos # => 0
|
||||||
scanner.scan(/foo/) # => "foo" # Match found.
|
scanner.scan(/foo/) # => "foo" # Match found.
|
||||||
@ -176,7 +176,7 @@ see:
|
|||||||
|
|
||||||
Example (string includes multi-byte characters):
|
Example (string includes multi-byte characters):
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new(ENGLISH_TEXT) # Five 1-byte characters.
|
scanner = StringScanner.new(ENGLISH_TEXT) # Five 1-byte characters.
|
||||||
scanner.concat(HIRAGANA_TEXT) # Five 3-byte characters
|
scanner.concat(HIRAGANA_TEXT) # Five 3-byte characters
|
||||||
scanner.string # => "Helloこんにちは" # Twenty bytes in all.
|
scanner.string # => "Helloこんにちは" # Twenty bytes in all.
|
||||||
@ -216,7 +216,7 @@ and its size is returned by method #rest_size.
|
|||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new('foobarbaz')
|
scanner = StringScanner.new('foobarbaz')
|
||||||
put_situation(scanner)
|
put_situation(scanner)
|
||||||
# Situation:
|
# Situation:
|
||||||
@ -430,7 +430,7 @@ See examples below.
|
|||||||
|
|
||||||
Successful basic match attempt (no captures):
|
Successful basic match attempt (no captures):
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new('foobarbaz')
|
scanner = StringScanner.new('foobarbaz')
|
||||||
scanner.exist?(/bar/)
|
scanner.exist?(/bar/)
|
||||||
put_match_values(scanner)
|
put_match_values(scanner)
|
||||||
@ -452,7 +452,7 @@ put_match_values(scanner)
|
|||||||
|
|
||||||
Failed basic match attempt (no captures);
|
Failed basic match attempt (no captures);
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new('foobarbaz')
|
scanner = StringScanner.new('foobarbaz')
|
||||||
scanner.exist?(/nope/)
|
scanner.exist?(/nope/)
|
||||||
match_values_cleared?(scanner) # => true
|
match_values_cleared?(scanner) # => true
|
||||||
@ -460,7 +460,7 @@ match_values_cleared?(scanner) # => true
|
|||||||
|
|
||||||
Successful unnamed capture match attempt:
|
Successful unnamed capture match attempt:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new('foobarbazbatbam')
|
scanner = StringScanner.new('foobarbazbatbam')
|
||||||
scanner.exist?(/(foo)bar(baz)bat(bam)/)
|
scanner.exist?(/(foo)bar(baz)bat(bam)/)
|
||||||
put_match_values(scanner)
|
put_match_values(scanner)
|
||||||
@ -486,7 +486,7 @@ put_match_values(scanner)
|
|||||||
Successful named capture match attempt;
|
Successful named capture match attempt;
|
||||||
same as unnamed above, except for #named_captures:
|
same as unnamed above, except for #named_captures:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new('foobarbazbatbam')
|
scanner = StringScanner.new('foobarbazbatbam')
|
||||||
scanner.exist?(/(?<x>foo)bar(?<y>baz)bat(?<z>bam)/)
|
scanner.exist?(/(?<x>foo)bar(?<y>baz)bat(?<z>bam)/)
|
||||||
scanner.named_captures # => {"x"=>"foo", "y"=>"baz", "z"=>"bam"}
|
scanner.named_captures # => {"x"=>"foo", "y"=>"baz", "z"=>"bam"}
|
||||||
@ -494,7 +494,7 @@ scanner.named_captures # => {"x"=>"foo", "y"=>"baz", "z"=>"bam"}
|
|||||||
|
|
||||||
Failed unnamed capture match attempt:
|
Failed unnamed capture match attempt:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new('somestring')
|
scanner = StringScanner.new('somestring')
|
||||||
scanner.exist?(/(foo)bar(baz)bat(bam)/)
|
scanner.exist?(/(foo)bar(baz)bat(bam)/)
|
||||||
match_values_cleared?(scanner) # => true
|
match_values_cleared?(scanner) # => true
|
||||||
@ -503,7 +503,7 @@ match_values_cleared?(scanner) # => true
|
|||||||
Failed named capture match attempt;
|
Failed named capture match attempt;
|
||||||
same as unnamed above, except for #named_captures:
|
same as unnamed above, except for #named_captures:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new('somestring')
|
scanner = StringScanner.new('somestring')
|
||||||
scanner.exist?(/(?<x>foo)bar(?<y>baz)bat(?<z>bam)/)
|
scanner.exist?(/(?<x>foo)bar(?<y>baz)bat(?<z>bam)/)
|
||||||
match_values_cleared?(scanner) # => false
|
match_values_cleared?(scanner) # => false
|
||||||
@ -518,7 +518,7 @@ which determines the meaning of `'\A'`:
|
|||||||
|
|
||||||
* `false` (the default): matches the current byte position.
|
* `false` (the default): matches the current byte position.
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new('foobar')
|
scanner = StringScanner.new('foobar')
|
||||||
scanner.scan(/\A./) # => "f"
|
scanner.scan(/\A./) # => "f"
|
||||||
scanner.scan(/\A./) # => "o"
|
scanner.scan(/\A./) # => "o"
|
||||||
@ -529,7 +529,7 @@ which determines the meaning of `'\A'`:
|
|||||||
* `true`: matches the beginning of the target substring;
|
* `true`: matches the beginning of the target substring;
|
||||||
never matches unless the byte position is zero:
|
never matches unless the byte position is zero:
|
||||||
|
|
||||||
```
|
```rb
|
||||||
scanner = StringScanner.new('foobar', fixed_anchor: true)
|
scanner = StringScanner.new('foobar', fixed_anchor: true)
|
||||||
scanner.scan(/\A./) # => "f"
|
scanner.scan(/\A./) # => "f"
|
||||||
scanner.scan(/\A./) # => nil
|
scanner.scan(/\A./) # => nil
|
||||||
|
@ -231,7 +231,7 @@ strscan_s_allocate(VALUE klass)
|
|||||||
* is the given `string`;
|
* is the given `string`;
|
||||||
* sets the [fixed-anchor property][10]:
|
* sets the [fixed-anchor property][10]:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbaz')
|
* scanner = StringScanner.new('foobarbaz')
|
||||||
* scanner.string # => "foobarbaz"
|
* scanner.string # => "foobarbaz"
|
||||||
* scanner.fixed_anchor? # => false
|
* scanner.fixed_anchor? # => false
|
||||||
@ -339,7 +339,7 @@ strscan_s_mustc(VALUE self)
|
|||||||
* and clears [match values][9];
|
* and clears [match values][9];
|
||||||
* returns +self+:
|
* returns +self+:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbaz')
|
* scanner = StringScanner.new('foobarbaz')
|
||||||
* scanner.exist?(/bar/) # => 6
|
* scanner.exist?(/bar/) # => 6
|
||||||
* scanner.reset # => #<StringScanner 0/9 @ "fooba...">
|
* scanner.reset # => #<StringScanner 0/9 @ "fooba...">
|
||||||
@ -405,7 +405,7 @@ strscan_clear(VALUE self)
|
|||||||
*
|
*
|
||||||
* Returns the [stored string][1]:
|
* Returns the [stored string][1]:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobar')
|
* scanner = StringScanner.new('foobar')
|
||||||
* scanner.string # => "foobar"
|
* scanner.string # => "foobar"
|
||||||
* scanner.concat('baz')
|
* scanner.concat('baz')
|
||||||
@ -435,7 +435,7 @@ strscan_get_string(VALUE self)
|
|||||||
* - Clears [match values][9].
|
* - Clears [match values][9].
|
||||||
* - Returns `other_string`.
|
* - Returns `other_string`.
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobar')
|
* scanner = StringScanner.new('foobar')
|
||||||
* scanner.scan(/foo/)
|
* scanner.scan(/foo/)
|
||||||
* put_situation(scanner)
|
* put_situation(scanner)
|
||||||
@ -483,7 +483,7 @@ strscan_set_string(VALUE self, VALUE str)
|
|||||||
* or [match values][9].
|
* or [match values][9].
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foo')
|
* scanner = StringScanner.new('foo')
|
||||||
* scanner.string # => "foo"
|
* scanner.string # => "foo"
|
||||||
* scanner.terminate
|
* scanner.terminate
|
||||||
@ -789,7 +789,7 @@ strscan_scan(VALUE self, VALUE re)
|
|||||||
* - Returns the size in bytes of the matched substring.
|
* - Returns the size in bytes of the matched substring.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbaz')
|
* scanner = StringScanner.new('foobarbaz')
|
||||||
* scanner.pos = 3
|
* scanner.pos = 3
|
||||||
* scanner.match?(/bar/) => 3
|
* scanner.match?(/bar/) => 3
|
||||||
@ -822,7 +822,7 @@ strscan_scan(VALUE self, VALUE re)
|
|||||||
* - Returns `nil`.
|
* - Returns `nil`.
|
||||||
* - Does not increment positions.
|
* - Does not increment positions.
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner.match?(/nope/) # => nil
|
* scanner.match?(/nope/) # => nil
|
||||||
* match_values_cleared?(scanner) # => true
|
* match_values_cleared?(scanner) # => true
|
||||||
* ```
|
* ```
|
||||||
@ -861,7 +861,7 @@ strscan_skip(VALUE self, VALUE re)
|
|||||||
* - Returns the matched substring.
|
* - Returns the matched substring.
|
||||||
* - Sets all [match values][9].
|
* - Sets all [match values][9].
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbaz')
|
* scanner = StringScanner.new('foobarbaz')
|
||||||
* scanner.pos = 3
|
* scanner.pos = 3
|
||||||
* scanner.check('bar') # => "bar"
|
* scanner.check('bar') # => "bar"
|
||||||
@ -894,7 +894,7 @@ strscan_skip(VALUE self, VALUE re)
|
|||||||
* - Returns `nil`.
|
* - Returns `nil`.
|
||||||
* - Clears all [match values][9].
|
* - Clears all [match values][9].
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner.check(/nope/) # => nil
|
* scanner.check(/nope/) # => nil
|
||||||
* match_values_cleared?(scanner) # => true
|
* match_values_cleared?(scanner) # => true
|
||||||
* ```
|
* ```
|
||||||
@ -961,7 +961,7 @@ strscan_scan_until(VALUE self, VALUE re)
|
|||||||
* and the end of the matched substring.
|
* and the end of the matched substring.
|
||||||
* - Sets all [match values][9].
|
* - Sets all [match values][9].
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbazbatbam')
|
* scanner = StringScanner.new('foobarbazbatbam')
|
||||||
* scanner.pos = 6
|
* scanner.pos = 6
|
||||||
* scanner.exist?(/bat/) # => 6
|
* scanner.exist?(/bat/) # => 6
|
||||||
@ -993,7 +993,7 @@ strscan_scan_until(VALUE self, VALUE re)
|
|||||||
* - Returns `nil`.
|
* - Returns `nil`.
|
||||||
* - Clears all [match values][9].
|
* - Clears all [match values][9].
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner.exist?(/nope/) # => nil
|
* scanner.exist?(/nope/) # => nil
|
||||||
* match_values_cleared?(scanner) # => true
|
* match_values_cleared?(scanner) # => true
|
||||||
* ```
|
* ```
|
||||||
@ -1035,7 +1035,7 @@ strscan_skip_until(VALUE self, VALUE re)
|
|||||||
* which extends from the current [position][2]
|
* which extends from the current [position][2]
|
||||||
* to the end of the matched substring.
|
* to the end of the matched substring.
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbazbatbam')
|
* scanner = StringScanner.new('foobarbazbatbam')
|
||||||
* scanner.pos = 6
|
* scanner.pos = 6
|
||||||
* scanner.check_until(/bat/) # => "bazbat"
|
* scanner.check_until(/bat/) # => "bazbat"
|
||||||
@ -1067,7 +1067,7 @@ strscan_skip_until(VALUE self, VALUE re)
|
|||||||
* - Clears all [match values][9].
|
* - Clears all [match values][9].
|
||||||
* - Returns `nil`.
|
* - Returns `nil`.
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner.check_until(/nope/) # => nil
|
* scanner.check_until(/nope/) # => nil
|
||||||
* match_values_cleared?(scanner) # => true
|
* match_values_cleared?(scanner) # => true
|
||||||
* ```
|
* ```
|
||||||
@ -1239,7 +1239,7 @@ strscan_getbyte(VALUE self)
|
|||||||
* Returns the substring `string[pos, length]`;
|
* Returns the substring `string[pos, length]`;
|
||||||
* does not update [match values][9] or [positions][11]:
|
* does not update [match values][9] or [positions][11]:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbaz')
|
* scanner = StringScanner.new('foobarbaz')
|
||||||
* scanner.pos = 3
|
* scanner.pos = 3
|
||||||
* scanner.peek(3) # => "bar"
|
* scanner.peek(3) # => "bar"
|
||||||
@ -1403,7 +1403,7 @@ strscan_scan_base16_integer(VALUE self)
|
|||||||
* Sets the [position][2] to its value previous to the recent successful
|
* Sets the [position][2] to its value previous to the recent successful
|
||||||
* [match][17] attempt:
|
* [match][17] attempt:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbaz')
|
* scanner = StringScanner.new('foobarbaz')
|
||||||
* scanner.scan(/foo/)
|
* scanner.scan(/foo/)
|
||||||
* put_situation(scanner)
|
* put_situation(scanner)
|
||||||
@ -1424,7 +1424,7 @@ strscan_scan_base16_integer(VALUE self)
|
|||||||
*
|
*
|
||||||
* Raises an exception if match values are clear:
|
* Raises an exception if match values are clear:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner.scan(/nope/) # => nil
|
* scanner.scan(/nope/) # => nil
|
||||||
* match_values_cleared?(scanner) # => true
|
* match_values_cleared?(scanner) # => true
|
||||||
* scanner.unscan # Raises StringScanner::Error.
|
* scanner.unscan # Raises StringScanner::Error.
|
||||||
@ -1498,7 +1498,7 @@ strscan_bol_p(VALUE self)
|
|||||||
* Returns whether the [position][2]
|
* Returns whether the [position][2]
|
||||||
* is at the end of the [stored string][1]:
|
* is at the end of the [stored string][1]:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbaz')
|
* scanner = StringScanner.new('foobarbaz')
|
||||||
* scanner.eos? # => false
|
* scanner.eos? # => false
|
||||||
* pos = 3
|
* pos = 3
|
||||||
@ -1567,7 +1567,7 @@ strscan_rest_p(VALUE self)
|
|||||||
* `false` otherwise;
|
* `false` otherwise;
|
||||||
* see [Basic Matched Values][18]:
|
* see [Basic Matched Values][18]:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbaz')
|
* scanner = StringScanner.new('foobarbaz')
|
||||||
* scanner.matched? # => false
|
* scanner.matched? # => false
|
||||||
* scanner.pos = 3
|
* scanner.pos = 3
|
||||||
@ -1599,7 +1599,7 @@ strscan_matched_p(VALUE self)
|
|||||||
* or `nil` otherwise;
|
* or `nil` otherwise;
|
||||||
* see [Basic Matched Values][18]:
|
* see [Basic Matched Values][18]:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbaz')
|
* scanner = StringScanner.new('foobarbaz')
|
||||||
* scanner.matched # => nil
|
* scanner.matched # => nil
|
||||||
* scanner.pos = 3
|
* scanner.pos = 3
|
||||||
@ -1634,7 +1634,7 @@ strscan_matched(VALUE self)
|
|||||||
* or `nil` otherwise;
|
* or `nil` otherwise;
|
||||||
* see [Basic Matched Values][18]:
|
* see [Basic Matched Values][18]:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbaz')
|
* scanner = StringScanner.new('foobarbaz')
|
||||||
* scanner.matched_size # => nil
|
* scanner.matched_size # => nil
|
||||||
*
|
*
|
||||||
@ -1688,14 +1688,14 @@ name_to_backref_number(struct re_registers *regs, VALUE regexp, const char* name
|
|||||||
*
|
*
|
||||||
* When there are captures:
|
* When there are captures:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
* scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
||||||
* scanner.scan(/(?<wday>\w+) (?<month>\w+) (?<day>\d+) /)
|
* scanner.scan(/(?<wday>\w+) (?<month>\w+) (?<day>\d+) /)
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* - `specifier` zero: returns the entire matched substring:
|
* - `specifier` zero: returns the entire matched substring:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner[0] # => "Fri Dec 12 "
|
* scanner[0] # => "Fri Dec 12 "
|
||||||
* scanner.pre_match # => ""
|
* scanner.pre_match # => ""
|
||||||
* scanner.post_match # => "1975 14:39"
|
* scanner.post_match # => "1975 14:39"
|
||||||
@ -1703,7 +1703,7 @@ name_to_backref_number(struct re_registers *regs, VALUE regexp, const char* name
|
|||||||
*
|
*
|
||||||
* - `specifier` positive integer. returns the `n`th capture, or `nil` if out of range:
|
* - `specifier` positive integer. returns the `n`th capture, or `nil` if out of range:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner[1] # => "Fri"
|
* scanner[1] # => "Fri"
|
||||||
* scanner[2] # => "Dec"
|
* scanner[2] # => "Dec"
|
||||||
* scanner[3] # => "12"
|
* scanner[3] # => "12"
|
||||||
@ -1712,7 +1712,7 @@ name_to_backref_number(struct re_registers *regs, VALUE regexp, const char* name
|
|||||||
*
|
*
|
||||||
* - `specifier` negative integer. counts backward from the last subgroup:
|
* - `specifier` negative integer. counts backward from the last subgroup:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner[-1] # => "12"
|
* scanner[-1] # => "12"
|
||||||
* scanner[-4] # => "Fri Dec 12 "
|
* scanner[-4] # => "Fri Dec 12 "
|
||||||
* scanner[-5] # => nil
|
* scanner[-5] # => nil
|
||||||
@ -1720,7 +1720,7 @@ name_to_backref_number(struct re_registers *regs, VALUE regexp, const char* name
|
|||||||
*
|
*
|
||||||
* - `specifier` symbol or string. returns the named subgroup, or `nil` if no such:
|
* - `specifier` symbol or string. returns the named subgroup, or `nil` if no such:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner[:wday] # => "Fri"
|
* scanner[:wday] # => "Fri"
|
||||||
* scanner['wday'] # => "Fri"
|
* scanner['wday'] # => "Fri"
|
||||||
* scanner[:month] # => "Dec"
|
* scanner[:month] # => "Dec"
|
||||||
@ -1730,7 +1730,7 @@ name_to_backref_number(struct re_registers *regs, VALUE regexp, const char* name
|
|||||||
*
|
*
|
||||||
* When there are no captures, only `[0]` returns non-`nil`:
|
* When there are no captures, only `[0]` returns non-`nil`:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbaz')
|
* scanner = StringScanner.new('foobarbaz')
|
||||||
* scanner.exist?(/bar/)
|
* scanner.exist?(/bar/)
|
||||||
* scanner[0] # => "bar"
|
* scanner[0] # => "bar"
|
||||||
@ -1739,7 +1739,7 @@ name_to_backref_number(struct re_registers *regs, VALUE regexp, const char* name
|
|||||||
*
|
*
|
||||||
* For a failed match, even `[0]` returns `nil`:
|
* For a failed match, even `[0]` returns `nil`:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner.scan(/nope/) # => nil
|
* scanner.scan(/nope/) # => nil
|
||||||
* scanner[0] # => nil
|
* scanner[0] # => nil
|
||||||
* scanner[1] # => nil
|
* scanner[1] # => nil
|
||||||
@ -1790,7 +1790,7 @@ strscan_aref(VALUE self, VALUE idx)
|
|||||||
* Returns the count of captures if the most recent match attempt succeeded, `nil` otherwise;
|
* Returns the count of captures if the most recent match attempt succeeded, `nil` otherwise;
|
||||||
* see [Captures Match Values][13]:
|
* see [Captures Match Values][13]:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
* scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
||||||
* scanner.size # => nil
|
* scanner.size # => nil
|
||||||
*
|
*
|
||||||
@ -1824,7 +1824,7 @@ strscan_size(VALUE self)
|
|||||||
* Returns the array of [captured match values][13] at indexes `(1..)`
|
* Returns the array of [captured match values][13] at indexes `(1..)`
|
||||||
* if the most recent match attempt succeeded, or `nil` otherwise:
|
* if the most recent match attempt succeeded, or `nil` otherwise:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
* scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
||||||
* scanner.captures # => nil
|
* scanner.captures # => nil
|
||||||
*
|
*
|
||||||
@ -1879,7 +1879,7 @@ strscan_captures(VALUE self)
|
|||||||
* For each `specifier`, the returned substring is `[specifier]`;
|
* For each `specifier`, the returned substring is `[specifier]`;
|
||||||
* see #[].
|
* see #[].
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
* scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
||||||
* pattern = /(?<wday>\w+) (?<month>\w+) (?<day>\d+) /
|
* pattern = /(?<wday>\w+) (?<month>\w+) (?<day>\d+) /
|
||||||
* scanner.match?(pattern)
|
* scanner.match?(pattern)
|
||||||
@ -1919,7 +1919,7 @@ strscan_values_at(int argc, VALUE *argv, VALUE self)
|
|||||||
* or `nil` otherwise;
|
* or `nil` otherwise;
|
||||||
* see [Basic Match Values][18]:
|
* see [Basic Match Values][18]:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbaz')
|
* scanner = StringScanner.new('foobarbaz')
|
||||||
* scanner.pre_match # => nil
|
* scanner.pre_match # => nil
|
||||||
*
|
*
|
||||||
@ -1956,7 +1956,7 @@ strscan_pre_match(VALUE self)
|
|||||||
* or `nil` otherwise;
|
* or `nil` otherwise;
|
||||||
* see [Basic Match Values][18]:
|
* see [Basic Match Values][18]:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbaz')
|
* scanner = StringScanner.new('foobarbaz')
|
||||||
* scanner.post_match # => nil
|
* scanner.post_match # => nil
|
||||||
*
|
*
|
||||||
@ -1991,7 +1991,7 @@ strscan_post_match(VALUE self)
|
|||||||
* Returns the 'rest' of the [stored string][1] (all after the current [position][2]),
|
* Returns the 'rest' of the [stored string][1] (all after the current [position][2]),
|
||||||
* which is the [target substring][3]:
|
* which is the [target substring][3]:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbaz')
|
* scanner = StringScanner.new('foobarbaz')
|
||||||
* scanner.rest # => "foobarbaz"
|
* scanner.rest # => "foobarbaz"
|
||||||
* scanner.pos = 3
|
* scanner.pos = 3
|
||||||
@ -2022,7 +2022,7 @@ strscan_rest(VALUE self)
|
|||||||
*
|
*
|
||||||
* Returns the size (in bytes) of the #rest of the [stored string][1]:
|
* Returns the size (in bytes) of the #rest of the [stored string][1]:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('foobarbaz')
|
* scanner = StringScanner.new('foobarbaz')
|
||||||
* scanner.rest # => "foobarbaz"
|
* scanner.rest # => "foobarbaz"
|
||||||
* scanner.rest_size # => 9
|
* scanner.rest_size # => 9
|
||||||
@ -2081,7 +2081,7 @@ strscan_restsize(VALUE self)
|
|||||||
* 3. The substring preceding the current position.
|
* 3. The substring preceding the current position.
|
||||||
* 4. The substring following the current position (which is also the [target substring][3]).
|
* 4. The substring following the current position (which is also the [target substring][3]).
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new("Fri Dec 12 1975 14:39")
|
* scanner = StringScanner.new("Fri Dec 12 1975 14:39")
|
||||||
* scanner.pos = 11
|
* scanner.pos = 11
|
||||||
* scanner.inspect # => "#<StringScanner 11/21 \"...c 12 \" @ \"1975 ...\">"
|
* scanner.inspect # => "#<StringScanner 11/21 \"...c 12 \" @ \"1975 ...\">"
|
||||||
@ -2089,14 +2089,14 @@ strscan_restsize(VALUE self)
|
|||||||
*
|
*
|
||||||
* If at beginning-of-string, item 4 above (following substring) is omitted:
|
* If at beginning-of-string, item 4 above (following substring) is omitted:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner.reset
|
* scanner.reset
|
||||||
* scanner.inspect # => "#<StringScanner 0/21 @ \"Fri D...\">"
|
* scanner.inspect # => "#<StringScanner 0/21 @ \"Fri D...\">"
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* If at end-of-string, all items above are omitted:
|
* If at end-of-string, all items above are omitted:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner.terminate
|
* scanner.terminate
|
||||||
* scanner.inspect # => "#<StringScanner fin>"
|
* scanner.inspect # => "#<StringScanner fin>"
|
||||||
* ```
|
* ```
|
||||||
@ -2224,7 +2224,7 @@ named_captures_iter(const OnigUChar *name,
|
|||||||
* if the most recent match attempt succeeded, or nil otherwise;
|
* if the most recent match attempt succeeded, or nil otherwise;
|
||||||
* see [Captured Match Values][13]:
|
* see [Captured Match Values][13]:
|
||||||
*
|
*
|
||||||
* ```
|
* ```rb
|
||||||
* scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
* scanner = StringScanner.new('Fri Dec 12 1975 14:39')
|
||||||
* scanner.named_captures # => {}
|
* scanner.named_captures # => {}
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user