Clone
# encoding: utf-8
module Zebra
module Epl
class Language
class InvalidLanguageError < StandardError; end
class InvalidLanguageForNumberOfDataBitsError < StandardError; end
# 8 bits languages
ENGLISH_US = "0"
LATIN_1 = "1"
LATIN_2 = "2"
PORTUGUESE = "3"
FRENCH_CANADIAN = "4"
NORDIC = "5"
TURKISH = "6"
ICELANDIC = "7"
HEBREW = "8"
CYRILLIC = "9"
CYRILLIC_CIS_1 = "10"
GREEK = "11"
GREEK_1 = "12"
GREEK_2 = "13"
LATIN_1_WINDOWS = "A"
LATIN_2_WINDOWS = "B"
CYRILLIC_WINDOWS = "C"
GREEK_WINDOWS = "D"
TURKISH_WINDOWS = "E"
HEBREW_WINDOWS = "F"
# 7 bits languages
USA = "0"
BRITISH = "1"
GERMAN = "2"
FRENCH = "3"
DANISH = "4"
ITALIAN = "5"
SPANISH = "6"
SWEDISH = "7"
SWISS = "8"
def self.valid_language?(language)
("0".."13").include?(language) || ("A".."F").include?(language)
end
def self.validate_language(language)
raise InvalidLanguageError unless valid_language?(language)
end
def self.validate_language_for_number_of_data_bits(language, number_of_data_bits)
if number_of_data_bits == 8
validate_8_data_bits_language language
elsif number_of_data_bits == 7
validate_7_data_bits_language language
else
raise ArgumentError.new("Unknown number of data bits")
end
end
private
def self.validate_8_data_bits_language(language)
raise InvalidLanguageForNumberOfDataBitsError unless [ENGLISH_US,
LATIN_1, LATIN_2, PORTUGUESE, FRENCH_CANADIAN, NORDIC,
TURKISH, ICELANDIC, HEBREW, CYRILLIC, CYRILLIC_CIS_1, GREEK,
GREEK_1, GREEK_2, LATIN_1_WINDOWS, LATIN_2_WINDOWS, CYRILLIC_WINDOWS,
GREEK_WINDOWS, TURKISH_WINDOWS, HEBREW_WINDOWS].include?(language)
end
def self.validate_7_data_bits_language(language)
raise InvalidLanguageForNumberOfDataBitsError unless [USA, BRITISH,
GERMAN, FRENCH, DANISH, ITALIAN, SPANISH, SWEDISH, SWISS].include?(language)
end
end
end
end