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
Defined Under Namespace
Classes: BuildEntry, Entry, LineParser, SieFile, Tokenizer
Constant Summary collapse
- BEGINNING_OF_ARRAY =
"{"- END_OF_ARRAY =
"}"- ENTRY =
TODO: Could this format knowledge be shared with Tokenizer? It’s slightly different there.
/^\s*#/- 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
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 |