Class: MaRuKu::In::Markdown::SpanLevelParser::CharSourceStrscan

### Home Classes Methods

### In Files

- lib/maruku/input/charsource.rb

### Parent

Object

### Methods

- ::new
- #consume_whitespace
- #cur_char
- #cur_chars
- #cur_chars_are
- #current_remaining_buffer
- #describe
- #ignore_char
- #ignore_chars
- #next_char
- #next_matches
- #read_regexp
- #shift_char

### Class/Module Index

Quicksearch

- MaRuKu
- MaRuKu::AttributeList
- MaRuKu::Errors
- MaRuKu::Exception
- MaRuKu::HTMLElement
- MaRuKu::HTMLFragment
- MaRuKu::Helpers
- MaRuKu::In
- MaRuKu::In::Markdown
- MaRuKu::In::Markdown::BlockLevelParser
- MaRuKu::In::Markdown::BlockLevelParser::BlockContext
- MaRuKu::In::Markdown::BlockLevelParser::LineSource
- MaRuKu::In::Markdown::SpanExtension
- MaRuKu::In::Markdown::SpanLevelParser
- MaRuKu::In::Markdown::SpanLevelParser::CharSourceDebug
- MaRuKu::In::Markdown::SpanLevelParser::CharSourceManual
- MaRuKu::In::Markdown::SpanLevelParser::CharSourceStrscan
- MaRuKu::In::Markdown::SpanLevelParser::HTMLHelper
- MaRuKu::In::Markdown::SpanLevelParser::SpanContext
- MaRuKu::MDDocument
- MaRuKu::MDElement
- MaRuKu::MDHTMLElement
- MaRuKu::MDLine
- MaRuKu::NokogiriHTMLFragment
- MaRuKu::Out
- MaRuKu::Out::EntityTable
- MaRuKu::Out::HTML
- MaRuKu::Out::HTML::HTMLElement
- MaRuKu::Out::Latex
- MaRuKu::Out::Latex::MDDocumentExtensions
- MaRuKu::Out::Markdown
- MaRuKu::REXMLHTMLFragment
- MaRuKu::Section
- MaRuKu::Strings
- Maruku
- Maruku::In
- Maruku::In::Markdown
- Maruku::In::Markdown::FencedCode
- Object
- String
- Textile2Signature

No matching classes.

# MaRuKu::In::Markdown::SpanLevelParser::CharSourceStrscan

a wrapper around StringScanner

### Public Class Methods

new(s, parent=nil) click to toggle source

    # File lib/maruku/input/charsource.rb, line 139
    def initialize(s, parent=nil)
      @scanner = StringScanner.new(s)
      @size = s.size
    end

### Public Instance Methods

consume_whitespace() click to toggle source

    # File lib/maruku/input/charsource.rb, line 193
    def consume_whitespace
      @scanner.skip(/\s+/)
    end

cur_char() click to toggle source

Return current char as a String (or nil).

    # File lib/maruku/input/charsource.rb, line 145
    def cur_char
      @scanner.peek(1)[0]
    end

cur_chars(n) click to toggle source

Return the next n chars as a String.

    # File lib/maruku/input/charsource.rb, line 150
    def cur_chars(n)
      @scanner.peek(n)
    end

cur_chars_are(string) click to toggle source

Returns true if string matches what we're pointing to

    # File lib/maruku/input/charsource.rb, line 180
    def cur_chars_are(string)
      @scanner.peek(string.size) == string
    end

current_remaining_buffer() click to toggle source

Return the rest of the string

    # File lib/maruku/input/charsource.rb, line 175
    def current_remaining_buffer
      @scanner.rest
    end

describe() click to toggle source

    # File lib/maruku/input/charsource.rb, line 197
    def describe
      len = 75
      num_before = [len/2, @scanner.pos].min
      num_after = [len/2, @scanner.rest_size].min
      num_before_max = @scanner.pos
      num_after_max = @scanner.rest_size

      num_before = [num_before_max, len - num_after].min
      num_after  = [num_after_max, len - num_before].min

      index_start = [@scanner.pos - num_before, 0].max
      index_end   = [@scanner.pos + num_after, @size].min

      size = index_end - index_start

      str = @scanner.string[index_start, size]
      str.gsub!("\n", 'N')
      str.gsub!("\t", 'T')

      if index_end == @size
        str += "EOF"
      end

      pre_s = @scanner.pos - index_start
      pre_s = [pre_s, 0].max
      pre_s2 = [len-pre_s, 0].max
      pre = " " * pre_s

      "-" * len + "\n" +
        str + "\n" +
        "-" * pre_s + "|" + "-" * pre_s2 + "\n" +
        pre + "+--- Byte #{@scanner.pos}\n" +
        "Shown bytes [#{index_start} to #{size}] of #{@size}:\n" +
        @scanner.string.gsub(/^/, ">")
    end

ignore_char() click to toggle source

Advance the pointer

    # File lib/maruku/input/charsource.rb, line 165
    def ignore_char
      @scanner.getch
    end

ignore_chars(n) click to toggle source

Advance the pointer by n

    # File lib/maruku/input/charsource.rb, line 170
    def ignore_chars(n)
      n.times { @scanner.getch }
    end

next_char() click to toggle source

Return the char after current char as a String (or nil).

    # File lib/maruku/input/charsource.rb, line 155
    def next_char
      @scanner.peek(2)[1]
    end

next_matches(r) click to toggle source

Returns true if Regexp r matches what we're pointing to

    # File lib/maruku/input/charsource.rb, line 185
    def next_matches(r)
      @scanner.check(r)
    end

read_regexp(r) click to toggle source

    # File lib/maruku/input/charsource.rb, line 189
    def read_regexp(r)
      r.match(@scanner.scan(r))
    end

shift_char() click to toggle source

Return a character as a String, advancing the pointer.

    # File lib/maruku/input/charsource.rb, line 160
    def shift_char
      @scanner.getch[0]
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.