Module: JapanShippingCSV::Encoding
- Defined in:
- lib/japan_shipping_csv/encoding.rb
Defined Under Namespace
Modules: CodePoints
Constant Summary collapse
- HALFWIDTH =
Eg. HALFWIDTH + ROMAJI + NUMBERS can be represented by: valid_encodings = Encoding::HALFWIDTH | Encoding::ROMAJI | Encoding::NUMBERS and to figure out whether a flag is set: romaji_allowed? = valid_encodings & Encoding::ROMAJI 0 = false, 1 = true (which is not true in ruby)
1- FULLWIDTH =
Hankaku
2- ROMAJI =
Zenkaku
4- NUMBERS =
8- KATAKANA =
16- HYPHEN =
32
Class Method Summary collapse
- .is_hyphen(value) ⇒ Object
- .is_katakana(value) ⇒ Object
- .is_number(value) ⇒ Object
- .is_romaji(value) ⇒ Object
- .is_valid_string(value, encoding_flags) ⇒ Object
- .reencode(value, encoding_flags) ⇒ Object
Class Method Details
.is_hyphen(value) ⇒ Object
126 127 128 129 130 131 132 133 134 135 |
# File 'lib/japan_shipping_csv/encoding.rb', line 126 def is_hyphen(value) return false if value.empty? value.split("").each do |c| if c != '-' && c != '-' && c != 'ー' && c != 'ー' return false end end true end |
.is_katakana(value) ⇒ Object
115 116 117 118 119 120 121 122 123 124 |
# File 'lib/japan_shipping_csv/encoding.rb', line 115 def is_katakana(value) return false if value.empty? value.split("").each do |c| is_hankaku_katakana = c >= CodePoints::HANKAKU_KATAKANA_FIRST && c <= CodePoints::HANKAKU_KATAKANA_LAST && c != CodePoints::HANKAKU_PUNCTUATION_ONBIKI is_zenkaku_katakana = c >= CodePoints::ZENKAKU_KATAKANA_FIRST && c <= CodePoints::ZENKAKU_KATAKANA_LAST return false if !is_hankaku_katakana && !is_zenkaku_katakana end true end |
.is_number(value) ⇒ Object
104 105 106 107 108 109 110 111 112 113 |
# File 'lib/japan_shipping_csv/encoding.rb', line 104 def is_number(value) return false if value.empty? value.split("").each do |c| is_hankaku_number = c >= CodePoints::HANKAKU_NUMBER_FIRST && c <= CodePoints::HANKAKU_NUMBER_LAST is_zenkaku_number = c >= CodePoints::ZENKAKU_NUMBER_FIRST && c <= CodePoints::ZENKAKU_NUMBER_LAST return false if !is_hankaku_number && !is_zenkaku_number end true end |
.is_romaji(value) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/japan_shipping_csv/encoding.rb', line 90 def is_romaji(value) return false if value.empty? value.split("").each do |c| # return !(::kana::isHankakuLetter(u) || ::kana::isZenkakuLetter(u)); is_hankaku_upper = c >= CodePoints::HANKAKU_LETTER_UPPER_FIRST && c <= CodePoints::HANKAKU_LETTER_UPPER_LAST is_hankaku_lower = c >= CodePoints::HANKAKU_LETTER_LOWER_FIRST && c <= CodePoints::HANKAKU_LETTER_LOWER_LAST is_zenkaku_upper = c >= CodePoints::ZENKAKU_LETTER_UPPER_FIRST && c <= CodePoints::ZENKAKU_LETTER_UPPER_LAST is_zenkaku_lower = c >= CodePoints::ZENKAKU_LETTER_LOWER_FIRST && c <= CodePoints::ZENKAKU_LETTER_LOWER_LAST return false if !is_hankaku_upper && !is_hankaku_lower && !is_zenkaku_upper && !is_zenkaku_lower end true end |
.is_valid_string(value, encoding_flags) ⇒ Object
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/japan_shipping_csv/encoding.rb', line 137 def is_valid_string(value, encoding_flags) value.split("").each do |c| # if is_half_width(c) && !(encoding_flags & Encoding::HALFWIDTH) # return false # end # if is_full_width(c) && !(encoding_flags & Encoding::FULLWIDTH) # return false # end if is_romaji(c) && !(encoding_flags & Encoding::ROMAJI) return false end if is_number(c) && !(encoding_flags & Encoding::NUMBERS) return false end if is_katakana(c) && !(encoding_flags & Encoding::KATAKANA) return false end if is_hyphen(c) && !(encoding_flags & Encoding::HYPHEN) return false end end return true end |
.reencode(value, encoding_flags) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/japan_shipping_csv/encoding.rb', line 73 def reencode(value, encoding_flags) return value if value.nil? result = value # if half-width not allowed half_width_allowed = (encoding_flags & Encoding::HALFWIDTH) == Encoding::HALFWIDTH if half_width_allowed result = NKF.nkf('-X -w', value).tr('0-9a-zA-Z -', '0-9a-zA-Z -') end # if full-width not allowed fullwidth_allowed = (encoding_flags & Encoding::FULLWIDTH) == Encoding::FULLWIDTH if fullwidth_allowed result = NKF.nkf('-X -w', value).tr('0-9a-zA-Z -', '0-9a-zA-Z -').tr(''', '’') end result end |