rak 0.8.0 → 0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +11 -0
- data/bin/rak +40 -17
- data/lib/rak.rb +1 -1
- data/spec/help_spec.rb +2 -2
- data/spec/rak_spec.rb +29 -0
- metadata +3 -3
data/History.txt
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
|
2
|
+
== 0.9 / 2008-02-03
|
3
|
+
|
4
|
+
* Added .rake to ruby files
|
5
|
+
* Colouring works on Win32 if win32console gem is installed.
|
6
|
+
* Checks that file is readable by the current user.
|
7
|
+
* Ignores socket files.
|
8
|
+
* Added .erb and .haml to Ruby filetypes.
|
9
|
+
* Added search at end-of/start-of line options
|
10
|
+
* Fixed searching up the directory tree when passed '.'
|
11
|
+
|
1
12
|
== 0.8.0 / 2007-10-30
|
2
13
|
|
3
14
|
* Initial release.
|
data/bin/rak
CHANGED
@@ -1,9 +1,18 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
require 'rubygems'
|
4
|
+
|
5
|
+
if RUBY_PLATFORM =~ /mswin/
|
6
|
+
begin
|
7
|
+
require 'win32console'
|
8
|
+
rescue LoadError
|
9
|
+
ARGV << "--nocolour"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
3
13
|
require 'getoptlong'
|
4
14
|
|
5
15
|
begin
|
6
|
-
require 'rubygems'
|
7
16
|
require 'oniguruma'
|
8
17
|
require 'inline'
|
9
18
|
$use_onig = true
|
@@ -14,7 +23,7 @@ end
|
|
14
23
|
$use_onig = false
|
15
24
|
|
16
25
|
class Rak
|
17
|
-
VERSION = "0.
|
26
|
+
VERSION = "0.9"
|
18
27
|
|
19
28
|
FILE_COLOUR = "\033[1;31m"
|
20
29
|
MATCH_COLOUR = "\033[1;37m\033[41m"
|
@@ -23,7 +32,7 @@ class Rak
|
|
23
32
|
VERSION_INFO=<<END
|
24
33
|
rak #{VERSION}
|
25
34
|
|
26
|
-
Copyright
|
35
|
+
Copyright 2008 Daniel Lucraft, all rights reserved.
|
27
36
|
Based on the perl tool 'ack' by Andy Lester.
|
28
37
|
|
29
38
|
This program is free software; you can redistribute it and/or modify it
|
@@ -32,7 +41,6 @@ END
|
|
32
41
|
|
33
42
|
FILE_TYPES = {
|
34
43
|
:asm => %w( .s .S ),
|
35
|
-
# :binary => q{Binary files, as defined by Perl's -B op (default: off)},
|
36
44
|
:cc => %w( .c .h .xs ),
|
37
45
|
:cpp => %w( .cpp .m .h .C .H ),
|
38
46
|
:csharp => %w( .cs ),
|
@@ -41,7 +49,6 @@ END
|
|
41
49
|
:haskell => %w( .hs .lhs ),
|
42
50
|
:hh => %w( .h ),
|
43
51
|
:html => %w( .htm .html .shtml ),
|
44
|
-
# :skipped => q{Files, but not directories, normally skipped by ack (default: off)},
|
45
52
|
:lisp => %w( .lisp ),
|
46
53
|
:java => %w( .java properties ),
|
47
54
|
:js => %w( .js ),
|
@@ -54,7 +61,7 @@ END
|
|
54
61
|
:php => %w( .php .phpt .php3 .php4 .php5 ),
|
55
62
|
:prolog => %w( .pl .ecl ),
|
56
63
|
:python => %w( .py ),
|
57
|
-
:ruby => %w( .rb .rhtml .rjs .rxml Rakefile ),
|
64
|
+
:ruby => %w( .rb .rhtml .rjs .rxml Rakefile .rake .erb .haml),
|
58
65
|
:scheme => %w( .scm ),
|
59
66
|
:shell => %w( .sh .bash .csh .ksh .zsh ),
|
60
67
|
:sql => %w( .sql .ctl ),
|
@@ -127,7 +134,9 @@ END
|
|
127
134
|
[ '--before-context', '-B', GetoptLong::REQUIRED_ARGUMENT ],
|
128
135
|
[ '--context', '-C', GetoptLong::OPTIONAL_ARGUMENT ],
|
129
136
|
[ '-g', GetoptLong::REQUIRED_ARGUMENT ],
|
130
|
-
[ '-x', '--line-regexp', GetoptLong::NO_ARGUMENT ]
|
137
|
+
[ '-x', '--line-regexp', GetoptLong::NO_ARGUMENT ],
|
138
|
+
[ '-s', '--line-start', GetoptLong::NO_ARGUMENT ],
|
139
|
+
[ '-e', '--line-end', GetoptLong::NO_ARGUMENT ]
|
131
140
|
)
|
132
141
|
|
133
142
|
dir = nil
|
@@ -147,6 +156,8 @@ END
|
|
147
156
|
opt[:print_match] = false
|
148
157
|
opt[:match_whole_words] = false
|
149
158
|
opt[:match_whole_lines] = false
|
159
|
+
opt[:match_line_starts] = false
|
160
|
+
opt[:match_line_ends] = false
|
150
161
|
opt[:print_file_each_line] = false
|
151
162
|
opt[:print_file_if_match] = false
|
152
163
|
opt[:print_file_if_no_match] = false
|
@@ -175,7 +186,7 @@ END
|
|
175
186
|
when '--help'
|
176
187
|
if arg == ""
|
177
188
|
puts USAGE_HELP
|
178
|
-
elsif arg == "types"
|
189
|
+
elsif arg == "types" or arg == "type"
|
179
190
|
puts TYPES_HELP
|
180
191
|
end
|
181
192
|
exit
|
@@ -282,6 +293,10 @@ END
|
|
282
293
|
opt[:filename_regex] = arg
|
283
294
|
when '-x'
|
284
295
|
opt[:match_whole_lines] = true
|
296
|
+
when '-s'
|
297
|
+
opt[:match_line_starts] = true
|
298
|
+
when '-e'
|
299
|
+
opt[:match_line_ends] = true
|
285
300
|
end
|
286
301
|
end
|
287
302
|
rescue GetoptLong::InvalidOption => ex
|
@@ -318,6 +333,7 @@ END
|
|
318
333
|
|
319
334
|
def self.get_all_files(files=[], dir="./")
|
320
335
|
Dir[dir+"*"].each do |fn|
|
336
|
+
next if fn == ".."
|
321
337
|
if File.directory? fn
|
322
338
|
if opt[:descend]
|
323
339
|
if File.symlink? fn
|
@@ -329,12 +345,14 @@ END
|
|
329
345
|
end
|
330
346
|
end
|
331
347
|
else
|
332
|
-
if File.
|
333
|
-
if
|
348
|
+
if !File.socket? fn and File.readable? fn
|
349
|
+
if File.symlink? fn
|
350
|
+
if opt[:follow_symlinks]
|
351
|
+
files << fn
|
352
|
+
end
|
353
|
+
else
|
334
354
|
files << fn
|
335
355
|
end
|
336
|
-
else
|
337
|
-
files << fn
|
338
356
|
end
|
339
357
|
end
|
340
358
|
end
|
@@ -476,6 +494,12 @@ END
|
|
476
494
|
if opt[:match_whole_lines]
|
477
495
|
str = "^" + str + "$"
|
478
496
|
end
|
497
|
+
if opt[:match_line_starts]
|
498
|
+
str = "^" + str
|
499
|
+
end
|
500
|
+
if opt[:match_line_ends]
|
501
|
+
str = str + "$"
|
502
|
+
end
|
479
503
|
if $use_onig
|
480
504
|
if opt[:ignore_case]
|
481
505
|
re = Oniguruma::ORegexp.new(str, :options => Oniguruma::OPTION_IGNORECASE)
|
@@ -519,7 +543,7 @@ END
|
|
519
543
|
code << %{ elsif fn.is_a? IO }
|
520
544
|
code << %{ f = fn }
|
521
545
|
code << %{ end }
|
522
|
-
|
546
|
+
|
523
547
|
code << %{ f.each_line do |line| }
|
524
548
|
code << %{ i += 1 }
|
525
549
|
code << %{ rest = line }
|
@@ -642,9 +666,6 @@ END
|
|
642
666
|
code << %{ end }
|
643
667
|
end
|
644
668
|
code << %{end }
|
645
|
-
# if ENV['RACK_TEST'] == "true"
|
646
|
-
# File.open("compiled_method.rb", "w") {|f| f.puts code}
|
647
|
-
# end
|
648
669
|
module_eval code
|
649
670
|
end
|
650
671
|
|
@@ -692,6 +713,8 @@ Searching:
|
|
692
713
|
-w, --word-regexp Force PATTERN to match only whole words
|
693
714
|
-x, --line-regexp Force PATTERN to match only whole lines
|
694
715
|
-Q, --literal Quote all metacharacters; expr is literal
|
716
|
+
-s, --line-start Match only at the start of a line
|
717
|
+
-e, --line-start Match only at the end of a line
|
695
718
|
|
696
719
|
Search output:
|
697
720
|
-l, --files-with-matches
|
@@ -780,7 +803,7 @@ Note that some extensions may appear in multiple types. For example,
|
|
780
803
|
--[no]php .php .phpt .php3 .php4 .php5
|
781
804
|
--[no]prolog .pl .ecl
|
782
805
|
--[no]python .py
|
783
|
-
--[no]ruby .rb .rhtml .rjs .rxml Rakefile
|
806
|
+
--[no]ruby .rb .rhtml .rjs .rxml Rakefile .rake .erb .haml
|
784
807
|
--[no]scheme .scm
|
785
808
|
--[no]shell .sh .bash .csh .ksh .zsh
|
786
809
|
--[no]sql .sql .ctl
|
data/lib/rak.rb
CHANGED
data/spec/help_spec.rb
CHANGED
@@ -12,9 +12,9 @@ describe "Rak", "help and errors" do
|
|
12
12
|
|
13
13
|
it "--version prints version information" do
|
14
14
|
strip_ansi(%x{rak --version}).should == t=<<END
|
15
|
-
rak 0.
|
15
|
+
rak 0.9
|
16
16
|
|
17
|
-
Copyright
|
17
|
+
Copyright 2008 Daniel Lucraft, all rights reserved.
|
18
18
|
Based on the perl tool 'ack' by Andy Lester.
|
19
19
|
|
20
20
|
This program is free software; you can redistribute it and/or modify it
|
data/spec/rak_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
|
2
|
+
require 'fileutils'
|
2
3
|
|
3
4
|
require File.dirname(__FILE__) + "/spec_helpers"
|
4
5
|
|
@@ -6,6 +7,9 @@ describe "Rak", "with no options" do
|
|
6
7
|
before(:all) do
|
7
8
|
ENV['RAK_TEST'] = "true"
|
8
9
|
end
|
10
|
+
before(:each)do
|
11
|
+
FileUtils.cd(HERE+"/example/")
|
12
|
+
end
|
9
13
|
after(:all) do
|
10
14
|
ENV['RAK_TEST'] = "false"
|
11
15
|
end
|
@@ -459,6 +463,28 @@ END
|
|
459
463
|
3|*foo foo foo Caprica foo foo foo*
|
460
464
|
4|*foo Capsicum foo foo foo foo foo*
|
461
465
|
|
466
|
+
END
|
467
|
+
end
|
468
|
+
|
469
|
+
it "-s means match only at the start of a line" do
|
470
|
+
asterize_ansi(%x{rak -s "foo Cap"}).should == t=<<END
|
471
|
+
*foo.rb*
|
472
|
+
4|*foo Cap*sicum foo foo foo foo foo
|
473
|
+
|
474
|
+
END
|
475
|
+
end
|
476
|
+
|
477
|
+
it "-e means match only at the end of a line" do
|
478
|
+
asterize_ansi(%x{rak -e "kon foo foo"}).should == t=<<END
|
479
|
+
*foo.rb*
|
480
|
+
6|foo foo foo foo foo Pi*kon foo foo*
|
481
|
+
|
482
|
+
END
|
483
|
+
end
|
484
|
+
|
485
|
+
it "should not recurse down '..' when used with . " do
|
486
|
+
FileUtils.cd(HERE+"/example/dir1/")
|
487
|
+
asterize_ansi(%x{rak foo .}).should == t=<<END
|
462
488
|
END
|
463
489
|
end
|
464
490
|
end
|
@@ -467,6 +493,9 @@ describe "Rak", "with combinations of options" do
|
|
467
493
|
before(:all) do
|
468
494
|
ENV['RAK_TEST'] = "true"
|
469
495
|
end
|
496
|
+
before(:each)do
|
497
|
+
FileUtils.cd(HERE+"/example/")
|
498
|
+
end
|
470
499
|
after(:all) do
|
471
500
|
ENV['RAK_TEST'] = "false"
|
472
501
|
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rak
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date:
|
6
|
+
version: "0.9"
|
7
|
+
date: 2008-02-03 00:00:00 +00:00
|
8
8
|
summary: A grep replacement in Ruby, type "$rak pattern".
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -60,5 +60,5 @@ dependencies:
|
|
60
60
|
requirements:
|
61
61
|
- - ">="
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: 1.
|
63
|
+
version: 1.4.0
|
64
64
|
version:
|