Package libxyz :: Package parser :: Module block :: Class BlockParser
[hide private]
[frames] | no frames]

Class BlockParser

source code

BaseParser --+
             |
            BlockParser


BaseParser is used to parse block structures.
Format:

name {
    var1 <assign> val1 <delimiter>
    var2 <assign> val2 [<list_separator>val3...] <delimiter>
    ...
    }

Instance Methods [hide private]
 
__init__(self, opt=None) source code
 
parse(self, source, default_data=None)
Parse blocks of text and return a dict of ParsedData objects or raise libxyz.exceptions.ParseError exception
source code
 
_process_state_init(self, word) source code
 
_process_state_block_open(self, word) source code
 
_process_state_variable(self, word) source code
 
_process_state_assign(self, word) source code
 
_process_state_list_value(self, word) source code
 
_process_state_value(self, word) source code
 
_process_state_delim(self, word) source code
 
_complete_block(self) source code
 
_cleanup(self)
Set all neccessary variables to initial state
source code
 
_check_complete(self)
Check state after source reaches EOF for consistency
source code
Class Variables [hide private]
  STATE_INIT = 0
  STATE_BLOCK_OPEN = 1
  STATE_VARIABLE = 2
  STATE_ASSIGN = 3
  STATE_VALUE = 4
  STATE_DELIM = 5
  STATE_LIST_VALUE = 6
  DEFAULT_OPT = {u"comment": u"#", u"varre": re.compile(r"^[\w-]...
Method Details [hide private]

__init__(self, opt=None)
(Constructor)

source code 
Parameters:
  • opt (dict

    Available options:

    • comment: Comment character. Everything else ignored until EOL. Type: string (single char) Default: #
    • delimiter: Character to use as delimiter between statements. Type: string (single char) Default: \n
    • varre: Valid variable name regular expression. Type: Compiled re object (re.compile) Default: ^[\w-]+$
    • assignchar: Variable-value split character. Type: string (single char) Default: =
    • validvars: List of variables valid within block. Type: sequence Default: ()
    • value_validator: Value validator Type: A function that takes three args: current block name, var and value and validates them. In case value is invalid, XYZValueError must be raised. Otherwise function must return required value, possibly modified. Default: None
    • count: How many blocks to parse. If count <= 0 - will parse all available. Type: integer Default: 0
    • list_separator: Character to separate elements in list Type: string (single char) Default: ,
    • macrochar: Macro character (None to disable macros) Type: string (single char) Default: &
    • var_transform: A function which is called with variable name as single argument, and which returns new variable object or raises XYZValueError
    ) - Parser options.

parse(self, source, default_data=None)

source code 

Parse blocks of text and return a dict of ParsedData objects or raise libxyz.exceptions.ParseError exception

Parameters:

Class Variable Details [hide private]

DEFAULT_OPT

Value:
{u"comment": u"#", u"varre": re.compile(r"^[\w-]+$"), u"assignchar": u\
"=", u"delimiter": u"\n", u"validvars":(), u"value_validator": None, u\
"count": 0, u"list_separator": u",", u"macrochar": u"&", u"var_transfo\
rm": None,}