module Filters

require File.join __dir__ + '/rfc5322_regex.rb'

Public Instance Methods

check_email(email) click to toggle source
# File lib/ascii_invoicer/filters.rb, line 30
def check_email email
  email =~ $RFC5322
end
filter_canceled(canceled) click to toggle source
# File lib/ascii_invoicer/filters.rb, line 39
def filter_canceled canceled
  @STATUS = :canceled if @STATUS != :unparsable and canceled
  canceled
end
filter_client_email(email) click to toggle source
# File lib/ascii_invoicer/filters.rb, line 34
def filter_client_email email
  return fail_at :client_email unless check_email email
  email
end
filter_created(date) click to toggle source
# File lib/ascii_invoicer/filters.rb, line 98
def filter_created date
  return Date.parse date if date.class == String
  fail_at :created_date
end
filter_event_dates(dates) click to toggle source
# File lib/ascii_invoicer/filters.rb, line 44
def filter_event_dates dates
  dates.each {|d|
    unless d[:time].nil? or d[:end].nil? ## time and end is missleading
      @logger.warn "FILTER: #{name} missleading: time and end_date"
      return fail_at :event_dates
    end

    d[:begin] = Date.parse(d[:begin]) if d[:begin].class == String

    if not d[:time].nil?
      d[:time][:begin] = DateTime.strptime("#{d[:time][:begin]} #{d[:begin]}", "%H:%M %d.%m.%Y" ) if d[:time][:begin]
      d[:time][:end]   = DateTime.strptime("#{d[:time][:end]  } #{d[:begin]}", "%H:%M %d.%m.%Y" ) if d[:time][:end]
    end

    if d[:end].class == String
      d[:end] = Date.parse(d[:end])
    else
      d[:end] = d[:begin]
    end
  }
  dates
end
filter_event_description(string) click to toggle source
# File lib/ascii_invoicer/filters.rb, line 67
def filter_event_description string
  return "" unless string
  string.strip
end
filter_hours_salary(salary) click to toggle source
# File lib/ascii_invoicer/filters.rb, line 125
def filter_hours_salary salary
  salary.to_euro
end
filter_invoice_date(date) click to toggle source
# File lib/ascii_invoicer/filters.rb, line 114
def filter_invoice_date date
  return Date.parse date if date.class == String
  fail_at :invoice_date
  return Date.today
end
filter_invoice_number(number) click to toggle source
# File lib/ascii_invoicer/filters.rb, line 109
def filter_invoice_number number
  return fail_at :invoice_number if number.nil?
  "R#{number.to_s.rjust(3, ?0)}"
end
filter_invoice_payed_date(date) click to toggle source
# File lib/ascii_invoicer/filters.rb, line 120
def filter_invoice_payed_date date
  return Date.parse date if date.class == String
  return fail_at :invoice_payed
end
filter_manager(string) click to toggle source
# File lib/ascii_invoicer/filters.rb, line 72
def filter_manager string
  string.strip
end
filter_messages(messages) click to toggle source
# File lib/ascii_invoicer/filters.rb, line 76
def filter_messages messages
  messages[ @data[:lang].to_sym ]
end
filter_offer_date(date) click to toggle source
# File lib/ascii_invoicer/filters.rb, line 103
def filter_offer_date date
  return Date.parse date if date.class == String
  fail_at :offer_date
  return Date.today
end
filter_products(products) click to toggle source
# File lib/ascii_invoicer/filters.rb, line 80
def filter_products products
  new_products = []
  products.each{|k,v|
    if [String, Symbol].include?  k.class
      v[:name] = k
      new_products.push InvoiceProduct.new v , @settings
    elsif k.class == Hash
      new_products.push InvoiceProduct.new k.merge(v), @settings
      #new_products.push k.merge(v)
    else
      return k
      throw :filter_error
    end
  }

  return new_products
end
strpdates(string,pattern = nil) click to toggle source
# File lib/ascii_invoicer/filters.rb, line 7
def strpdates(string,pattern = nil)
  return [Date.today] unless string.class == String
  if pattern
    return [Date.strptime(string, pattern).to_date]
  else
    p = string.split('.')
    p_range = p[0].split('-')

    if p_range.length == 1
      t = Date.new p[2].to_i, p[1].to_i, p[0].to_i
      return [t]

    elsif p_range.length == 2
      t1 = Date.new p[2].to_i, p[1].to_i, p_range[0].to_i
      t2 = Date.new p[2].to_i, p[1].to_i, p_range[1].to_i
      return [t1,t2]

    else
      fail
    end
  end
end