Class: Sie::Parser
- Inherits:
-
Object
- Object
- Sie::Parser
- Defined in:
- lib/sie/parser.rb,
lib/sie/parser/entry.rb,
lib/sie/parser/sie_file.rb,
lib/sie/parser/tokenizer.rb,
lib/sie/parser/build_entry.rb,
lib/sie/parser/entry_types.rb,
lib/sie/parser/line_parser.rb,
lib/sie/parser/tokenizer/token.rb,
lib/sie/parser/tokenizer/character.rb
Defined Under Namespace
Classes: BuildEntry, Entry, LineParser, SieFile, Tokenizer
Constant Summary collapse
- BEGINNING_OF_ARRAY =
TODO: Could this format knowledge be centrailized somewhere, some of this is duplicated in Character.
"{"
- END_OF_ARRAY =
"}"
- ENTRY =
/^#/
- ENTRY_TYPES =
{ "adress" => [ 'kontakt', 'utdelningsadr', 'postadr', 'tel' ], "bkod" => [ 'SNI-kod' ], "dim" => [ 'dimensionsnr', 'namn' ], "enhet" => [ 'kontonr', 'enhet' ], "flagga" => [ 'x' ], "fnamn" => [ 'foretagsnamn' ], "fnr" => [ 'foretagsid' ], "format" => [ 'PC8' ], "ftyp" => [ 'foretagstyp' ], "gen" => [ 'datum', 'sign' ], "ib" => [ 'arsnr', 'konto', 'saldo', 'kvantitet' ], "konto" => [ 'kontonr', 'kontonamn' ], "kptyp" => [ 'typ' ], "ktyp" => [ 'kontonr', 'kontotyp' ], "objekt" => [ 'dimensionsnr', 'objektnr', 'objektnamn' ], "oib" => [ 'arsnr', 'konto', { name: 'objekt', type: [ 'dimensionsnr', 'objektnr' ] }, 'saldo', 'kvantitet' ], "omfattn" => [ 'datum' ], "orgnr" => [ 'orgnr', 'forvnr', 'verknr' ], "oub" => [ 'arsnr', 'konto', { name: 'objekt', type: [ 'dimensionsnr', 'objektnr' ] }, 'saldo', 'kvantitet' ], "pbudget" => [ 'arsnr', 'period', 'konto', { name: 'objekt', type: [ 'dimensionsnr', 'objektnr' ] }, 'saldo', 'kvantitet' ], "program" => [ 'programnamn', 'version' ], "prosa" => [ 'text' ], "psaldo" => [ 'arsnr', 'period', 'konto', { name: 'objekt', type: [ 'dimensionsnr', 'objektnr' ] }, 'saldo', 'kvantitet' ], "rar" => [ 'arsnr', 'start', 'slut' ], "res" => [ 'ars', 'konto', 'saldo', 'kvantitet' ], "sietyp" => [ 'typnr' ], "sru" => [ 'konto', 'SRU-kod' ], "taxar" => [ 'ar' ], "trans" => [ 'kontonr', { name: 'objektlista', type: [ 'dimensionsnr', 'objektnr' ], many: true }, 'belopp', 'transdat', 'transtext', 'kvantitet', 'sign' ], "rtrans" => [ 'kontonr', { name: 'objektlista', type: [ 'dimensionsnr', 'objektnr' ], many: true }, 'belopp', 'transdat', 'transtext', 'kvantitet', 'sign' ], "btrans" => [ 'kontonr', { name: 'objektlista', type: [ 'dimensionsnr', 'objektnr' ], many: true }, 'belopp', 'transdat', 'transtext', 'kvantitet', 'sign' ], "ub" => [ 'arsnr', 'konto', 'saldo', 'kvantitet' ], "underdim" => [ 'dimensionsnr', 'namn', 'superdimension' ], "valuta" => [ 'valutakod' ], "ver" => [ 'serie', 'vernr', 'verdatum', 'vertext', 'regdatum', 'sign' ] }
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ Parser
constructor
A new instance of Parser.
- #parse(io) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Parser
Returns a new instance of Parser.
14 15 16 |
# File 'lib/sie/parser.rb', line 14 def initialize( = {}) @options = end |
Instance Method Details
#parse(io) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/sie/parser.rb', line 18 def parse(io) stack = [] sie_file = SieFile.new current = sie_file io.each_line do |line| line = line.chomp case line when BEGINNING_OF_ARRAY stack << current current = current.entries.last when END_OF_ARRAY current = stack.pop when ENTRY current.entries << parse_line(line) end end sie_file end |