ykutils 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/Gemfile +4 -0
- data/README.md +39 -0
- data/Rakefile +1 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/lib/ykutils.rb +5 -0
- data/lib/ykutils/debugutils.rb +129 -0
- data/lib/ykutils/fileoputils2.rb +443 -0
- data/lib/ykutils/filepermision.rb +36 -0
- data/lib/ykutils/hasharray.rb +67 -0
- data/lib/ykutils/lines.rb +154 -0
- data/lib/ykutils/lsutils.rb +72 -0
- data/lib/ykutils/nkfutil.rb +155 -0
- data/lib/ykutils/nkfutil19.rb +165 -0
- data/lib/ykutils/osutil.rb +19 -0
- data/lib/ykutils/pathop.rb +37 -0
- data/lib/ykutils/retcodex.rb +50 -0
- data/lib/ykutils/specfileop.rb +213 -0
- data/lib/ykutils/stext.rb +462 -0
- data/lib/ykutils/stextx.rb +33 -0
- data/lib/ykutils/stringutils.rb +125 -0
- data/lib/ykutils/treemanager.rb +36 -0
- data/lib/ykutils/treemanagera.rb +26 -0
- data/lib/ykutils/version.rb +3 -0
- data/lib/ykutils/xlines.rb +9 -0
- data/lib/ykutils/yamlxop.rb +34 -0
- data/ykutils.gemspec +27 -0
- metadata +101 -0
@@ -0,0 +1,165 @@
|
|
1
|
+
# -*- coding utf-8 -*-
|
2
|
+
|
3
|
+
require 'nkf'
|
4
|
+
|
5
|
+
module Ykutils
|
6
|
+
module NKFUTIL
|
7
|
+
#ASCII-8BIT
|
8
|
+
#US-ASCII
|
9
|
+
CODE_TO_NAME = Hash.new("ASCII")
|
10
|
+
CODE_TO_NAME["US-ASCII"] = "ASCII"
|
11
|
+
CODE_TO_NAME["stateless-ISO-2022-JP"] = "JIS"
|
12
|
+
CODE_TO_NAME["ISO-2022-JP"] = "JIS"
|
13
|
+
CODE_TO_NAME["ISO-2022-JP-2"] = "JIS"
|
14
|
+
CODE_TO_NAME["EUC-JP"] = "EUC"
|
15
|
+
CODE_TO_NAME["eucJP-ms"] = "EUC"
|
16
|
+
CODE_TO_NAME["Shift_JIS"] = "SJIS"
|
17
|
+
CODE_TO_NAME["Windows-31J"] = "SJIS"
|
18
|
+
CODE_TO_NAME["ASCII-8BIT"] = "BINARY"
|
19
|
+
CODE_TO_NAME["UTF-8"] = "UTF8"
|
20
|
+
|
21
|
+
NAME_TO_ENCODING = Hash.new("US-ASCII")
|
22
|
+
NAME_TO_ENCODING["UTF8"] = "UTF-8"
|
23
|
+
NAME_TO_ENCODING["ASCII"] = "US-ASCII"
|
24
|
+
NAME_TO_ENCODING["JIS"] = "ISO-2022-JP"
|
25
|
+
NAME_TO_ENCODING["EUC"] = "EUC-JP"
|
26
|
+
NAME_TO_ENCODING["SJIS"] = "Winodws-31J"
|
27
|
+
NAME_TO_ENCODING["BINARY"] = "ASCII-8BIT"
|
28
|
+
|
29
|
+
def NKFUTIL.guess_encoding(str)
|
30
|
+
puts "**#{str.encoding}"
|
31
|
+
CODE_TO_NAME[ str.encoding.to_s ]
|
32
|
+
end
|
33
|
+
|
34
|
+
def NKFUTIL.config( src_encoding, dest_encoding , misc_option = nil )
|
35
|
+
end
|
36
|
+
|
37
|
+
class Assoc
|
38
|
+
@@hs = {}
|
39
|
+
@@config = nil
|
40
|
+
|
41
|
+
def Assoc.set( key, value )
|
42
|
+
if value
|
43
|
+
@@hs[key] = Assoc.convert( value )
|
44
|
+
else
|
45
|
+
@@hs[key] = value
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def Assoc.get( key )
|
50
|
+
@@hs[key]
|
51
|
+
end
|
52
|
+
|
53
|
+
def Assoc.to_nkf_encoding_format( encoding )
|
54
|
+
NAME_TO_ENCODING[ encoding ]
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
def Assoc.config( src_encoding, dest_encoding , misc_option = nil )
|
59
|
+
@@config = dest_encoding
|
60
|
+
end
|
61
|
+
|
62
|
+
def Assoc.auto_config_to_inner( str , misc_option = nil )
|
63
|
+
if str
|
64
|
+
src_encoding = Assoc.to_nkf_encoding_format( NKFUTIL.guess_encoding( str ) )
|
65
|
+
else
|
66
|
+
src_encoding = "US-ASCII"
|
67
|
+
end
|
68
|
+
|
69
|
+
# inner_encoding = Assoc.to_nkf_encoding_format( Assoc.get_inner_encoding )
|
70
|
+
# if inner_encoding != "US-ASCII"
|
71
|
+
# @@config = inner_encoding
|
72
|
+
@@config = nil
|
73
|
+
# end
|
74
|
+
src_encoding
|
75
|
+
end
|
76
|
+
|
77
|
+
def Assoc.auto_config_from_inner( dest_enc , misc_option = nil )
|
78
|
+
dest_encoding = Assoc.to_nkf_encoding_format( dest_enc )
|
79
|
+
# inner_encoding = Assoc.to_nkf_encoding_format( Assoc.get_inner_encoding )
|
80
|
+
# if inner_encoding != "US-ASCII"
|
81
|
+
# @@config = dest_encoding.downcase
|
82
|
+
@@config = dest_encoding
|
83
|
+
# end
|
84
|
+
end
|
85
|
+
|
86
|
+
def Assoc.convert( str )
|
87
|
+
nstr = nil
|
88
|
+
if str != nil
|
89
|
+
if @@config != nil
|
90
|
+
begin
|
91
|
+
# nstr = NKF.nkf( @@config , str )
|
92
|
+
nstr = str.encode( @@config )
|
93
|
+
rescue => ex
|
94
|
+
puts ex
|
95
|
+
puts "========="
|
96
|
+
pp caller(0)
|
97
|
+
end
|
98
|
+
else
|
99
|
+
nstr = str
|
100
|
+
end
|
101
|
+
end
|
102
|
+
nstr
|
103
|
+
end
|
104
|
+
|
105
|
+
# def Assoc.get_inner_encoding
|
106
|
+
# @@inner_encoding = ($KCODE != "NONE") ? $KCODE : "ASCII"
|
107
|
+
# end
|
108
|
+
end
|
109
|
+
|
110
|
+
def NKFUTIL.set( key, value )
|
111
|
+
Assoc.set( key , value )
|
112
|
+
end
|
113
|
+
|
114
|
+
def NKFUTIL.get( key )
|
115
|
+
Assoc.get( key )
|
116
|
+
end
|
117
|
+
|
118
|
+
def NKFUTIL.convert( str )
|
119
|
+
if str != nil
|
120
|
+
Assoc.convert( str )
|
121
|
+
else
|
122
|
+
""
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def NKFUTIL.assoc_equal( target , key )
|
127
|
+
target == key || target == Assoc.get( key )
|
128
|
+
end
|
129
|
+
|
130
|
+
def NKFUTIL.config( src_encoding, dest_encoding , misc_option = nil )
|
131
|
+
Assoc.config( src_encoding, dest_encoding , misc_option )
|
132
|
+
end
|
133
|
+
|
134
|
+
def NKFUTIL.auto_config_to_inner( str, misc_option = nil )
|
135
|
+
Assoc.auto_config_to_inner( str , misc_option )
|
136
|
+
end
|
137
|
+
|
138
|
+
def NKFUTIL.auto_config_from_inner( dest_encoding , misc_option = nil )
|
139
|
+
Assoc.auto_config_to_inner( dest_encoding , misc_option )
|
140
|
+
end
|
141
|
+
|
142
|
+
def puts_sj( line )
|
143
|
+
puts line.encod( NAME_TO_ENCODING["SJIS"] )
|
144
|
+
# puts NKF.nkf( "-Ws -m0" , line )
|
145
|
+
end
|
146
|
+
|
147
|
+
def puts_u( line )
|
148
|
+
puts line.encod( NAME_TO_ENCODING["UTF8"] )
|
149
|
+
puts NKF.nkf( "-Sw -m0" , line )
|
150
|
+
end
|
151
|
+
|
152
|
+
def nkf_utf8_file( infname , outfname )
|
153
|
+
File.open( outfname ){|outf|
|
154
|
+
File.open( infname ){|file|
|
155
|
+
while line = file.gets
|
156
|
+
line.chomp!
|
157
|
+
# oline = NKF.nkf( "-w -m0" , line )
|
158
|
+
oline = line.encode( NAME_TO_ENCODING["UTF8"] )
|
159
|
+
outf.printf("%s\n" , oline )
|
160
|
+
end
|
161
|
+
}
|
162
|
+
}
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
module Ykutils
|
4
|
+
module PathOp
|
5
|
+
def get_buddy_path( fname , append_name = "" , extname = "" )
|
6
|
+
one_path = Pathname.new( fname ).expand_path
|
7
|
+
dir_path = one_path.dirname
|
8
|
+
base_path = one_path.basename(".*")
|
9
|
+
append_name = "-2" unless (append_name.empty? or extname.empty?)
|
10
|
+
extname ||= one_path.extname
|
11
|
+
|
12
|
+
[one_path , dir_path.join( base_path.to_s + append_name + extname )]
|
13
|
+
end
|
14
|
+
|
15
|
+
def determine_fname_for_update( fname , ext = ".bak")
|
16
|
+
get_buddy_path( fname , "" , ext )
|
17
|
+
end
|
18
|
+
|
19
|
+
def determine_fname_for_update2( fname )
|
20
|
+
begin
|
21
|
+
ctime = File.ctime( fname )
|
22
|
+
rescue => ex
|
23
|
+
end
|
24
|
+
ctime = Time.now unless ctime
|
25
|
+
ary = ctime.to_s.split(" ")
|
26
|
+
extname = File.extname( fname )
|
27
|
+
append = ["", ary[0] , ary[1].gsub(":","-")].join("-")
|
28
|
+
get_buddy_path( fname , append , extname )
|
29
|
+
end
|
30
|
+
|
31
|
+
def file_ensure( fname )
|
32
|
+
File.open( fname , "w" ).close unless File.exist?( fname )
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Ykutils
|
2
|
+
|
3
|
+
class RetCode
|
4
|
+
attr_reader :val , :mes, :ret , :bool
|
5
|
+
|
6
|
+
def initialize(obj)
|
7
|
+
@val = obj
|
8
|
+
@mes = obj["mes"]
|
9
|
+
@ret = obj["ret"]
|
10
|
+
@bool = obj["bool"]
|
11
|
+
end
|
12
|
+
|
13
|
+
def [](key)
|
14
|
+
@val[key]
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_s
|
18
|
+
@bool
|
19
|
+
end
|
20
|
+
|
21
|
+
def set_bool( val )
|
22
|
+
@bool = val
|
23
|
+
end
|
24
|
+
|
25
|
+
def get_bool
|
26
|
+
@bool
|
27
|
+
end
|
28
|
+
|
29
|
+
def set_mes( val )
|
30
|
+
@mes = val
|
31
|
+
end
|
32
|
+
|
33
|
+
def set_ret( val )
|
34
|
+
@ret = val
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
class RetCode2 < RetCode
|
39
|
+
attr_reader :val
|
40
|
+
attr_accessor :mes, :ret , :bool
|
41
|
+
|
42
|
+
def initialize( ret , bool, mes )
|
43
|
+
@val = { "ret" => ret , "bool" => bool, "mes" => mes }
|
44
|
+
@ret = ret
|
45
|
+
@bool = bool
|
46
|
+
@mes = mes
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,213 @@
|
|
1
|
+
# -*- coding utf-8 -*-
|
2
|
+
|
3
|
+
require 'pp'
|
4
|
+
require 'yaml'
|
5
|
+
require 'csv'
|
6
|
+
require 'ykutils/treemanagera'
|
7
|
+
if RUBY_VERSION >= "1.8.7"
|
8
|
+
require 'ykutils/nkfutil19'
|
9
|
+
else
|
10
|
+
require 'ykutils/nkfutil'
|
11
|
+
end
|
12
|
+
require 'ykutils/debugutils'
|
13
|
+
|
14
|
+
module Ykutils
|
15
|
+
|
16
|
+
module SpecFileOp
|
17
|
+
include DebugUtils
|
18
|
+
include NKFUTIL
|
19
|
+
|
20
|
+
def valid?
|
21
|
+
@valid
|
22
|
+
end
|
23
|
+
|
24
|
+
def open_for_write( fname )
|
25
|
+
begin
|
26
|
+
fileobj = File.open( fname , "w")
|
27
|
+
rescue => ex
|
28
|
+
pp ex
|
29
|
+
pp ex.backtrace
|
30
|
+
@valid = false
|
31
|
+
end
|
32
|
+
fileobj
|
33
|
+
end
|
34
|
+
|
35
|
+
def dump_yaml_fileobj( obj , fileobj )
|
36
|
+
begin
|
37
|
+
YAML.dump( obj , fileobj)
|
38
|
+
rescue => ex
|
39
|
+
pp ex
|
40
|
+
pp ex.backtrace
|
41
|
+
@valid = false
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def save_yaml_file( obj , fname )
|
46
|
+
begin
|
47
|
+
File.open( fname , "w"){ |fileobj|
|
48
|
+
YAML.dump( obj , fileobj )
|
49
|
+
}
|
50
|
+
rescue => ex
|
51
|
+
pp ex
|
52
|
+
pp ex.backtrace
|
53
|
+
@valid = false
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def load_yaml_file( fname )
|
58
|
+
@data = nil
|
59
|
+
begin
|
60
|
+
@data = YAML.load_file(fname)
|
61
|
+
rescue => ex
|
62
|
+
pp ex
|
63
|
+
pp ex.backtrace
|
64
|
+
@valid = false
|
65
|
+
end
|
66
|
+
@data
|
67
|
+
end
|
68
|
+
|
69
|
+
def parse_yaml_file( fname )
|
70
|
+
begin
|
71
|
+
@data = YAML.parse( File.read(fname) )
|
72
|
+
rescue => ex
|
73
|
+
pp ex
|
74
|
+
pp ex.backtrace
|
75
|
+
@valid = false
|
76
|
+
end
|
77
|
+
@data
|
78
|
+
end
|
79
|
+
|
80
|
+
def expand_data( data , separator , except_ary = [] )
|
81
|
+
tm = TreeManager.new
|
82
|
+
re = Regexp.new( separator + "([^#{separator[0,1]}]+)" + separator )
|
83
|
+
|
84
|
+
data.each do |k,v|
|
85
|
+
next unless v
|
86
|
+
v.scan(re).flatten.each do |it|
|
87
|
+
if it
|
88
|
+
tm.add( it , k )
|
89
|
+
tm.addTag( k , it )
|
90
|
+
else
|
91
|
+
tm.add( nil , k )
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
tm.tsort.reverse.each do |k|
|
97
|
+
next unless data[k]
|
98
|
+
|
99
|
+
tag = tm.getTag(k)
|
100
|
+
if tag
|
101
|
+
i=0
|
102
|
+
tag.each do |it|
|
103
|
+
ntag = Regexp.new( separator + it + separator )
|
104
|
+
if data[it]
|
105
|
+
data[k] = data[k].sub( ntag , data[it] )
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
data.each do |k,v|
|
112
|
+
next unless v
|
113
|
+
ary = v.scan(re).flatten
|
114
|
+
i = 0
|
115
|
+
if ary and ary.size > 0
|
116
|
+
except_ary.each do |it|
|
117
|
+
unless ary.index(it)
|
118
|
+
i += 1
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
if i > 0
|
123
|
+
puts "#{k} fails to exapnd data. value is #{v}"
|
124
|
+
@valid = false
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
data
|
129
|
+
end
|
130
|
+
|
131
|
+
def make_data_complement(item_ary, data , common )
|
132
|
+
item_ary.each do |it|
|
133
|
+
unless data[it] and data[it].strip != ""
|
134
|
+
data[it] = common[it]
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
def check_data_complement( item_ary , data )
|
140
|
+
mes_ary = []
|
141
|
+
item_ary.each do |k|
|
142
|
+
unless @data[k]
|
143
|
+
mes_ary << "Specify #{k} "
|
144
|
+
@valid = false
|
145
|
+
end
|
146
|
+
end
|
147
|
+
mes_ary
|
148
|
+
end
|
149
|
+
|
150
|
+
def check_data_complement_print_message( item_ary , data )
|
151
|
+
mes_ary = check_data_complement( item_ary , data )
|
152
|
+
mes_ary.each do |mes|
|
153
|
+
puts mes
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
def load_csv_file( fname )
|
158
|
+
ary = []
|
159
|
+
begin
|
160
|
+
CSV.open( fname , 'r') do |row|
|
161
|
+
next unless row
|
162
|
+
|
163
|
+
ary << row[0]
|
164
|
+
end
|
165
|
+
rescue => ex
|
166
|
+
pp ex
|
167
|
+
pp ex.backtrace
|
168
|
+
@valid = false
|
169
|
+
end
|
170
|
+
ary
|
171
|
+
end
|
172
|
+
|
173
|
+
def load_csv_file_ex( fname )
|
174
|
+
ary = []
|
175
|
+
begin
|
176
|
+
CSV.open( fname , 'r') do |row|
|
177
|
+
next unless row
|
178
|
+
|
179
|
+
ary.concat( row )
|
180
|
+
end
|
181
|
+
rescue => ex
|
182
|
+
pp ex
|
183
|
+
pp ex.backtrace
|
184
|
+
@valid = false
|
185
|
+
end
|
186
|
+
ary
|
187
|
+
end
|
188
|
+
|
189
|
+
def load_plain_text_file( fname )
|
190
|
+
ary = []
|
191
|
+
|
192
|
+
begin
|
193
|
+
ary0 = File.readlines(fname)
|
194
|
+
senc = NKFUTIL.auto_config_to_inner( ary0.join )
|
195
|
+
|
196
|
+
ary = ary0.select{ |x| x != nil }.collect{ |x|
|
197
|
+
if x != nil then
|
198
|
+
NKFUTIL.convert( x )
|
199
|
+
else
|
200
|
+
""
|
201
|
+
end
|
202
|
+
}
|
203
|
+
rescue => ex
|
204
|
+
pp ex
|
205
|
+
pp ex.backtrace
|
206
|
+
@valid = false
|
207
|
+
|
208
|
+
ary = []
|
209
|
+
end
|
210
|
+
ary
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|