cowl 0.2 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -0
  3. data/bin/cowl +59 -17
  4. data/lib/cowl.rb +25 -0
  5. data/lib/version.rb +1 -1
  6. metadata +4 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 436d01bac929781a14589af2137d683976216efd
4
- data.tar.gz: 21b34be19ede64bfea48b8c1318d3ce644de4212
3
+ metadata.gz: ec29b6542eb34b987d246605d65bbb055569cf15
4
+ data.tar.gz: 526d928d71c5f86fbecd4f771933f42ea73a148d
5
5
  SHA512:
6
- metadata.gz: 543230d30dff94fe4b73c722786835d2d426f225010f651eeec5afb4a49e452f6670587b2a041342db5a532a124917fccdd619262359cfa8ba749fe912992bac
7
- data.tar.gz: 44ab04bc4bf5782135459ea0ba832de48081d03724f9f2cc0260991c840737aa2a709679e499c465db835e203070f377f478ddcbb6aafb3a7c83e410f9aa6c85
6
+ metadata.gz: 1ffda0a7455741198c8889ca278c7399711ae1412181b2c0f1e0f67a13b5eebd859d8c9bc79c7df3e617e457f7e72050eee51825c5015490cc4a7b3d125bc2d2
7
+ data.tar.gz: 198cc9de7b84a6e70940f562578170fd01b458a4faa8a7d86da045a706d8c40c9bb56139d27b9af55e31d9e95fd9a8f6abb809966181d2516086b039ca87ec9c
data/README.md CHANGED
@@ -25,6 +25,9 @@ cowl is a shell wrapper around the traditional GNU [grep](http://www.gnu.org/sof
25
25
  $ cowl examples/
26
26
  examples/hello.bf:3:++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
27
27
 
28
+ $ cat examples/hello.bf | cowl
29
+ stdin:3:++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
30
+
28
31
  $ wc -L examples/hello.bf
29
32
  106 examples/hello.bf
30
33
 
@@ -33,6 +36,13 @@ $
33
36
 
34
37
  $ cowl -i .bf examples/
35
38
  $
39
+
40
+ $ cowl -h
41
+ Usage: cowl [options] [<files>|-]
42
+ -i, --ignore pattern Ignore file names matching Ruby regex pattern
43
+ -w, --max-width= Maximum column width, either an integer or "unlimited". Default: 80
44
+ -h, --help Print usage info
45
+ -v, --version Print version info
36
46
  ```
37
47
 
38
48
  # REQUIREMENTS
data/bin/cowl CHANGED
@@ -12,12 +12,12 @@ CONFIGURATION_FILENAME = '.cowlrc.yml'
12
12
  def main
13
13
  ignores = DEFAULT_IGNORES
14
14
 
15
- filenames = ['.']
15
+ filenames = ['-']
16
16
 
17
17
  configuration_flags = {}
18
18
 
19
19
  option = OptionParser.new do |option|
20
- option.banner = "Usage: cowl [options] [<files>]"
20
+ option.banner = "Usage: cowl [options] [<files>|-]"
21
21
 
22
22
  option.on('-i', '--ignore pattern', 'Ignore file names matching Ruby regex pattern') do |pattern|
23
23
  ignores << pattern
@@ -42,20 +42,12 @@ def main
42
42
 
43
43
  filenames = ARGV unless ARGV.empty?
44
44
 
45
- recursive_filenames = []
45
+ if filenames.empty? || filenames == ['-'] then
46
+ configuration_dotfile = DEFAULT_CONFIGURATION
46
47
 
47
- filenames.each do |f|
48
- if File.directory? f
49
- recursive_filenames = recursive_filenames.concat(recursive_list(f, ignores))
50
- else
51
- recursive_filenames << f
52
- end
53
- end
48
+ pwd = Dir.pwd
54
49
 
55
- configuration_dotfile = DEFAULT_CONFIGURATION
56
-
57
- recursive_filenames.each do |f|
58
- dir = File.expand_path("..", f)
50
+ dir = pwd
59
51
 
60
52
  parent_of_home = File.expand_path("..", ENV["HOME"])
61
53
 
@@ -69,8 +61,8 @@ def main
69
61
  dir = File.expand_path("..", dir)
70
62
  end
71
63
 
72
- if ignores.none? { |ignore| f =~ %r(#{ignore}) } then
73
- dir = File.expand_path("..", f)
64
+ if ignores.none? { |ignore| pwd =~ %r(#{ignore}) } then
65
+ dir = Dir.pwd
74
66
 
75
67
  parent_of_home = File.expand_path("..", ENV["HOME"])
76
68
 
@@ -88,7 +80,57 @@ def main
88
80
  # Command line flags override dotfile settings
89
81
  configuration = configuration_dotfile.merge(configuration_flags)
90
82
 
91
- check(f, configuration)
83
+ check_stdin(configuration)
84
+ end
85
+ else
86
+ recursive_filenames = []
87
+
88
+ filenames.each do |f|
89
+ if File.directory? f
90
+ recursive_filenames = recursive_filenames.concat(recursive_list(f, ignores))
91
+ else
92
+ recursive_filenames << f
93
+ end
94
+ end
95
+
96
+ configuration_dotfile = DEFAULT_CONFIGURATION
97
+
98
+ recursive_filenames.each do |f|
99
+ dir = File.expand_path("..", f)
100
+
101
+ parent_of_home = File.expand_path("..", ENV["HOME"])
102
+
103
+ while dir != parent_of_home
104
+ ignore_file = dir + File::SEPARATOR + IGNORE_FILENAME
105
+
106
+ if File.exist?(ignore_file) then
107
+ ignores.concat(open(ignore_file).read.split("\n"))
108
+ end
109
+
110
+ dir = File.expand_path("..", dir)
111
+ end
112
+
113
+ if ignores.none? { |ignore| f =~ %r(#{ignore}) } then
114
+ dir = File.expand_path("..", f)
115
+
116
+ parent_of_home = File.expand_path("..", ENV["HOME"])
117
+
118
+ while dir != parent_of_home
119
+ config_file = dir + File::SEPARATOR + CONFIGURATION_FILENAME
120
+
121
+ if File.exist?(config_file) then
122
+ configuration_dotfile = YAML.load_file(config_file)
123
+ break
124
+ else
125
+ dir = File.expand_path("..", dir)
126
+ end
127
+ end
128
+
129
+ # Command line flags override dotfile settings
130
+ configuration = configuration_dotfile.merge(configuration_flags)
131
+
132
+ check(f, configuration)
133
+ end
92
134
  end
93
135
  end
94
136
  end
@@ -1,5 +1,8 @@
1
1
  require 'rubygems'
2
2
  require 'ptools'
3
+ require 'tempfile'
4
+
5
+ $stdout.sync = true
3
6
 
4
7
  require 'version'
5
8
 
@@ -69,6 +72,28 @@ def self.recursive_list(directory, ignores = DEFAULT_IGNORES)
69
72
  end
70
73
  end
71
74
 
75
+ def self.check_stdin(configuration = DEFAULT_CONFIGURATION)
76
+ max_width = configuration["max_width"]
77
+
78
+ contents = $stdin.read
79
+
80
+ t = Tempfile.new('aspelllint')
81
+ t.write(contents)
82
+ t.close
83
+
84
+ filename = t.path
85
+
86
+ if max_width != UNLIMITED
87
+ output = `grep -n \'^.\\{#{max_width.to_i + 1},\\}$\' \"#{filename}\"`
88
+
89
+ lines = output.split("\n")
90
+
91
+ widenings = lines.map { |line| Widening.parse('stdin', line) }
92
+
93
+ widenings.each { |m| puts m }
94
+ end
95
+ end
96
+
72
97
  def self.check(filename, configuration = DEFAULT_CONFIGURATION)
73
98
  max_width = configuration["max_width"]
74
99
 
@@ -2,5 +2,5 @@
2
2
  # Cowl
3
3
  #
4
4
  module Cowl
5
- VERSION = '0.2'
5
+ VERSION = '0.3'
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cowl
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: '0.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Pennebaker
@@ -227,12 +227,12 @@ executables:
227
227
  extensions: []
228
228
  extra_rdoc_files: []
229
229
  files:
230
- - lib/cowl.rb
231
- - lib/version.rb
232
230
  - CONFIGURE.md
233
231
  - LICENSE.md
234
232
  - README.md
235
233
  - bin/cowl
234
+ - lib/cowl.rb
235
+ - lib/version.rb
236
236
  homepage: https://github.com/mcandre/cowl
237
237
  licenses:
238
238
  - FreeBSD
@@ -253,9 +253,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
253
253
  version: '0'
254
254
  requirements: []
255
255
  rubyforge_project:
256
- rubygems_version: 2.1.10
256
+ rubygems_version: 2.2.2
257
257
  signing_key:
258
258
  specification_version: 4
259
259
  summary: column width linter
260
260
  test_files: []
261
- has_rdoc: