rvpacker-txt 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/extensions.rb CHANGED
@@ -1,120 +1,123 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # @param [String] string
3
+ # @param [String] input_string
4
4
  # @return [String]
5
- def self.romanize_string(string)
6
- string.each_char.each_with_index do |char, i|
7
- case char
8
- when '。'
9
- string[i] = '.'
10
- when '、', ','
11
- string[i] = ','
12
- when ''
13
- string[i] = '·'
14
- when ''
15
- string[i] = ''
16
- when '', 'ー'
17
- string[i] = ''
18
- when '', '‥'
19
- string[i, 3] = '...'
20
- when '', '」', '〈', '〉'
21
- string[i] = "'"
22
- when '', '』', '《', '》'
23
- string[i] = '"'
24
- when '(', '〔', '⦅', '〘'
25
- string[i] = '('
26
- when '', '〕', '⦆', '〙'
27
- string[i] = ')'
28
- when ''
29
- string[i] = '{'
30
- when ''
31
- string[i] = '}'
32
- when '', '【', '〖', '〚'
33
- string[i] = '['
34
- when '', '】', '〗', '〛'
35
- string[i] = ']'
36
- when ''
37
- string[i] = '~'
38
- when ''
39
- string[i] = '?'
40
- when ''
41
- string[i] = ':'
42
- when ''
43
- string[i] = '!'
44
- when ''
45
- string[i] = '*'
46
- when ' '
47
- string[i] = ' '
48
- when ''
49
- string[i] = 'I'
50
- when 'ⅰ'
51
- string[i] = 'i'
52
- when ''
53
- string[i, 2] = 'II'
54
- when ''
55
- string[i, 2] = 'ii'
56
- when ''
57
- string[i, 3] = 'III'
58
- when ''
59
- string[i, 3] = 'iii'
60
- when ''
61
- string[i, 2] = 'IV'
62
- when ''
63
- string[i, 2] = 'iv'
64
- when ''
65
- string[i] = 'V'
66
- when ''
67
- string[i] = 'v'
68
- when ''
69
- string[i, 2] = 'VI'
70
- when ''
71
- string[i, 2] = 'vi'
72
- when ''
73
- string[i, 3] = 'VII'
74
- when ''
75
- string[i, 3] = 'vii'
76
- when ''
77
- string[i, 4] = 'VIII'
78
- when ''
79
- string[i, 4] = 'viii'
80
- when ''
81
- string[i, 2] = 'IX'
82
- when ''
83
- string[i, 2] = 'ix'
84
- when ''
85
- string[i] = 'X'
86
- when ''
87
- string[i] = 'x'
88
- when ''
89
- string[i, 2] = 'XI'
90
- when ''
91
- string[i, 2] = 'xi'
92
- when ''
93
- string[i, 3] = 'XII'
94
- when ''
95
- string[i, 3] = 'xii'
96
- when ''
97
- string[i] = 'L'
98
- when ''
99
- string[i] = 'l'
100
- when ''
101
- string[i] = 'C'
102
- when ''
103
- string[i] = 'c'
104
- when ''
105
- string[i] = 'D'
106
- when ''
107
- string[i] = 'd'
108
- when ''
109
- string[i] = 'M'
110
- when ''
111
- string[i] = 'm'
112
- else
113
- nil
5
+ def self.romanize_string(input_string)
6
+ # @type [Array<String>]
7
+ result = []
8
+
9
+ input_string.each_char do |char|
10
+ result << case char
11
+ when ''
12
+ '.'
13
+ when '、', ''
14
+ ','
15
+ when ''
16
+ '·'
17
+ when ''
18
+ ''
19
+ when '=', ''
20
+ ''
21
+ when '…', '‥'
22
+ '...'
23
+ when '「', '', '〈', '〉'
24
+ "'"
25
+ when '『', '', '《', '》'
26
+ '"'
27
+ when '(', '', '⦅', '〘'
28
+ '('
29
+ when ')', '', '⦆', '〙'
30
+ ')'
31
+ when ''
32
+ '{'
33
+ when ''
34
+ '}'
35
+ when '[', '', '〖', '〚'
36
+ '['
37
+ when ']', '', '〗', '〛'
38
+ ']'
39
+ when ''
40
+ '~'
41
+ when ''
42
+ '?'
43
+ when ''
44
+ ':'
45
+ when ''
46
+ '!'
47
+ when ''
48
+ '*'
49
+ when ' '
50
+ ' '
51
+ when ''
52
+ 'I'
53
+ when ''
54
+ 'i'
55
+ when ''
56
+ 'II'
57
+ when ''
58
+ 'ii'
59
+ when ''
60
+ 'III'
61
+ when ''
62
+ 'iii'
63
+ when ''
64
+ 'IV'
65
+ when ''
66
+ 'iv'
67
+ when ''
68
+ 'V'
69
+ when ''
70
+ 'v'
71
+ when ''
72
+ 'VI'
73
+ when ''
74
+ 'vi'
75
+ when ''
76
+ 'VII'
77
+ when ''
78
+ 'vii'
79
+ when ''
80
+ 'VIII'
81
+ when ''
82
+ 'viii'
83
+ when ''
84
+ 'IX'
85
+ when ''
86
+ 'ix'
87
+ when ''
88
+ 'X'
89
+ when ''
90
+ 'x'
91
+ when ''
92
+ 'XI'
93
+ when ''
94
+ 'xi'
95
+ when ''
96
+ 'XII'
97
+ when ''
98
+ 'xii'
99
+ when ''
100
+ 'L'
101
+ when ''
102
+ 'l'
103
+ when ''
104
+ 'C'
105
+ when ''
106
+ 'c'
107
+ when ''
108
+ 'D'
109
+ when ''
110
+ 'd'
111
+ when ''
112
+ 'M'
113
+ when 'ⅿ'
114
+ 'm'
115
+ else
116
+ char
114
117
  end
115
118
  end
116
119
 
117
- string
120
+ result.join
118
121
  end
119
122
 
120
123
  # @param [Array<String>] array Array of strings
@@ -139,7 +142,7 @@ def escaped?(line, index)
139
142
  end
140
143
 
141
144
  # @param [String] ruby_code
142
- def extract_strings(ruby_code, mode = false)
145
+ def extract_strings(ruby_code, mode: false)
143
146
  strings = mode ? [] : Set.new
144
147
  indices = []
145
148
  inside_string = false
@@ -173,11 +176,9 @@ def extract_strings(ruby_code, mode = false)
173
176
  while i < line.length
174
177
  char = line[i]
175
178
 
176
- if !inside_string && char == '#'
177
- break
178
- end
179
+ break if !inside_string && char == '#'
179
180
 
180
- if !inside_string && ['"', "'"].include?(char)
181
+ if !inside_string && %w[" '].include?(char)
181
182
  inside_string = true
182
183
  string_start_index = global_index + i
183
184
  current_quote_type = char
@@ -203,3 +204,29 @@ def extract_strings(ruby_code, mode = false)
203
204
 
204
205
  mode ? [strings, indices] : strings.to_a
205
206
  end
207
+
208
+ ENCODINGS = %w[
209
+ ISO-8859-1
210
+ Windows-1252
211
+ Shift_JIS
212
+ GB18030
213
+ EUC-JP
214
+ ISO-2022-JP
215
+ BIG5
216
+ EUC-KR
217
+ Windows-1251
218
+ KOI8-R
219
+ UTF-8
220
+ ].freeze
221
+
222
+ # @param [String] input_string
223
+ # @return [String]
224
+ def convert_to_utf8(input_string)
225
+ ENCODINGS.each do |encoding|
226
+ return input_string.encode('UTF-8', encoding)
227
+ rescue Encoding::InvalidByteSequenceError, Encoding::UndefinedConversionError
228
+ next
229
+ end
230
+
231
+ raise EncodingError("Cannot convert string #{input_string} to UTF-8")
232
+ end