filex 0.1.4 → 0.1.5
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.
- checksums.yaml +4 -4
- data/.gitignore +0 -0
- data/.rspec +0 -0
- data/.rubocop.yml +115 -0
- data/.travis.yml +0 -0
- data/Gemfile +0 -0
- data/LICENSE +0 -0
- data/LICENSE.txt +0 -0
- data/README.md +0 -0
- data/Rakefile +0 -0
- data/filex.gemspec +0 -0
- data/lib/filex.rb +196 -72
- data/lib/filex/version.rb +2 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '07842dde93309500dc3c9462ba33e530443a84376a4c6e5cf7edce3d5b9843a7'
|
4
|
+
data.tar.gz: 73b1b04a6b0c0e42693e8ee11d523647b1aeaa57e31238f57ef3aecab64fc6b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da6c1f283a4578ef8e4bc7377fa5da990363db1c3c213783e98aa09f0564f7746999bf76750c4347f3ea10938d3b2414edadfe557c34ad0ab71b61e63e1fe87c
|
7
|
+
data.tar.gz: 6526c843d4e043e4b996b73640323a0dcc0850b37370a6ad23ed50ed78037b0a10d586cd396cabc210d7e24fd7fa6a206372c77023d0de8d9795f4c41b18ec91
|
data/.gitignore
CHANGED
File without changes
|
data/.rspec
CHANGED
File without changes
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
inherit_from: .rubocop_todo.yml
|
2
|
+
|
3
|
+
AllCops:
|
4
|
+
TargetRubyVersion: 2.5
|
5
|
+
DisplayCopNames: true
|
6
|
+
#
|
7
|
+
StyleGuideBaseURL: https://github.com/fortissimo1997/ruby-style-guide/blob/japanese/README.ja.md
|
8
|
+
#
|
9
|
+
Exclude:
|
10
|
+
- "Rakefile"
|
11
|
+
- "*.gemspec"
|
12
|
+
- "vendor/**/*"
|
13
|
+
- "spec/*.rb"
|
14
|
+
- 'bin/console'
|
15
|
+
- 'bin/setup'
|
16
|
+
|
17
|
+
Layout/ExtraSpacing:
|
18
|
+
AllowForAlignment: true
|
19
|
+
Layout/SpaceInsideBlockBraces:
|
20
|
+
EnforcedStyle: space
|
21
|
+
SpaceBeforeBlockParameters: false
|
22
|
+
Layout/MultilineMethodCallIndentation:
|
23
|
+
EnforcedStyle: indented
|
24
|
+
Layout/EmptyLineAfterGuardClause:
|
25
|
+
Enabled: false
|
26
|
+
Layout/MultilineOperationIndentation:
|
27
|
+
EnforcedStyle: indented
|
28
|
+
|
29
|
+
Lint/UnderscorePrefixedVariableName:
|
30
|
+
Enabled: false
|
31
|
+
Lint/UnusedMethodArgument:
|
32
|
+
Enabled: false
|
33
|
+
|
34
|
+
Metrics/LineLength:
|
35
|
+
Enabled: false
|
36
|
+
Metrics/ClassLength:
|
37
|
+
Exclude:
|
38
|
+
# - "test/**/*.rb"
|
39
|
+
Metrics/ParameterLists:
|
40
|
+
Max: 7
|
41
|
+
Metrics/MethodLength:
|
42
|
+
Max: 30
|
43
|
+
|
44
|
+
Naming/FileName:
|
45
|
+
Enabled: false
|
46
|
+
Naming/UncommunicativeMethodParamName:
|
47
|
+
AllowedNames:
|
48
|
+
- z
|
49
|
+
|
50
|
+
Style/AsciiComments:
|
51
|
+
Enabled: false
|
52
|
+
Style/HashSyntax:
|
53
|
+
Exclude:
|
54
|
+
- "**/*.rake"
|
55
|
+
- "Rakefile"
|
56
|
+
Style/EmptyMethod:
|
57
|
+
Enabled: false
|
58
|
+
Style/FrozenStringLiteralComment:
|
59
|
+
Enabled: false
|
60
|
+
Style/NumericLiterals:
|
61
|
+
Enabled: false
|
62
|
+
Style/StringLiterals:
|
63
|
+
EnforcedStyle: double_quotes
|
64
|
+
Style/TrailingCommaInArrayLiteral:
|
65
|
+
Enabled: false
|
66
|
+
Style/TrailingCommaInHashLiteral:
|
67
|
+
Enabled: false
|
68
|
+
Style/TrailingCommaInArguments:
|
69
|
+
Enabled: false
|
70
|
+
Style/Documentation:
|
71
|
+
Enabled: false
|
72
|
+
Style/WordArray:
|
73
|
+
Enabled: false
|
74
|
+
Style/BarePercentLiterals:
|
75
|
+
EnforcedStyle: percent_q
|
76
|
+
Style/BracesAroundHashParameters:
|
77
|
+
Enabled: false
|
78
|
+
Style/PercentQLiterals:
|
79
|
+
Enabled: false
|
80
|
+
Style/UnneededPercentQ:
|
81
|
+
Enabled: false
|
82
|
+
Style/IfUnlessModifier:
|
83
|
+
Enabled: false
|
84
|
+
Style/NumericPredicate:
|
85
|
+
Enabled: false
|
86
|
+
Style/MutableConstant:
|
87
|
+
Enabled: false
|
88
|
+
Style/SymbolArray:
|
89
|
+
Enabled: false
|
90
|
+
Style/FormatString:
|
91
|
+
Enabled: false
|
92
|
+
Style/ConditionalAssignment:
|
93
|
+
Enabled: false
|
94
|
+
Style/WhileUntilModifier:
|
95
|
+
Enabled: false
|
96
|
+
Style/RedundantBegin:
|
97
|
+
Enabled: false
|
98
|
+
Style/YodaCondition:
|
99
|
+
EnforcedStyle: forbid_for_equality_operators_only
|
100
|
+
Style/TernaryParentheses:
|
101
|
+
EnforcedStyle: require_parentheses_when_complex
|
102
|
+
Style/MethodCallWithArgsParentheses:
|
103
|
+
Exclude:
|
104
|
+
- "**/*.rake"
|
105
|
+
- "Rakefile"
|
106
|
+
- "Gemfile"
|
107
|
+
Enabled: true
|
108
|
+
IgnoredMethods:
|
109
|
+
- p
|
110
|
+
- pp
|
111
|
+
- puts
|
112
|
+
- print
|
113
|
+
- printf
|
114
|
+
- raise
|
115
|
+
- require
|
data/.travis.yml
CHANGED
File without changes
|
data/Gemfile
CHANGED
File without changes
|
data/LICENSE
CHANGED
File without changes
|
data/LICENSE.txt
CHANGED
File without changes
|
data/README.md
CHANGED
File without changes
|
data/Rakefile
CHANGED
File without changes
|
data/filex.gemspec
CHANGED
File without changes
|
data/lib/filex.rb
CHANGED
@@ -1,15 +1,30 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
#
|
4
|
+
# ファイル操作用モジュール
|
5
|
+
#
|
3
6
|
module Filex
|
4
7
|
require "digest"
|
5
8
|
require "pp"
|
6
9
|
require "erubis"
|
7
10
|
require "yaml"
|
8
11
|
require "messagex"
|
12
|
+
require "filex/version"
|
9
13
|
|
14
|
+
#
|
15
|
+
# ファイル操作用モジュールのエラークラス
|
16
|
+
#
|
10
17
|
class Error < StandardError; end
|
11
18
|
|
12
|
-
|
19
|
+
#
|
20
|
+
# ファイル操作用クラス
|
21
|
+
#
|
22
|
+
class Filex # rubocop:disable Metrics/ClassLength
|
23
|
+
#
|
24
|
+
# Filexクラスで利用する終了ステータスの登録
|
25
|
+
#
|
26
|
+
# @param mes [Messagex] Messagexクラスのインスタンス
|
27
|
+
# @return [void]
|
13
28
|
def self.setup(mes)
|
14
29
|
mes.add_exitcode("EXIT_CODE_CANNOT_ANALYZE_YAMLFILE")
|
15
30
|
mes.add_exitcode("EXIT_CODE_NAME_ERROR_EXCEPTION_IN_ERUBY")
|
@@ -17,6 +32,11 @@ module Filex
|
|
17
32
|
mes.add_exitcode("EXIT_CODE_FILE_IS_EMPTY")
|
18
33
|
end
|
19
34
|
|
35
|
+
#
|
36
|
+
# YAML形式文字列をRubyのオブジェクトに変換
|
37
|
+
# @param str [String] YAML形式の文字列
|
38
|
+
# @param mes [Messagex] Messagexクラスのインスタンス
|
39
|
+
# @return [Hash] YAMLの変換結果
|
20
40
|
def self.load_yaml(str, mes)
|
21
41
|
yamlhs = {}
|
22
42
|
begin
|
@@ -30,11 +50,24 @@ module Filex
|
|
30
50
|
yamlhs
|
31
51
|
end
|
32
52
|
|
53
|
+
#
|
54
|
+
# YAML形式ファイルをRubyのオブジェクトに変換
|
55
|
+
#
|
56
|
+
# @param yamlfname [String] yamlファイル名
|
57
|
+
# @param mes [Messagex] Messagexクラスのインスタンス
|
58
|
+
# @return [Hash] YAMLの変換結果
|
33
59
|
def self.check_and_load_yamlfile(yamlfname, mes)
|
34
60
|
str = Filex.check_and_load_file(yamlfname, mes)
|
35
61
|
load_yaml(str, mes)
|
36
62
|
end
|
37
63
|
|
64
|
+
#
|
65
|
+
# YAML形式ファイルを存在チェック、(eRubyスクリプトとしての)YAMLファイルをハッシュを用いて置換した後にRubyのオブジェクトに変換
|
66
|
+
#
|
67
|
+
# @param yamlfname [String] yamlファイル名(eRubyスクリプトでもある)
|
68
|
+
# @param objx [Hash] eRubyスクリプト置換用ハッシュ
|
69
|
+
# @param mes [Messagex] Messagexクラスのインスタンス
|
70
|
+
# @return [Hash] YAMLの変換結果
|
38
71
|
def self.check_and_expand_yamlfile(yamlfname, objx, mes)
|
39
72
|
lines = Filex.check_and_expand_file_lines(yamlfname, objx, mes)
|
40
73
|
str = escape_by_single_quote_with_lines_in_yamlformat(lines, mes).join("\n")
|
@@ -43,10 +76,23 @@ module Filex
|
|
43
76
|
load_yaml(str, mes)
|
44
77
|
end
|
45
78
|
|
79
|
+
#
|
80
|
+
# eRubyスクリプトの存在チェック、ハッシュを用いて置換したものを行の配列として得る
|
81
|
+
#
|
82
|
+
# @param fname [String] eRubyスクリプト名
|
83
|
+
# @param data [Hash] eRubyスクリプト置換用ハッシュ
|
84
|
+
# @param mes [Messagex] Messagexクラスのインスタンス
|
85
|
+
# @return [Array<String>] eRubyスクリプトの変換結果
|
46
86
|
def self.check_and_expand_file_lines(fname, data, mes)
|
47
87
|
check_and_expand_file(fname, data, mes).split("\n")
|
48
88
|
end
|
49
89
|
|
90
|
+
#
|
91
|
+
# テキストファイルの存在チェック、ファイルの内容を1個の文字列に変換
|
92
|
+
#
|
93
|
+
# @param fname [String] ファイル名
|
94
|
+
# @param mes [Messagex] Messagexクラスのインスタンス
|
95
|
+
# @return [String] ファイルの内容
|
50
96
|
def self.check_and_load_file(fname, mes)
|
51
97
|
size = File.size?(fname)
|
52
98
|
if size && (size > 0)
|
@@ -81,6 +127,14 @@ module Filex
|
|
81
127
|
strdata
|
82
128
|
end
|
83
129
|
|
130
|
+
#
|
131
|
+
# eRubyスクリプト文字列を、ハッシュを用いて置換した内容を1個の文字列に変換
|
132
|
+
#
|
133
|
+
# @param eruby_str [String] eRubyスクリプト文字列
|
134
|
+
# @param data [Hash] eRubyスクリプト置換用ハッシュ
|
135
|
+
# @param mes [Messagex] Messagexクラスのインスタンス
|
136
|
+
# @param fnames [Hash] 入力ファイル名群
|
137
|
+
# @return [String] eRubyスクリプトの変換結果
|
84
138
|
def self.expand_str(eruby_str, data, mes, fnames={})
|
85
139
|
begin
|
86
140
|
mes.output_info("eruby_str=|#{eruby_str}|")
|
@@ -98,139 +152,209 @@ module Filex
|
|
98
152
|
strdata
|
99
153
|
end
|
100
154
|
|
155
|
+
#
|
156
|
+
# eRubyスクリプトファイルの存在チェック、ハッシュを用いてを置換後に1個の文字列に変換
|
157
|
+
#
|
158
|
+
# @param fname [String] eRubyスクリプトファイル
|
159
|
+
# @param objx [Hash] eRubyスクリプト置換用ハッシュ
|
160
|
+
# @param mes [Messagex] Messagexクラスのインスタンス
|
161
|
+
# @return [String] eRubyスクリプトファイルの変換結果
|
101
162
|
def self.check_and_expand_file(fname, objx, mes)
|
102
163
|
strdata = check_and_load_file(fname, mes)
|
103
164
|
mes.output_info("fname=#{fname}")
|
104
165
|
mes.output_info("strdata=#{strdata}")
|
105
166
|
mes.output_info("objx=#{objx}")
|
106
|
-
strdata2 = expand_str(strdata, objx, mes,
|
167
|
+
strdata2 = expand_str(strdata, objx, mes, fname: fname)
|
107
168
|
strdata2
|
108
169
|
end
|
109
170
|
|
171
|
+
#
|
172
|
+
# 最初に現れる「:」と空白文字の組み合わせを区切り文字列として、文字列を2つに分割する
|
173
|
+
#
|
174
|
+
# @param str [String] 分割対象文字列
|
175
|
+
# @return [Array<String>] 第0要素 分割文字列の左側部分、第1要素 分割文字列の右側部分
|
110
176
|
def self.colon_space(str)
|
111
177
|
if (m = /^(\s*([^\s]+):\s)(.*)$/.match(str))
|
112
|
-
|
113
|
-
|
178
|
+
left = m[1]
|
179
|
+
right = m[3]
|
114
180
|
end
|
115
181
|
|
116
|
-
[
|
182
|
+
[left, right]
|
117
183
|
end
|
118
184
|
|
185
|
+
#
|
186
|
+
# 最初に現れる「:」と空白文字以外の文字の組み合わせを区切り文字列として、文字列を2つに分割する
|
187
|
+
#
|
188
|
+
# @param str [String] 分割対象文字列
|
189
|
+
# @return [Array<String>] 第0要素 分割文字列の左側部分、第1要素 分割文字列の右側部分
|
119
190
|
def self.colon_not_space(str)
|
120
191
|
if (m = /^(\s*([^\s]+):[^\s])(.*)$/.match(str))
|
121
|
-
|
122
|
-
|
192
|
+
left = m[1]
|
193
|
+
right = m[3]
|
123
194
|
end
|
124
195
|
|
125
|
-
[
|
196
|
+
[left, right]
|
126
197
|
end
|
127
198
|
|
199
|
+
#
|
200
|
+
# 最初に現れる「:」を区切り文字として、文字列を2つに分割する
|
201
|
+
#
|
202
|
+
# @param str [String] 分割対象文字列
|
203
|
+
# @return [Array<String>] 第0要素 分割文字列の左側部分、第1要素 分割文字列の右側部分
|
128
204
|
def self.colon(str)
|
129
205
|
if (m = /^(\s*([^\s]+):)(.*)$/.match(str))
|
130
|
-
|
131
|
-
|
206
|
+
left = m[1]
|
207
|
+
right = m[3]
|
132
208
|
end
|
133
209
|
|
134
|
-
[
|
210
|
+
[left, right]
|
135
211
|
end
|
136
212
|
|
213
|
+
#
|
214
|
+
# 最初に現れる「-」と空白文字の組み合わせを区切り文字列として、文字列を2つに分割する
|
215
|
+
#
|
216
|
+
# @param str [String] 分割対象文字列
|
217
|
+
# @return [Array<String>] 第0要素 分割文字列の左側部分、第1要素 分割文字列の右側部分
|
137
218
|
def self.hyphen_space(str)
|
138
219
|
if (m = /^(\s*((\-\s+)+))(.+)$/.match(str))
|
139
|
-
|
140
|
-
|
220
|
+
left = m[1]
|
221
|
+
right = m[4]
|
141
222
|
end
|
142
223
|
|
143
|
-
[
|
224
|
+
[left, right]
|
144
225
|
end
|
145
226
|
|
227
|
+
#
|
228
|
+
# YAML形式の文字列に、シングルクォーテーションでのエスケープが必要かを調べる(第1段階)
|
229
|
+
#
|
230
|
+
# @param line [String] 対象文字列
|
231
|
+
# @param state [Hash] 状態
|
232
|
+
# @return [Array<String>] 第0要素 分割文字列の左側部分、第1要素 分割文字列の右側部分
|
146
233
|
def self.escape_single_quote_yaml_first(line, state)
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
234
|
+
# lineに対して": "での分割を試みる
|
235
|
+
left, right = colon_space(line)
|
236
|
+
state[:mes].output_info("1|left=#{left}")
|
237
|
+
left, right = colon(line) unless left
|
238
|
+
state[:mes].output_info("2|left=#{left}")
|
239
|
+
|
240
|
+
if right&.index("-")
|
241
|
+
left, right = hyphen_space(line)
|
242
|
+
state[:mes].output_info("3|left=#{left}")
|
243
|
+
if left
|
156
244
|
state[:need_quoto] = true
|
157
245
|
state[:mes].output_info("NQ|1|need_quoto=#{state[:need_quoto]}")
|
158
246
|
end
|
159
247
|
end
|
160
248
|
|
161
|
-
unless
|
162
|
-
|
249
|
+
unless left
|
250
|
+
left, right = hyphen_space(line)
|
163
251
|
end
|
164
252
|
|
165
|
-
[
|
253
|
+
[left, right]
|
166
254
|
end
|
167
255
|
|
168
|
-
|
169
|
-
|
256
|
+
#
|
257
|
+
# YAML形式の文字列に、シングルクォーテーションでのエスケープが必要かを調べる(第2段階)
|
258
|
+
#
|
259
|
+
# @param line [String] 対象文字列
|
260
|
+
# @param right [String] 対象文字列の分割右側部分
|
261
|
+
# @param state [Hash] 状態
|
262
|
+
# @option state [Messagex] :mes Messagexクラスのインスタンス
|
263
|
+
# @option state [Booleand] :has_quoto true: 対象文字列がエスケープされている false: 対象文字列はエスケープされていない
|
264
|
+
# @return [Array<String>] 第0要素 分割文字列の左側部分、第1要素 分割文字列の右側部分
|
265
|
+
def self.check_colon_in_right(right, state)
|
266
|
+
left3, right3 = colon_not_space(right)
|
267
|
+
state[:mes].output_info("52|left3=#{left3}|right3=#{right3}")
|
268
|
+
state[:need_quoto] = true
|
269
|
+
return [nil, nil] if left3
|
270
|
+
|
271
|
+
left2, right2 = colon(right)
|
272
|
+
state[:mes].output_info("53|left2=#{left2}|right2=#{right2}")
|
273
|
+
state[:need_quoto] = true
|
274
|
+
[left2, right2]
|
275
|
+
end
|
170
276
|
|
171
|
-
|
277
|
+
#
|
278
|
+
# YAML形式の文字列に、シングルクォーテーションでのエスケープが必要かを調べる(第2段階)
|
279
|
+
#
|
280
|
+
# @param line [String] 対象文字列
|
281
|
+
# @param state [Hash] 状態
|
282
|
+
# @option state [Messagex] :mes Messagexクラスのインスタンス
|
283
|
+
# @option state [Booleand] :has_quoto true: 対象文字列がエスケープされている false: 対象文字列はエスケープされていない
|
284
|
+
# @param left [String] 対象文字列の分割左側部分
|
285
|
+
# @param right [String] 対象文字列の分割右側部分
|
286
|
+
# @return [Array<String>] 第0要素 分割された文字列の左側部分、第1要素 分割された文字列の右側部分
|
287
|
+
def self.escape_single_quote_yaml_second(line, state, left, right)
|
288
|
+
state[:mes].output_info("4|left=#{left}|right=#{right}")
|
172
289
|
|
173
|
-
|
290
|
+
return [left, right] if right.nil? || right.strip.empty?
|
174
291
|
|
175
|
-
|
292
|
+
state[:has_quoto] = true if right.index("'")
|
176
293
|
|
177
|
-
return
|
294
|
+
return [left, right] if right.index(":").nil?
|
178
295
|
|
179
|
-
|
180
|
-
state[:mes].output_info("51|k2=#{k2}|v2=#{v2}")
|
296
|
+
return([left, right]) if /\d:/.match?(right)
|
181
297
|
|
182
|
-
|
183
|
-
|
184
|
-
state[:mes].output_info("52|k3=#{k3}|v3=#{v3}")
|
185
|
-
state[:need_quoto] = true
|
298
|
+
left2, right2 = colon_space(right)
|
299
|
+
state[:mes].output_info("51|left2=#{left2}|right2=#{right2}")
|
186
300
|
|
187
|
-
|
188
|
-
|
189
|
-
state[:mes].output_info("53|k2=#{k2}|v2=#{v2}")
|
190
|
-
state[:need_quoto] = true
|
191
|
-
end
|
301
|
+
unless left2
|
302
|
+
left2, right2 = check_colon_in_right(right, state)
|
192
303
|
end
|
193
304
|
|
194
|
-
if
|
195
|
-
|
196
|
-
|
197
|
-
state[:mes].output_info("6|
|
305
|
+
if left2
|
306
|
+
left += left2
|
307
|
+
right = right2
|
308
|
+
state[:mes].output_info("6|left=#{left}|right=#{right}")
|
198
309
|
end
|
199
|
-
[
|
310
|
+
[left, right]
|
200
311
|
end
|
201
312
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
313
|
+
#
|
314
|
+
# YAML形式の文字列に、シングルクォーテーションでのエスケープが必要かを調べる(第3段階)
|
315
|
+
#
|
316
|
+
# @param line [String] 対象文字列
|
317
|
+
# @param state [Hash] 状態
|
318
|
+
# @option state [Messagex] :mes Messagexクラスのインスタンス
|
319
|
+
# @option state [Booleand] :has_quoto true: 対象文字列がエスケープされている false: 対象文字列はエスケープされていない
|
320
|
+
# @param left [String] 対象文字列の分割左側部分
|
321
|
+
# @param right [String] 対象文字列の分割右側部分
|
322
|
+
# @return [void]
|
323
|
+
def self.escape_single_quote_yaml_third(line, state, left, right)
|
324
|
+
return if right.nil? || right.strip.empty?
|
325
|
+
|
326
|
+
return if state[:need_quoto]
|
327
|
+
|
328
|
+
return unless right.index(":") && right.index("*")
|
329
|
+
|
330
|
+
state[:mes].output_info("1 not need_quoto")
|
331
|
+
unless right.index("-")
|
332
|
+
state[:need_quoto] = true
|
333
|
+
state[:mes].output_info("NQ|2|need_quoto=#{state[:need_quoto]}")
|
221
334
|
end
|
335
|
+
state[:mes].output_info("1A need_quoto=#{state[:need_quoto]}")
|
222
336
|
end
|
223
337
|
|
338
|
+
#
|
339
|
+
# YAML形式の文字列の配列に(必要であれば)シングルクォーテーションでのエスケープを追加
|
340
|
+
#
|
341
|
+
# @param lines [Array<String>] 対象行の配列
|
342
|
+
# @param mes [Messagex] :mes Messagexクラスのインスタンス
|
343
|
+
# @return [Array<String>] 必要なエスケープがされた対象文字列
|
224
344
|
def self.escape_by_single_quote_with_lines_in_yamlformat(lines, mes)
|
225
345
|
state = { mes: mes }
|
226
346
|
lines.map do |line|
|
227
347
|
state[:need_quoto] = false
|
228
348
|
state[:has_quoto] = false
|
229
349
|
|
230
|
-
|
231
|
-
|
232
|
-
if
|
233
|
-
escape_single_quote_yaml_third(line, state,
|
350
|
+
left, right = escape_single_quote_yaml_first(line, state)
|
351
|
+
left, right = escape_single_quote_yaml_second(line, state, left, right)
|
352
|
+
if left
|
353
|
+
escape_single_quote_yaml_third(line, state, left, right)
|
354
|
+
end
|
355
|
+
if state[:need_quoto] && !state[:has_quoto]
|
356
|
+
state[:mes].output_info("2 need_quoto")
|
357
|
+
left + %q(') + right + %q(')
|
234
358
|
else
|
235
359
|
line
|
236
360
|
end
|
data/lib/filex/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: filex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yasuo kominami
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -90,6 +90,7 @@ extra_rdoc_files: []
|
|
90
90
|
files:
|
91
91
|
- ".gitignore"
|
92
92
|
- ".rspec"
|
93
|
+
- ".rubocop.yml"
|
93
94
|
- ".travis.yml"
|
94
95
|
- Gemfile
|
95
96
|
- LICENSE
|