cowl 0.2 → 0.3

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.
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: