class UfidParser::UFID

Attributes

ufid_number[RW]

Public Class Methods

new(str) click to toggle source
# File lib/ufid_parser.rb, line 7
def initialize(str)
    @ufid_number = parse_ufid_number(str)
end

Private Instance Methods

meet_ufid_number_requirements?(ufid_number_arr) click to toggle source
# File lib/ufid_parser.rb, line 47
def meet_ufid_number_requirements?(ufid_number_arr)
    ufid_number_arr.first != ufid_number_arr.last || ufid_number_correct_size?(ufid_number_arr)
end
parse_ufid_number(str) click to toggle source
# File lib/ufid_parser.rb, line 13
def parse_ufid_number(str)
    splitter = [] << str[1]
    splitter << str[-3]
    splitter_str = "0#{splitter.reverse.join('')}00"

    # Barcode has two occurrances of UFID number separated by this string
    ufid_number_arr = str.split(splitter_str)

    # Cut out the junk
    ufid_number_arr[0] = ufid_number_arr.first[4..-1]
    ufid_number_arr[-1] = ufid_number_arr.last[0..-5]

    # Check out requirement for UFID numbers
    if meet_ufid_number_requirements?(ufid_number_arr)
        return ufid_special_case(ufid_number_arr)
    end

    # Return the number!
    ufid_number_arr.first
end
ufid_number_correct_size?(ufid_number_arr) click to toggle source
# File lib/ufid_parser.rb, line 51
def ufid_number_correct_size?(ufid_number_arr)
    ufid_number_arr.first.size != 8 || ufid_number_arr.last.size != 8
end
ufid_special_case(ufid_number_arr) click to toggle source
# File lib/ufid_parser.rb, line 34
def ufid_special_case(ufid_number_arr)
    # Return the one that has
    if ufid_number_arr.first.size == ufid_number_arr.last.size
        raise Exception.new("Malformatted UFID input.")
    elsif ufid_number_arr.first.size == 8
        ufid_number_arr.first
    elsif ufid_number_arr.last.size == 8
        ufid_number_arr.last
    else
        raise Exception.new("Malformatted UFID input.")
    end
end