wcr 0.0.2 → 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 +4 -4
- data/README.md +70 -3
- data/lib/wcr/arguments_parser.rb +7 -2
- data/lib/wcr/command.rb +3 -2
- data/wcr.gemspec +3 -5
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e93bdfebe8a4efee71ea30a5bd18fe51905232dd
|
4
|
+
data.tar.gz: b61c9f61a4201552f5a39ed550c7a9780f3a1c5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59a944dfa02f448d85133737bbeb31c324851bbf54aa8a0da2f2498a8ab06572068d107acc158179bc71d458c8524e915c1eef4d7bb84194731b1ebcbb582296
|
7
|
+
data.tar.gz: 9d86ddf880da421945e00e4db1aedcfa4b54fce4a31b7b713a4662367bcfb54637f5e150be0650702508ad433523eb34700b7ce0f2de32dd331f4489bde9ea54
|
data/README.md
CHANGED
@@ -1,4 +1,71 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
###WordCount-Recursive###
|
2
|
+
|
3
|
+
A wrapper on `wc` shell command. This command permit to execute `wc` recursively with a more flexible argument parser.
|
4
|
+
|
5
|
+
####Installation####
|
6
|
+
|
7
|
+
`gem install wcr`
|
8
|
+
|
9
|
+
####Usage####
|
10
|
+
|
11
|
+
Example of Project Architecture:
|
12
|
+
|
13
|
+
```text
|
14
|
+
wcr/
|
15
|
+
|--bin/
|
16
|
+
|--wcr
|
17
|
+
|--lib/
|
18
|
+
|--wcr/
|
19
|
+
|--arguments_parser.rb
|
20
|
+
|--command.rb
|
21
|
+
|--wrc.rb
|
22
|
+
...
|
23
|
+
|--wcr.gemspec
|
24
|
+
```
|
25
|
+
|
26
|
+
#####execute `wcr` on `lib` folder:#####
|
27
|
+
|
28
|
+
Output:
|
29
|
+
|
30
|
+
```shell
|
31
|
+
$> wcr ./lib
|
32
|
+
38 88 818 ./lib/wcr/arguments_parser.rb
|
33
|
+
13 33 343 ./lib/wcr/command.rb
|
34
|
+
0 2 21 ./lib/wcr.rb
|
35
|
+
51 123 1182 total
|
36
|
+
$>
|
37
|
+
```
|
38
|
+
|
39
|
+
The options parser is particulary flexible:
|
40
|
+
|
41
|
+
```shell
|
42
|
+
$> wcr -l ./lib -w ./bin
|
43
|
+
38 88 ./lib/wcr/arguments_parser.rb
|
44
|
+
13 33 ./lib/wcr/command.rb
|
45
|
+
0 2 ./lib/wcr.rb
|
46
|
+
7 13 ./bin/wcr
|
47
|
+
58 136 total
|
48
|
+
$>
|
49
|
+
```
|
50
|
+
|
51
|
+
####Options####
|
52
|
+
|
53
|
+
Use `-h` options to display hidden files.
|
54
|
+
|
55
|
+
####About This Gem####
|
56
|
+
|
57
|
+
- This program is written using the ruby stdlib without any dependencies.
|
58
|
+
- It's a wrapper of `wc` shell command. So, feel free to check `man wc` for more information.
|
59
|
+
|
60
|
+
####Issues####
|
61
|
+
|
62
|
+
Before reporting a problem check the issue list.
|
63
|
+
|
64
|
+
####About Me####
|
65
|
+
|
66
|
+
More information [here](https://www.linkedin.com/pub/mehdi-farsi/48/ba9/336).
|
67
|
+
|
68
|
+
Feel free to follow me on [Twitter](https://twitter.com/farsi_mehdi).
|
69
|
+
|
70
|
+
thanks ! :)
|
3
71
|
|
4
|
-
A wrapper on `wc` command. Permit to execute `wc` recursively with a more flexible argument parser.
|
data/lib/wcr/arguments_parser.rb
CHANGED
@@ -3,15 +3,19 @@ require 'optparse'
|
|
3
3
|
module WordCountRecursive
|
4
4
|
class ArgumentsParser
|
5
5
|
def parse
|
6
|
-
options = {command_opts: ""}
|
6
|
+
options = {command_opts: "", hidden_files: "| grep -v '/\\.'"}
|
7
7
|
|
8
8
|
o = ::OptionParser.new do |opts|
|
9
|
-
opts.banner = "usage: wc [-
|
9
|
+
opts.banner = "usage: wc [-clhmw] [file ...]"
|
10
10
|
|
11
11
|
opts.on("-c") do |c|
|
12
12
|
options[:command_opts] += " -c"
|
13
13
|
end
|
14
14
|
|
15
|
+
opts.on("-h") do |h|
|
16
|
+
options[:hidden_files] = ""
|
17
|
+
end
|
18
|
+
|
15
19
|
opts.on("-l") do |l|
|
16
20
|
options[:command_opts] += " -l"
|
17
21
|
end
|
@@ -31,6 +35,7 @@ module WordCountRecursive
|
|
31
35
|
$stderr.puts o.banner
|
32
36
|
exit
|
33
37
|
end
|
38
|
+
# TODO: ugly code to refactor :(
|
34
39
|
[(ARGV.length > 0 ? ARGV.join(' ') : nil), options]
|
35
40
|
end
|
36
41
|
end
|
data/lib/wcr/command.rb
CHANGED
@@ -4,11 +4,12 @@ module WordCountRecursive
|
|
4
4
|
class Command
|
5
5
|
def initialize
|
6
6
|
@paths, @options = ::WordCountRecursive::ArgumentsParser.new.parse
|
7
|
-
@command = `wc #{@options[:command_opts]} #{"\`find #{@paths || '.'} -type f\`"}`
|
7
|
+
@command = `wc #{@options[:command_opts]} #{"\`find #{@paths || '.'} -type f #{@options[:hidden_files]}\`"}`
|
8
|
+
@command = @command.split('\n').grep(/^[^\.]/)
|
8
9
|
end
|
9
10
|
|
10
11
|
def wcr
|
11
|
-
@command.
|
12
|
+
@command.each {|line| puts line.chomp }
|
12
13
|
end
|
13
14
|
end
|
14
15
|
end
|
data/wcr.gemspec
CHANGED
@@ -1,18 +1,16 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
|
4
1
|
Gem::Specification.new do |s|
|
5
2
|
s.name = 'wcr'
|
6
|
-
s.version = '0.0
|
3
|
+
s.version = '0.1.0'
|
7
4
|
s.date = '2014-11-18'
|
8
5
|
s.summary = "wc-recursive"
|
9
6
|
s.description = "A wrapper on wc command. Permit to execute wc recursively with a more flexible argument parser."
|
7
|
+
s.homepage = 'https://github.com/mehdi-farsi/wcr'
|
10
8
|
s.authors = ["Mehdi Farsi"]
|
11
9
|
s.email = 'mehdifarsi.pro@gmail.com'
|
12
10
|
s.files = `git ls-files`.split("\n")
|
13
11
|
s.require_paths = ["lib"]
|
14
|
-
s.homepage = 'http://rubygems.org/gems/wcr'
|
15
12
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
16
13
|
s.required_ruby_version = '>= 1.9.3'
|
17
14
|
s.license = 'MIT'
|
15
|
+
s.post_install_message = "Thanks for installing! You can follow me on Twitter: @farsi_mehdi"
|
18
16
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wcr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mehdi Farsi
|
@@ -26,11 +26,11 @@ files:
|
|
26
26
|
- lib/wcr/arguments_parser.rb
|
27
27
|
- lib/wcr/command.rb
|
28
28
|
- wcr.gemspec
|
29
|
-
homepage:
|
29
|
+
homepage: https://github.com/mehdi-farsi/wcr
|
30
30
|
licenses:
|
31
31
|
- MIT
|
32
32
|
metadata: {}
|
33
|
-
post_install_message:
|
33
|
+
post_install_message: 'Thanks for installing! You can follow me on Twitter: @farsi_mehdi'
|
34
34
|
rdoc_options: []
|
35
35
|
require_paths:
|
36
36
|
- lib
|