gren 1.0.0 → 1.0.1
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/HISTORY.ja.md +6 -0
- data/HISTORY.md +6 -0
- data/gren.gemspec +1 -1
- data/lib/gren/common/grenfiletest.rb +1 -1
- data/lib/gren/common/util.rb +5 -1
- data/lib/gren/findgrep/findgrep.rb +38 -43
- data/lib/gren/version.rb +1 -1
- metadata +5 -5
data/HISTORY.ja.md
CHANGED
data/HISTORY.md
CHANGED
data/gren.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.email = ["ongaeshi0621@gmail.com"]
|
11
11
|
gem.description = %q{gren is a next grep tool.}
|
12
12
|
gem.summary = %q{gren is a next grep tool. The basis is find+grep.}
|
13
|
-
gem.homepage = ""
|
13
|
+
gem.homepage = "http://gren.ongaeshi.me"
|
14
14
|
|
15
15
|
gem.files = `git ls-files`.split($/)
|
16
16
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
module GrenFileTest
|
4
|
-
IGNORE_FILE = /(\A#.*#\Z)|(~\Z)|(\A\.#)|(\.d\Z)|(\.map\Z)|(\.MAP\Z)/
|
4
|
+
IGNORE_FILE = /(\A#.*#\Z)|(~\Z)|(\A\.#)|(\.d\Z)|(\.map\Z)|(\.MAP\Z)|(\.xbm\Z)|(\.ppm\Z)|(\.ai\Z)|(\.png\Z)|(\.webarchive\Z)/
|
5
5
|
IGNORE_DIR = /(\A\.svn\Z)|(\A\.git\Z)|(\ACVS\Z)/
|
6
6
|
|
7
7
|
def self.ignoreDir?(fpath)
|
data/lib/gren/common/util.rb
CHANGED
@@ -93,12 +93,16 @@ module Gren
|
|
93
93
|
|
94
94
|
# StringIO patch
|
95
95
|
def pipe?(io)
|
96
|
-
io.instance_of?(IO) && File.pipe?(io)
|
96
|
+
!Platform.windows_os? && io.instance_of?(IO) && File.pipe?(io)
|
97
97
|
end
|
98
98
|
|
99
99
|
def downcase?(str)
|
100
100
|
str == str.downcase
|
101
101
|
end
|
102
102
|
|
103
|
+
def ruby19?
|
104
|
+
RUBY_VERSION >= '1.9.0'
|
105
|
+
end
|
106
|
+
|
103
107
|
end
|
104
108
|
end
|
@@ -69,7 +69,7 @@ module FindGrep
|
|
69
69
|
strs.each do |v|
|
70
70
|
option = 0
|
71
71
|
option |= Regexp::IGNORECASE if (@option.ignoreCase || (!@option.caseSensitive && Util::downcase?(v)))
|
72
|
-
regs << Regexp.new(v, option)
|
72
|
+
regs << Regexp.new(FindGrep::convline(v, @option.kcode), option)
|
73
73
|
end
|
74
74
|
|
75
75
|
regs
|
@@ -79,7 +79,11 @@ module FindGrep
|
|
79
79
|
unless Util.pipe?($stdin)
|
80
80
|
searchFromDir(stdout, @option.directory, 0)
|
81
81
|
else
|
82
|
-
|
82
|
+
begin
|
83
|
+
searchData(stdout, FindGrep::convline($stdin.read, @option.kcode).split($/), nil)
|
84
|
+
rescue ArgumentError
|
85
|
+
stdout.puts "invalid byte sequence : $stdin"
|
86
|
+
end
|
83
87
|
end
|
84
88
|
|
85
89
|
@result.time_stop
|
@@ -109,37 +113,7 @@ module FindGrep
|
|
109
113
|
end
|
110
114
|
end
|
111
115
|
|
112
|
-
|
113
|
-
sub = nil
|
114
|
-
|
115
|
-
list.each do |word|
|
116
|
-
e = key =~ word
|
117
|
-
if sub.nil?
|
118
|
-
sub = e
|
119
|
-
else
|
120
|
-
sub &= e
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
sub
|
125
|
-
end
|
126
|
-
|
127
|
-
def suffix_expression(record)
|
128
|
-
sub = nil
|
129
|
-
|
130
|
-
@option.suffixs.each do |word|
|
131
|
-
e = record.suffix =~ word
|
132
|
-
if sub.nil?
|
133
|
-
sub = e
|
134
|
-
else
|
135
|
-
sub |= e
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
sub
|
140
|
-
end
|
141
|
-
private :suffix_expression
|
142
|
-
|
116
|
+
private
|
143
117
|
|
144
118
|
def searchFromDir(stdout, dir, depth)
|
145
119
|
if (@option.depth != -1 && depth > @option.depth)
|
@@ -229,7 +203,11 @@ module FindGrep
|
|
229
203
|
@result.search_files << fpath_disp if (@option.debugMode)
|
230
204
|
|
231
205
|
open(fpath, "r") do |file|
|
232
|
-
|
206
|
+
begin
|
207
|
+
searchData(stdout, file2data(file), fpath_disp)
|
208
|
+
rescue ArgumentError
|
209
|
+
stdout.puts "invalid byte sequence : #{fpath}"
|
210
|
+
end
|
233
211
|
end
|
234
212
|
end
|
235
213
|
private :searchFile
|
@@ -264,20 +242,37 @@ module FindGrep
|
|
264
242
|
private :searchData
|
265
243
|
|
266
244
|
def file2data(file)
|
267
|
-
|
245
|
+
FindGrep::file2lines(file, @option.kcode)
|
246
|
+
end
|
247
|
+
|
248
|
+
def self.file2lines(file, kcode)
|
249
|
+
convline(file.read, kcode).split($/)
|
250
|
+
end
|
268
251
|
|
269
|
-
|
270
|
-
|
252
|
+
def self.convline(line, kcode)
|
253
|
+
if Util::ruby19?
|
254
|
+
# @memo ファイルエンコーディングに相違が起きている可能性があるため対策
|
255
|
+
# 本当はファイルを開く時にエンコーディングを指定するのが正しい
|
271
256
|
|
272
|
-
|
273
|
-
#
|
274
|
-
|
257
|
+
# 方法1 : 強制的にバイナリ化
|
258
|
+
# line.force_encoding("Binary")
|
259
|
+
# line = line.kconv(kcode)
|
260
|
+
|
261
|
+
# 方法2 : 入力エンコーディングを強制的に指定
|
262
|
+
line.kconv(kcode, Kconv::guess(line))
|
263
|
+
else
|
264
|
+
if (kcode != Kconv::NOCONV)
|
265
|
+
file_kcode = Kconv::guess(line)
|
266
|
+
|
267
|
+
if (file_kcode != kcode)
|
268
|
+
# puts "encode!! #{fpath} : #{kcode} <- #{file_kcode}"
|
269
|
+
line = line.kconv(kcode, file_kcode)
|
275
270
|
end
|
276
271
|
end
|
277
|
-
|
278
|
-
|
272
|
+
|
273
|
+
line
|
274
|
+
end
|
279
275
|
end
|
280
|
-
private :file2data
|
281
276
|
|
282
277
|
def match?(line)
|
283
278
|
match_datas = []
|
data/lib/gren/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gren
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-04-
|
12
|
+
date: 2013-04-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: termcolor
|
16
|
-
requirement: &
|
16
|
+
requirement: &2157299740 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 1.2.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2157299740
|
25
25
|
description: gren is a next grep tool.
|
26
26
|
email:
|
27
27
|
- ongaeshi0621@gmail.com
|
@@ -60,7 +60,7 @@ files:
|
|
60
60
|
- test/test_gren_util.rb
|
61
61
|
- test/test_helper.rb
|
62
62
|
- test/test_string_snip.rb
|
63
|
-
homepage:
|
63
|
+
homepage: http://gren.ongaeshi.me
|
64
64
|
licenses: []
|
65
65
|
post_install_message:
|
66
66
|
rdoc_options: []
|