ykutils 0.1.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.
- 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
|