Class: TrackingNumber::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/tracking_number/base.rb

Direct Known Subclasses

DHL, FedEx, OnTrac, UPS, USPS, Unknown

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tracking_number) ⇒ Base

Returns a new instance of Base.



6
7
8
9
# File 'lib/tracking_number/base.rb', line 6

def initialize(tracking_number)
  @original_number = tracking_number
  @tracking_number = tracking_number.strip.gsub(" ", "").upcase
end

Instance Attribute Details

#original_numberObject

Returns the value of attribute original_number.



4
5
6
# File 'lib/tracking_number/base.rb', line 4

def original_number
  @original_number
end

#tracking_numberObject

Returns the value of attribute tracking_number.



3
4
5
# File 'lib/tracking_number/base.rb', line 3

def tracking_number
  @tracking_number
end

Class Method Details

.scan(body) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/tracking_number/base.rb', line 22

def self.scan(body)
  patterns = [self.const_get("SEARCH_PATTERN")].flatten
  possibles = patterns.collect do |pattern|
    body.scan(pattern).uniq.flatten
  end

  possibles.flatten.compact.uniq
end

.search(body) ⇒ Object



11
12
13
14
15
16
17
18
19
20
# File 'lib/tracking_number/base.rb', line 11

def self.search(body)
  valids = self.scan(body).uniq.collect { |possible| new(possible) }.select { |t| t.valid? }

  uniques = {}
  valids.each do |t|
    uniques[t.tracking_number] = t unless uniques.has_key?(t.tracking_number)
  end

  uniques.values
end

Instance Method Details

#decodeObject



41
42
43
# File 'lib/tracking_number/base.rb', line 41

def decode
  {}
end

#inspectObject



57
58
59
# File 'lib/tracking_number/base.rb', line 57

def inspect
  "#<%s:%#0x %s>" % [self.class.to_s, self.object_id, tracking_number]
end

#matchesObject



45
46
47
# File 'lib/tracking_number/base.rb', line 45

def matches
  []
end

#to_sObject



53
54
55
# File 'lib/tracking_number/base.rb', line 53

def to_s
  self.tracking_number
end

#valid?Boolean

Returns:

  • (Boolean)


31
32
33
34
35
# File 'lib/tracking_number/base.rb', line 31

def valid?
  return false unless valid_format?
  return false unless valid_checksum?
  return true
end

#valid_checksum?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/tracking_number/base.rb', line 49

def valid_checksum?
  false
end

#valid_format?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/tracking_number/base.rb', line 37

def valid_format?
  !matches.nil? && !matches.empty?
end