ackr 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/README.markdown +39 -0
- data/Rakefile +35 -0
- data/TODO +27 -0
- data/VERSION +1 -0
- data/bin/ackr +20 -0
- data/lib/ackr.rb +26 -0
- data/lib/ackr/colorizer.rb +32 -0
- data/lib/ackr/finder.rb +41 -0
- metadata +70 -0
data/README.markdown
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
Ackr
|
2
|
+
================
|
3
|
+
|
4
|
+
Ackr is a very light grep/ack/rak replacement for lazy developers.
|
5
|
+
|
6
|
+
Description
|
7
|
+
-----------
|
8
|
+
|
9
|
+
TODO. Work in progress.
|
10
|
+
|
11
|
+
Run on linux. Maybe run on mac os. I guess it doesn't run on windows.
|
12
|
+
|
13
|
+
Install
|
14
|
+
-------------------------
|
15
|
+
|
16
|
+
gem install ackr
|
17
|
+
|
18
|
+
Usage
|
19
|
+
--------------------------
|
20
|
+
|
21
|
+
TODO. Work in progress.
|
22
|
+
|
23
|
+
|
24
|
+
Dependencies
|
25
|
+
--------------------------
|
26
|
+
|
27
|
+
* ruby >= 1.9.2
|
28
|
+
|
29
|
+
License
|
30
|
+
--------------------------
|
31
|
+
|
32
|
+
MIT
|
33
|
+
|
34
|
+
|
35
|
+
Questions and/or Comments
|
36
|
+
--------------------------
|
37
|
+
|
38
|
+
Feel free to email [Xavier Nayrac](mailto:xavier.nayrac@gmail.com)
|
39
|
+
with any questions.
|
data/Rakefile
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
# todo: replace GEM by th gem name
|
4
|
+
|
5
|
+
require 'rake'
|
6
|
+
require 'rspec/core/rake_task'
|
7
|
+
|
8
|
+
desc 'Test GEM'
|
9
|
+
task :default => :spec
|
10
|
+
|
11
|
+
desc 'Test GEM with rspec'
|
12
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
13
|
+
t.rspec_opts = ['--color']
|
14
|
+
end
|
15
|
+
|
16
|
+
desc 'Check for code smells'
|
17
|
+
task :reek do
|
18
|
+
puts 'Checking for code smells...'
|
19
|
+
files = Dir.glob 'lib/**/*.rb'
|
20
|
+
# files.delete FILE_TO_EXCLUDE
|
21
|
+
args = files.join(' ')
|
22
|
+
sh "reek --quiet #{args} | ./reek.sed"
|
23
|
+
end
|
24
|
+
|
25
|
+
desc 'Build GEM & install it'
|
26
|
+
task :install do
|
27
|
+
sh "gem build GEM.gemspec"
|
28
|
+
f = FileList['GEM*gem'].to_a
|
29
|
+
sh "gem install #{f.first} --no-rdoc --no-ri"
|
30
|
+
end
|
31
|
+
|
32
|
+
desc 'Generate yard documentation for developpers'
|
33
|
+
task :doc do
|
34
|
+
exec 'yardoc --title "GEM Documentation" - NEWS COPYING VERSION'
|
35
|
+
end
|
data/TODO
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
Écrire le readme
|
2
|
+
write tests
|
3
|
+
use reek
|
4
|
+
|
5
|
+
---------------------------
|
6
|
+
|
7
|
+
[ok]Dans tout les fichiers texte.
|
8
|
+
[ok]case insensitive
|
9
|
+
[ok]nom du fichier en couleur
|
10
|
+
[ok]terme de la recherche en gras
|
11
|
+
supprimer les espaces avant/après
|
12
|
+
1|.le point signale que un (ou des) espaces ont été supprimés
|
13
|
+
une ligne sur le terminal fait 80 char max
|
14
|
+
|
15
|
+
---------------------------
|
16
|
+
|
17
|
+
$ ackr /tel \d{10}/i
|
18
|
+
|
19
|
+
|
20
|
+
---------------------------
|
21
|
+
fichier de config
|
22
|
+
|
23
|
+
---------------------------
|
24
|
+
fuzzy search:
|
25
|
+
$ ackf abc
|
26
|
+
path/to/file
|
27
|
+
00001| a123 b 2 568 c
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1
|
data/bin/ackr
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- encoding: utf-8 -*-
|
3
|
+
|
4
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
|
5
|
+
$ACKR_PATH = File.expand_path(File.dirname(__FILE__)) + '/..'
|
6
|
+
|
7
|
+
require 'ackr'
|
8
|
+
|
9
|
+
if ARGV[0].nil?
|
10
|
+
puts "usage:
|
11
|
+
|
12
|
+
ackr search_string
|
13
|
+
|
14
|
+
...OR...
|
15
|
+
|
16
|
+
ackr /regex/
|
17
|
+
"
|
18
|
+
else
|
19
|
+
Ackr::Finder.new(ARGV[0].dup).run
|
20
|
+
end
|
data/lib/ackr.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'ackr/finder'
|
4
|
+
require 'ackr/colorizer'
|
5
|
+
|
6
|
+
module Ackr
|
7
|
+
# Method taken from: https://github.com/djberg96/ptools
|
8
|
+
# --
|
9
|
+
#
|
10
|
+
# Returns whether or not +file+ is a binary file. Note that this is
|
11
|
+
# not guaranteed to be 100% accurate. It performs a "best guess" based
|
12
|
+
# on a simple test of the first +File.blksize+ characters.
|
13
|
+
#
|
14
|
+
# Example:
|
15
|
+
#
|
16
|
+
# File.binary?('somefile.exe') # => true
|
17
|
+
# File.binary?('somefile.txt') # => false
|
18
|
+
#--
|
19
|
+
# Based on code originally provided by Ryan Davis (which, in turn, is
|
20
|
+
# based on Perl's -B switch).
|
21
|
+
#
|
22
|
+
def self.binary?(file)
|
23
|
+
s = (File.read(file, File.stat(file).blksize) || "").split(//)
|
24
|
+
((s.size - s.grep(" ".."~").size) / s.size.to_f) > 0.30
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'rainbow'
|
4
|
+
|
5
|
+
module Ackr
|
6
|
+
|
7
|
+
# Methods to add terminal color commands into strings.
|
8
|
+
module Colorizer
|
9
|
+
|
10
|
+
# Public: Highlight a filename.
|
11
|
+
#
|
12
|
+
# string - The filename.
|
13
|
+
#
|
14
|
+
# Returns the String filename highlighted.
|
15
|
+
def self.for_file string
|
16
|
+
string.foreground(:blue).bright.underline
|
17
|
+
end
|
18
|
+
|
19
|
+
# Public: Highlight a matched file line.
|
20
|
+
#
|
21
|
+
# string - The line.
|
22
|
+
# search - The String search term.
|
23
|
+
#
|
24
|
+
# Returns the String line highlighted.
|
25
|
+
def self.for_line string, search
|
26
|
+
reg = Regexp.new(search, Regexp::IGNORECASE)
|
27
|
+
string.gsub(reg) do |exp|
|
28
|
+
exp.bright
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/ackr/finder.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
module Ackr
|
4
|
+
class Finder
|
5
|
+
|
6
|
+
def initialize search_term
|
7
|
+
@search_term = search_term.downcase
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
Dir.glob('**/*').each do |f|
|
12
|
+
next if File.directory?(f)
|
13
|
+
next if Ackr::binary?(f)
|
14
|
+
@file = f
|
15
|
+
search
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def search
|
22
|
+
results = search_into_file
|
23
|
+
unless results.empty?
|
24
|
+
puts Colorizer::for_file(@file)
|
25
|
+
results.each {|r| puts r}
|
26
|
+
puts ""
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def search_into_file
|
31
|
+
result = []
|
32
|
+
File.readlines(@file).each_with_index do |line, i|
|
33
|
+
if line.downcase.include?(@search_term)
|
34
|
+
result << "#{'%4i' % i}| #{Colorizer::for_line(line, @search_term)}"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
result
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
metadata
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ackr
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Xavier Nayrac
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-04-23 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rainbow
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.1.4
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.1.4
|
30
|
+
description: Ackr is a very light grep/ack/rak replacement for lazy developers.
|
31
|
+
email: xavier.nayrac@gmail.com
|
32
|
+
executables:
|
33
|
+
- ackr
|
34
|
+
extensions: []
|
35
|
+
extra_rdoc_files: []
|
36
|
+
files:
|
37
|
+
- lib/ackr.rb
|
38
|
+
- lib/ackr/finder.rb
|
39
|
+
- lib/ackr/colorizer.rb
|
40
|
+
- bin/ackr
|
41
|
+
- VERSION
|
42
|
+
- README.markdown
|
43
|
+
- Rakefile
|
44
|
+
- TODO
|
45
|
+
homepage: https://github.com/lkdjiin/ackr
|
46
|
+
licenses:
|
47
|
+
- MIT
|
48
|
+
post_install_message:
|
49
|
+
rdoc_options: []
|
50
|
+
require_paths:
|
51
|
+
- lib
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ! '>='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: 1.9.2
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ! '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
requirements: []
|
65
|
+
rubyforge_project:
|
66
|
+
rubygems_version: 1.8.25
|
67
|
+
signing_key:
|
68
|
+
specification_version: 3
|
69
|
+
summary: Ackr is a very light grep/ack/rak replacement for lazy developers.
|
70
|
+
test_files: []
|