# class MathML::LaTeX::Scanner

### Public Instance Methods

_check(re)
Alias for: check
_eos?()
Alias for: eos?
_scan(re)
Alias for: scan
check(re) click to toggle source

    # File lib/math_ml/latex.rb, line 59
    def check(re)
            skip_space_and(true){_check(re)}
    end

Also aliased as: _check
check_any(remain_space=false) click to toggle source

    # File lib/math_ml/latex.rb, line 110
    def check_any(remain_space=false)
            skip_space_and(true){scan_any(remain_space)}
    end

check_block() click to toggle source

    # File lib/math_ml/latex.rb, line 83
    def check_block
            skip_space_and(true){scan_block}
    end

check_command() click to toggle source

    # File lib/math_ml/latex.rb, line 71
    def check_command
            check(RE::COMMANDS)
    end

check_option() click to toggle source

    # File lib/math_ml/latex.rb, line 147
    def check_option
            skip_space_and(true){scan_option}
    end

done() click to toggle source

    # File lib/math_ml/latex.rb, line 37
    def done
            self.string[0, pos]
    end

eos?() click to toggle source

    # File lib/math_ml/latex.rb, line 67
    def eos?
            _eos? || _check(/#{RE::SPACE}+\z/)
    end

Also aliased as: _eos?
peek_command() click to toggle source

    # File lib/math_ml/latex.rb, line 79
    def peek_command
            check_command ? self[1] : nil
    end

scan(re) click to toggle source

    # File lib/math_ml/latex.rb, line 63
    def scan(re)
            skip_space_and(false){_scan(re)}
    end

Also aliased as: _scan
scan_any(remain_space=false) click to toggle source

    # File lib/math_ml/latex.rb, line 114
    def scan_any(remain_space=false)
            p = pos
            scan_space
            r = remain_space ? matched.to_s : ""
            case
            when s = scan_block
            when s = scan_command
            else
                    unless _scan(/./) || remain_space
                            self.pos = p
                            return nil
                    end
                    s = matched.to_s
            end
            r+s
    end

scan_block() click to toggle source

    # File lib/math_ml/latex.rb, line 87
    def scan_block
            return nil unless scan(/\{/)
            block = "{"
            bpos = pos-1
            nest = 1
            while _scan(/(#{MBEC}*?)([\{\}])/)
                    block << matched
                    case self[2]
                    when "{"
                            nest+=1
                    when "}"
                            nest-=1
                            break if nest==0
                    end
            end
            if nest>0
                    self.pos = bpos
                    raise BlockNotClosed
            end
            self.pos = bpos
            _scan(/\A\{(#{Regexp.escape(block[RE::BLOCK, 1].to_s)})\}/)
    end

scan_command() click to toggle source

    # File lib/math_ml/latex.rb, line 75
    def scan_command
            scan(RE::COMMANDS)
    end

scan_option() click to toggle source

    # File lib/math_ml/latex.rb, line 131
    def scan_option
            return nil unless scan(/\[/)
            opt = "["
            p = pos-1
            until (s=scan_any(true)) =~ /\A#{RE::SPACE}*\]\z/
                    opt << s
                    if eos?
                            self.pos = p
                            raise OptionNotClosed
                    end
            end
            opt << s
            self.pos = p
            _scan(/\A\[(#{Regexp.escape(opt[RE::OPTION, 1].to_s)})\]/)
    end

scan_space() click to toggle source

    # File lib/math_ml/latex.rb, line 41
    def scan_space
            _scan(/#{RE::SPACE}+/)
    end

skip_space_and(check_mode) { || ... } click to toggle source

    # File lib/math_ml/latex.rb, line 45
    def skip_space_and(check_mode)
            opos = pos
            scan_space
            r = yield
            self.pos = opos if check_mode || !r
            r
    end