org.jvyamlb
Class ScannerImpl

java.lang.Object
  extended by org.jvyamlb.ScannerImpl
All Implemented Interfaces:
Scanner

public class ScannerImpl
extends java.lang.Object
implements Scanner

A Java implementation of the RbYAML scanner.

Author:
Ola Bini

Nested Class Summary
private  class ScannerImpl.TokenIterator
           
 
Field Summary
private static boolean[] ALL_FALSE
           
private static boolean[] ALL_TRUE
           
private  boolean allowSimpleKey
           
private static boolean[] ALPHA
           
private static org.jruby.util.ByteList BANG
           
private static boolean[] BLANK_OR_LINEBR
           
private static boolean[] BLANK_T
           
private  org.jruby.util.ByteList buffer
           
private static boolean[] CHOMPING
           
private  int column
           
private static boolean[] DIGIT
           
private  boolean docStart
           
private  boolean done
           
private static boolean[] DOUBLE_ESC
           
private static byte[] EMPTY
           
private  boolean eof
           
private static java.util.Map ESCAPE_CODES
           
private static byte[] ESCAPE_REPLACEMENTS
           
private  int flowLevel
           
private static boolean[] FULL_LINEBR
           
private static boolean[] HEXA
           
private static byte[] HEXA_VALUES
           
private  int indent
           
private  java.util.List indents
           
private static boolean[] IS_ESCAPE_REPLACEMENT
           
private  boolean lastFlowControl
           
private static boolean[] LINEBR
           
private static byte[] NN
           
private static boolean[] NON_ALPHA_OR_NUM
           
private static boolean[] NON_PRINTABLE
           
private static boolean[] NULL_BL_LINEBR
           
private static boolean[] NULL_BL_T_LINEBR
           
private static boolean[] NULL_OR_LINEBR
           
private  int pointer
           
private  java.util.Map possibleSimpleKeys
           
private static boolean[] R_FLOWNONZERO
           
private static boolean[] R_FLOWZERO
           
private static boolean[] R_FLOWZERO1
           
private static int[] RN
           
private static boolean[] S4
           
private static org.jruby.util.ByteList SPACE
           
private static boolean[] SPACES_AND_STUFF
           
private static boolean[] STRANGE_CHAR
           
private  java.io.InputStream stream
           
private static boolean[] STUPID_CHAR
           
private  java.util.List tokens
           
private  int tokensTaken
           
 
Constructor Summary
ScannerImpl(org.jruby.util.ByteList stream)
           
ScannerImpl(java.io.InputStream stream)
           
ScannerImpl(java.lang.String stream)
           
 
Method Summary
private  boolean addIndent(int col)
           
private  void addToken(Token t)
           
private  void checkPrintable(byte[] b, int len)
           
 boolean checkToken(java.lang.Class[] choices)
           
 java.util.Iterator eachToken()
           
private  boolean ensure(int len, boolean reset)
           
private  Token fetchAlias()
           
private  Token fetchAnchor()
           
private  Token fetchBlockEntry()
           
private  Token fetchBlockScalar(char style)
           
private  Token fetchDirective()
           
private  Token fetchDocumentEnd()
           
private  Token fetchDocumentIndicator(Token tok)
           
private  Token fetchDocumentStart()
           
private  Token fetchDouble()
           
private  Token fetchFlowCollectionEnd(Token tok)
           
private  Token fetchFlowCollectionStart(Token tok)
           
private  Token fetchFlowEntry()
           
private  Token fetchFlowMappingEnd()
           
private  Token fetchFlowMappingStart()
           
private  Token fetchFlowScalar(char style)
           
private  Token fetchFlowSequenceEnd()
           
private  Token fetchFlowSequenceStart()
           
private  Token fetchFolded()
           
private  Token fetchKey()
           
private  Token fetchLiteral()
           
private  Token fetchMoreTokens()
           
private  Token fetchPlain()
           
private  Token fetchSingle()
           
private  Token fetchStreamEnd()
           
private  Token fetchStreamStart()
           
private  Token fetchTag()
           
private  Token fetchValue()
           
private  void forward()
           
private  void forward(int length)
           
 Token getToken()
           
static java.lang.String into(org.jruby.util.ByteList b)
           
private  boolean isEnding()
           
private  boolean isEndOrStart()
           
private  boolean isStart()
           
 java.util.Iterator iterator()
           
static void main(java.lang.String[] args)
           
private  boolean needMoreTokens()
           
private  boolean needMoreTokens(int size)
           
private  int nextPossibleSimpleKey()
           
private  org.jruby.util.ByteList parseHexa(int length)
           
private  char peek()
           
private  char peek(int index)
           
 Token peekToken()
           
 Token peekToken(int index)
           
private  void removePossibleSimpleKey()
           
private  void savePossibleSimpleKey()
           
private  Token scanAnchor(Token tok)
           
private  Token scanBlockScalar(char style)
           
private  org.jruby.util.ByteList scanBlockScalarBreaks(int indent)
           
private  boolean scanBlockScalarIgnoredLine()
           
private  java.lang.Object[] scanBlockScalarIndentation()
           
private  java.lang.Object[] scanBlockScalarIndicators()
           
private  Token scanDirective()
           
private  byte[] scanDirectiveIgnoredLine()
           
private  java.lang.String scanDirectiveName()
           
private  Token scanFlowScalar(char style)
           
private  org.jruby.util.ByteList scanFlowScalarBreaks()
           
private  org.jruby.util.ByteList scanFlowScalarNonSpaces(boolean dbl)
           
private  org.jruby.util.ByteList scanFlowScalarSpaces()
           
private  byte[] scanLineBreak()
           
private  Token scanPlain()
           
private  org.jruby.util.ByteList scanPlainSpaces(int indent)
           
private  Token scanTag()
           
private  org.jruby.util.ByteList scanTagDirectiveHandle()
           
private  org.jruby.util.ByteList scanTagDirectivePrefix()
           
private  java.lang.String[] scanTagDirectiveValue()
           
private  org.jruby.util.ByteList scanTagHandle(java.lang.String name)
           
private  org.jruby.util.ByteList scanTagUri(java.lang.String name)
           
private  void scanToNextToken()
           
private  org.jruby.util.ByteList scanUriEscapes(java.lang.String name)
           
private  java.lang.String scanYamlDirectiveNumber()
           
private  java.lang.String[] scanYamlDirectiveValue()
           
static void tmain(java.lang.String[] args)
           
private  void unwindIndent(int col)
           
private  void update(int length, boolean reset)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EMPTY

private static final byte[] EMPTY

NN

private static final byte[] NN

BANG

private static final org.jruby.util.ByteList BANG

SPACE

private static final org.jruby.util.ByteList SPACE

ALL_FALSE

private static final boolean[] ALL_FALSE

ALL_TRUE

private static final boolean[] ALL_TRUE

LINEBR

private static final boolean[] LINEBR

NULL_BL_LINEBR

private static final boolean[] NULL_BL_LINEBR

NULL_BL_T_LINEBR

private static final boolean[] NULL_BL_T_LINEBR

NULL_OR_LINEBR

private static final boolean[] NULL_OR_LINEBR

FULL_LINEBR

private static final boolean[] FULL_LINEBR

BLANK_OR_LINEBR

private static final boolean[] BLANK_OR_LINEBR

S4

private static final boolean[] S4

ALPHA

private static final boolean[] ALPHA

DIGIT

private static final boolean[] DIGIT

HEXA

private static final boolean[] HEXA

STRANGE_CHAR

private static final boolean[] STRANGE_CHAR

RN

private static final int[] RN

BLANK_T

private static final boolean[] BLANK_T

SPACES_AND_STUFF

private static final boolean[] SPACES_AND_STUFF

DOUBLE_ESC

private static final boolean[] DOUBLE_ESC

NON_ALPHA_OR_NUM

private static final boolean[] NON_ALPHA_OR_NUM

NON_PRINTABLE

private static final boolean[] NON_PRINTABLE

STUPID_CHAR

private static final boolean[] STUPID_CHAR

R_FLOWZERO

private static final boolean[] R_FLOWZERO

R_FLOWZERO1

private static final boolean[] R_FLOWZERO1

R_FLOWNONZERO

private static final boolean[] R_FLOWNONZERO

ESCAPE_REPLACEMENTS

private static final byte[] ESCAPE_REPLACEMENTS

IS_ESCAPE_REPLACEMENT

private static final boolean[] IS_ESCAPE_REPLACEMENT

ESCAPE_CODES

private static final java.util.Map ESCAPE_CODES

CHOMPING

private static final boolean[] CHOMPING

done

private boolean done

flowLevel

private int flowLevel

tokensTaken

private int tokensTaken

indent

private int indent

allowSimpleKey

private boolean allowSimpleKey

eof

private boolean eof

column

private int column

pointer

private int pointer

buffer

private org.jruby.util.ByteList buffer

stream

private java.io.InputStream stream

tokens

private java.util.List tokens

indents

private java.util.List indents

possibleSimpleKeys

private java.util.Map possibleSimpleKeys

docStart

private boolean docStart

lastFlowControl

private boolean lastFlowControl

HEXA_VALUES

private static final byte[] HEXA_VALUES
Constructor Detail

ScannerImpl

public ScannerImpl(java.io.InputStream stream)

ScannerImpl

public ScannerImpl(org.jruby.util.ByteList stream)

ScannerImpl

public ScannerImpl(java.lang.String stream)
Method Detail

update

private void update(int length,
                    boolean reset)

checkPrintable

private void checkPrintable(byte[] b,
                            int len)

ensure

private boolean ensure(int len,
                       boolean reset)

peek

private char peek()

peek

private char peek(int index)

forward

private void forward()

forward

private void forward(int length)

addToken

private void addToken(Token t)

checkToken

public boolean checkToken(java.lang.Class[] choices)
Specified by:
checkToken in interface Scanner

peekToken

public Token peekToken(int index)
Specified by:
peekToken in interface Scanner

peekToken

public Token peekToken()
Specified by:
peekToken in interface Scanner

getToken

public Token getToken()
Specified by:
getToken in interface Scanner

eachToken

public java.util.Iterator eachToken()
Specified by:
eachToken in interface Scanner

iterator

public java.util.Iterator iterator()
Specified by:
iterator in interface Scanner

needMoreTokens

private boolean needMoreTokens()

needMoreTokens

private boolean needMoreTokens(int size)

isEnding

private boolean isEnding()

isStart

private boolean isStart()

isEndOrStart

private boolean isEndOrStart()

fetchMoreTokens

private Token fetchMoreTokens()

fetchStreamStart

private Token fetchStreamStart()

fetchStreamEnd

private Token fetchStreamEnd()

scanToNextToken

private void scanToNextToken()

scanLineBreak

private byte[] scanLineBreak()

unwindIndent

private void unwindIndent(int col)

fetchDocumentStart

private Token fetchDocumentStart()

fetchDocumentIndicator

private Token fetchDocumentIndicator(Token tok)

fetchBlockEntry

private Token fetchBlockEntry()

addIndent

private boolean addIndent(int col)

fetchTag

private Token fetchTag()

removePossibleSimpleKey

private void removePossibleSimpleKey()

savePossibleSimpleKey

private void savePossibleSimpleKey()

scanTag

private Token scanTag()

scanTagUri

private org.jruby.util.ByteList scanTagUri(java.lang.String name)

scanTagHandle

private org.jruby.util.ByteList scanTagHandle(java.lang.String name)

scanUriEscapes

private org.jruby.util.ByteList scanUriEscapes(java.lang.String name)

fetchPlain

private Token fetchPlain()

scanPlain

private Token scanPlain()

nextPossibleSimpleKey

private int nextPossibleSimpleKey()

scanPlainSpaces

private org.jruby.util.ByteList scanPlainSpaces(int indent)

fetchSingle

private Token fetchSingle()

fetchDouble

private Token fetchDouble()

fetchFlowScalar

private Token fetchFlowScalar(char style)

scanFlowScalar

private Token scanFlowScalar(char style)

parseHexa

private org.jruby.util.ByteList parseHexa(int length)

scanFlowScalarNonSpaces

private org.jruby.util.ByteList scanFlowScalarNonSpaces(boolean dbl)

scanFlowScalarSpaces

private org.jruby.util.ByteList scanFlowScalarSpaces()

scanFlowScalarBreaks

private org.jruby.util.ByteList scanFlowScalarBreaks()

fetchValue

private Token fetchValue()

fetchFlowSequenceStart

private Token fetchFlowSequenceStart()

fetchFlowMappingStart

private Token fetchFlowMappingStart()

fetchFlowCollectionStart

private Token fetchFlowCollectionStart(Token tok)

fetchDocumentEnd

private Token fetchDocumentEnd()

fetchFlowSequenceEnd

private Token fetchFlowSequenceEnd()

fetchFlowMappingEnd

private Token fetchFlowMappingEnd()

fetchFlowCollectionEnd

private Token fetchFlowCollectionEnd(Token tok)

fetchFlowEntry

private Token fetchFlowEntry()

fetchLiteral

private Token fetchLiteral()

fetchFolded

private Token fetchFolded()

fetchBlockScalar

private Token fetchBlockScalar(char style)

scanBlockScalar

private Token scanBlockScalar(char style)

scanBlockScalarBreaks

private org.jruby.util.ByteList scanBlockScalarBreaks(int indent)

scanBlockScalarIndentation

private java.lang.Object[] scanBlockScalarIndentation()

scanBlockScalarIndicators

private java.lang.Object[] scanBlockScalarIndicators()

scanBlockScalarIgnoredLine

private boolean scanBlockScalarIgnoredLine()

fetchDirective

private Token fetchDirective()

fetchKey

private Token fetchKey()

fetchAlias

private Token fetchAlias()

fetchAnchor

private Token fetchAnchor()

scanDirective

private Token scanDirective()

scanDirectiveName

private java.lang.String scanDirectiveName()

scanDirectiveIgnoredLine

private byte[] scanDirectiveIgnoredLine()

scanAnchor

private Token scanAnchor(Token tok)

scanYamlDirectiveValue

private java.lang.String[] scanYamlDirectiveValue()

scanYamlDirectiveNumber

private java.lang.String scanYamlDirectiveNumber()

into

public static java.lang.String into(org.jruby.util.ByteList b)

scanTagDirectiveValue

private java.lang.String[] scanTagDirectiveValue()

scanTagDirectiveHandle

private org.jruby.util.ByteList scanTagDirectiveHandle()

scanTagDirectivePrefix

private org.jruby.util.ByteList scanTagDirectivePrefix()

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception
Throws:
java.lang.Exception

tmain

public static void tmain(java.lang.String[] args)
                  throws java.lang.Exception
Throws:
java.lang.Exception