class SPED2SQL::SQL::Parser

Constants

Attributes

dados[R]
tbl_prefix[R]
tbl_sufix[R]

Public Class Methods

new(dados, options = {}) click to toggle source
# File lib/sped2sql/sql/parser.rb, line 24
def initialize(dados, options = {})
  @tbl_prefix = options[:tbl_prefix] || ''
  @tbl_sufix  = options[:tbl_sufix]  || ''
  @dados      = dados
  self
end
to_sql(dados, options = {}) click to toggle source
# File lib/sped2sql/sql/parser.rb, line 47
def to_sql(dados, options = {})
  new(dados, options).parse!
end

Public Instance Methods

parse!() click to toggle source
# File lib/sped2sql/sql/parser.rb, line 31
def parse!
  output = []
  inserts_agrupados.each do |registro, inserts|
    tabela = nome_tabela(registro)

    output << "LOCK TABLES `#{ tabela }` WRITE;"
    output << "/*!40000 ALTER TABLE `#{ tabela }` DISABLE KEYS */;"
    output << "INSERT INTO #{ tabela } VALUES ('',#{ inserts.join("),('',") });"
    output << "/*!40000 ALTER TABLE `#{ tabela }` ENABLE KEYS */;"
    output << "UNLOCK TABLES;"
  end

  "#{ HEADER }#{ output.join("\r\n") }\r\n#{ FOOTER }"
end

Private Instance Methods

inserts_agrupados() click to toggle source
# File lib/sped2sql/sql/parser.rb, line 54
def inserts_agrupados
  inserts = Hash.new { |k, v| k[v] = [] }
  dados.each do |linha|
    inserts[linha[0]] << linha[0..-1].map { |r| "'#{r}'" }.join(',')
  end
  inserts
end
nome_tabela(tabela) click to toggle source
# File lib/sped2sql/sql/parser.rb, line 62
def nome_tabela(tabela)
  "#{ @tbl_prefix }#{ tabela }#{ @tbl_sufix }"
end