act 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/act.gemspec +2 -1
- data/lib/act/command.rb +7 -5
- data/lib/act/helper.rb +8 -26
- data/lib/act/user_interface.rb +4 -0
- data/lib/act/version.rb +1 -1
- data/spec/helper_spec.rb +10 -3
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b08ce5a70e4451a521ed09fb58f04628cdb0422b
|
4
|
+
data.tar.gz: 84a6c6195590c0bde72933cbba111fce91644822
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47c0d81edde860d3fc822d1218210a412c6af8ae786beaa197891e6ff6721b584e08e68a904d11e99b15ad6d3034d193080baa10ed182810dea12a22c9fcbcc0
|
7
|
+
data.tar.gz: 8f43c7b2ac9fd87964b36f6862ef1d68bda02380193802837be39084b505db37c3c2332c94de42ec5a664ea315fe31c10347b38a15bf82a882fcaba5988473c4
|
data/act.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Act::VERSION
|
9
9
|
spec.authors = ["Fabio Pelosin"]
|
10
10
|
spec.email = ["fabiopelosin@gmail.com"]
|
11
|
-
spec.summary = %q{Act the command line tool to act on files.}
|
11
|
+
spec.summary = %q{Act, the command line tool to act on files.}
|
12
12
|
spec.homepage = "https://github.com/irrationalfab/act"
|
13
13
|
spec.license = "MIT"
|
14
14
|
|
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
|
20
20
|
spec.add_runtime_dependency "claide", "~> 0.5"
|
21
21
|
spec.add_runtime_dependency "colored", "~> 1.2"
|
22
|
+
spec.add_runtime_dependency "rouge", '~> 1.7'
|
22
23
|
spec.add_runtime_dependency "activesupport"
|
23
24
|
|
24
25
|
spec.add_development_dependency "bundler", "~> 1.5"
|
data/lib/act/command.rb
CHANGED
@@ -15,7 +15,7 @@ module Act
|
|
15
15
|
|
16
16
|
def self.arguments
|
17
17
|
[
|
18
|
-
|
18
|
+
CLAide::Argument.new('PATH', false),
|
19
19
|
]
|
20
20
|
end
|
21
21
|
|
@@ -23,7 +23,8 @@ module Act
|
|
23
23
|
[
|
24
24
|
['--open', 'Open the file in $EDITOR instead of printing it'],
|
25
25
|
['--prettify', 'Prettify output'],
|
26
|
-
['--
|
26
|
+
['--always-color', 'Always color the output'],
|
27
|
+
['--line-numbers', 'Show output with line numbers'],
|
27
28
|
['--lexer=NAME', 'Use the given lexer'],
|
28
29
|
].concat(super)
|
29
30
|
end
|
@@ -41,6 +42,7 @@ module Act
|
|
41
42
|
@prettify = argv.flag?('prettify', false)
|
42
43
|
@number_lines = argv.flag?('line-numbers', false)
|
43
44
|
@lexer = argv.option('lexer', false)
|
45
|
+
@always_color = argv.flag?('always-color')
|
44
46
|
@file_string = argv.shift_argument
|
45
47
|
super
|
46
48
|
end
|
@@ -130,12 +132,12 @@ module Act
|
|
130
132
|
def cat_string(string, file = nil)
|
131
133
|
if string
|
132
134
|
path = file.path if file
|
133
|
-
@lexer ||= Helper.lexer(path)
|
135
|
+
@lexer ||= Helper.lexer(path, string)
|
134
136
|
string = Helper.strip_indentation(string)
|
135
137
|
string = Helper.prettify(string, @lexer) if @prettify
|
136
|
-
string = Helper.
|
138
|
+
string = Helper.syntax_highlight(string, @lexer) if ansi_output? || @always_color
|
137
139
|
string = Helper.add_line_numbers(string, file.from_line, file.highlight_line) if @number_lines && file
|
138
|
-
UI.puts "\n#{string}"
|
140
|
+
UI.puts UI.tty? ? "\n#{string}" : string
|
139
141
|
else
|
140
142
|
UI.warn '[!] Nothing to show'
|
141
143
|
end
|
data/lib/act/helper.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'colored'
|
2
2
|
require 'active_support/core_ext/string/strip'
|
3
3
|
require 'open3'
|
4
|
+
require 'rouge'
|
4
5
|
|
5
6
|
module Act
|
6
7
|
module Helper
|
@@ -63,18 +64,11 @@ module Act
|
|
63
64
|
numbered_lines.join
|
64
65
|
end
|
65
66
|
|
66
|
-
def self.lexer(file_name)
|
67
|
-
|
68
|
-
|
69
|
-
'rb'
|
70
|
-
when 'Podfile.lock', 'Gemfile.lock'
|
71
|
-
'yaml'
|
67
|
+
def self.lexer(file_name, string = nil)
|
68
|
+
if string
|
69
|
+
Rouge::Lexer.guess(:filename => file_name, :source => string).tag
|
72
70
|
else
|
73
|
-
|
74
|
-
`pygmentize -N #{file_name}`.chomp
|
75
|
-
else
|
76
|
-
'text'
|
77
|
-
end
|
71
|
+
Rouge::Lexer.guess_by_filename(file_name).tag
|
78
72
|
end
|
79
73
|
end
|
80
74
|
|
@@ -92,21 +86,9 @@ module Act
|
|
92
86
|
|
93
87
|
# @return [String]
|
94
88
|
#
|
95
|
-
def self.
|
96
|
-
|
97
|
-
|
98
|
-
return string if `which pygmentize`.strip.empty?
|
99
|
-
result = nil
|
100
|
-
Open3.popen3("pygmentize -l #{lexer} -O encoding=utf8") do |stdin, stdout, stderr, wait_thr|
|
101
|
-
stdin.write(string)
|
102
|
-
stdin.close_write
|
103
|
-
result = stdout.read
|
104
|
-
unless wait_thr.value.success?
|
105
|
-
warn '[!] Syntax highlighting via the pygmentize tool failed'
|
106
|
-
result = string
|
107
|
-
end
|
108
|
-
end
|
109
|
-
result
|
89
|
+
def self.syntax_highlight(string, lexer)
|
90
|
+
formatter = Rouge::Formatters::Terminal256.new(:theme => 'monokai')
|
91
|
+
Rouge.highlight(string, lexer, formatter)
|
110
92
|
end
|
111
93
|
|
112
94
|
end
|
data/lib/act/user_interface.rb
CHANGED
data/lib/act/version.rb
CHANGED
data/spec/helper_spec.rb
CHANGED
@@ -52,16 +52,23 @@ module Act
|
|
52
52
|
#-------------------------------------------------------------------------#
|
53
53
|
|
54
54
|
describe 'lexer' do
|
55
|
-
it 'infers the lexer according to the extension
|
55
|
+
it 'infers the lexer according to the extension' do
|
56
56
|
file_name = 'test.rb'
|
57
57
|
result = @subject.lexer(file_name)
|
58
|
-
result.should == '
|
58
|
+
result.should == 'ruby'
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'infers the lexer according to the text' do
|
62
|
+
file_name = 'rm'
|
63
|
+
text = "#!/usr/bin/ruby\n\nrequire 'set'\nputs 'hello'\n3.tap { p 3 }"
|
64
|
+
result = @subject.lexer(file_name, text)
|
65
|
+
result.should == 'ruby'
|
59
66
|
end
|
60
67
|
|
61
68
|
it 'infers the lexer according to the file name' do
|
62
69
|
file_name = 'Gemfile'
|
63
70
|
result = @subject.lexer(file_name)
|
64
|
-
result.should == '
|
71
|
+
result.should == 'ruby'
|
65
72
|
end
|
66
73
|
end
|
67
74
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: act
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fabio Pelosin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: claide
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rouge
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.7'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.7'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: activesupport
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -127,10 +141,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
141
|
version: '0'
|
128
142
|
requirements: []
|
129
143
|
rubyforge_project:
|
130
|
-
rubygems_version: 2.
|
144
|
+
rubygems_version: 2.4.1
|
131
145
|
signing_key:
|
132
146
|
specification_version: 4
|
133
|
-
summary: Act the command line tool to act on files.
|
147
|
+
summary: Act, the command line tool to act on files.
|
134
148
|
test_files:
|
135
149
|
- spec/argument_parser_spec.rb
|
136
150
|
- spec/command_spec.rb
|