From 960b3637c90a1603d9d0f2c7c935296193c45498 Mon Sep 17 00:00:00 2001 From: Brendon Date: Wed, 20 Sep 2017 17:49:54 +0200 Subject: [PATCH] Add logger for illegal characters --- exe/mm2ep-depend | 13 +++++++++---- lib/mm2ep_depend/lexer.rb | 11 ++++++++++- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/exe/mm2ep-depend b/exe/mm2ep-depend index 000a509..f0e20a4 100755 --- a/exe/mm2ep-depend +++ b/exe/mm2ep-depend @@ -7,20 +7,26 @@ require 'rly' require 'pry' require 'mm2ep_depend' require 'pp' +require 'logger' module Mm2ep module Depend class ParseCli < Thor - desc 'parse INFILE VARS', 'Parse INFILE into tokens and evaluate vars' + desc 'parse OPTIONS INFILE VARS', 'Parse INFILE into tokens and evaluate VARS' + method_option :logfile, :aliases => "-l", :desc => "Logger with logfile" + method_option :stdout, :aliases => "-f", :desc => "Logger with STDOUT" def parse(infile, *vars) + logger = Logger.new('illegal_character.log') if options[:logfile] + logger = Logger.new(STDOUT) if options[:stdout] line = File.read(infile).gsub(/\n/,'') - parser = Parser.new(Lexer.new) + lexer = Lexer.new(logger) + parser = Parser.new(lexer) tab_vars = {} vars.each do |var| tab_vars[var.split('=')[0]] = var.split('=')[1] end - binding.pry + # Give vars name and value from shell command to parser parser.names=tab_vars @@ -28,7 +34,6 @@ module Mm2ep pp token puts "RAW : #{line}" puts "EVAL: #{token.to_s}" - parser.check_grammar line, token exit 1 unless !token.nil? && token.errors.empty? diff --git a/lib/mm2ep_depend/lexer.rb b/lib/mm2ep_depend/lexer.rb index 91d1e2f..007bfe5 100755 --- a/lib/mm2ep_depend/lexer.rb +++ b/lib/mm2ep_depend/lexer.rb @@ -1,6 +1,8 @@ module Mm2ep module Depend class Lexer < Rly::Lex + attr_reader :logger + ignore "\t\n " # token :SPACE, /\s+/ @@ -20,8 +22,15 @@ module Mm2ep token :OR_OP, /OR/ token :NOT_OP, /NOT/ + def initialize(logger = nil) + @logger = logger + super() + end + on_error do |t| - puts "Illegal character #{t.value}" + unless t.lexer.logger.nil? + t.lexer.logger.error "Illegal character #{t.value}" + end t.lexer.pos += 1 nil end