Module: Filters

Included in:
InvoiceProject
Defined in:
lib/ascii_invoicer/filters.rb

Overview

require File.join __dir__ + ‘/rfc5322_regex.rb’

Instance Method Summary collapse

Instance Method Details

#check_email(email) ⇒ Object



30
31
32
# File 'lib/ascii_invoicer/filters.rb', line 30

def check_email email
  email =~ $RFC5322
end

#filter_canceled(canceled) ⇒ Object



39
40
41
42
# 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) ⇒ Object



34
35
36
37
# 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) ⇒ Object



98
99
100
101
# 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) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 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) ⇒ Object



67
68
69
70
# File 'lib/ascii_invoicer/filters.rb', line 67

def filter_event_description string
  return "" unless string
  string.strip
end

#filter_hours_salary(salary) ⇒ Object



125
126
127
# File 'lib/ascii_invoicer/filters.rb', line 125

def filter_hours_salary salary
  salary.to_euro
end

#filter_invoice_date(date) ⇒ Object



114
115
116
117
118
# 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) ⇒ Object



109
110
111
112
# 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) ⇒ Object



120
121
122
123
# 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) ⇒ Object



72
73
74
# File 'lib/ascii_invoicer/filters.rb', line 72

def filter_manager string
  string.strip
end

#filter_messages(messages) ⇒ Object



76
77
78
# File 'lib/ascii_invoicer/filters.rb', line 76

def filter_messages messages
  messages[ @data[:lang].to_sym ]
end

#filter_offer_date(date) ⇒ Object



103
104
105
106
107
# 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) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# 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) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 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