ruco 0.0.26 → 0.0.27
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/VERSION +1 -1
- data/bin/ruco +6 -2
- data/lib/ruco/application.rb +1 -1
- data/lib/ruco/core_ext/string.rb +4 -0
- data/lib/ruco/editor.rb +7 -0
- data/lib/ruco/keyboard.rb +4 -4
- data/lib/ruco/text_area.rb +2 -6
- data/ruco.gemspec +1 -1
- data/spec/ruco/editor_spec.rb +12 -3
- data/spec/ruco/keyboard_spec.rb +11 -3
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.27
|
data/bin/ruco
CHANGED
@@ -19,9 +19,10 @@ Usage:
|
|
19
19
|
|
20
20
|
Options:
|
21
21
|
BANNER
|
22
|
+
opts.on("-c", "--convert-tabs","Convert tabs to spaces") { options[:convert_tabs] = true }
|
22
23
|
opts.on("--debug-cache","Show caching in action") { options[:debug_cache] = true }
|
23
24
|
opts.on("--debug-keys", "Show pressed keys") { options[:debug_keys] = true }
|
24
|
-
opts.on(
|
25
|
+
opts.on("-v", "--version","Show Version"){
|
25
26
|
require 'ruco/version'
|
26
27
|
puts Ruco::VERSION
|
27
28
|
exit
|
@@ -117,7 +118,10 @@ end
|
|
117
118
|
|
118
119
|
require 'ruco'
|
119
120
|
|
120
|
-
app = Ruco::Application.new(ARGV[0],
|
121
|
+
app = Ruco::Application.new(ARGV[0],
|
122
|
+
:convert_tabs => @options[:convert_tabs],
|
123
|
+
:lines => Curses.stdscr.maxy, :columns => Curses.stdscr.maxx
|
124
|
+
)
|
121
125
|
|
122
126
|
init_screen do
|
123
127
|
show_app app
|
data/lib/ruco/application.rb
CHANGED
@@ -183,7 +183,7 @@ module Ruco
|
|
183
183
|
|
184
184
|
def create_components
|
185
185
|
@status_lines = 1
|
186
|
-
@editor ||= Ruco::Editor.new(@file, :lines => editor_lines, :columns => @options[:columns])
|
186
|
+
@editor ||= Ruco::Editor.new(@file, :lines => editor_lines, :columns => @options[:columns], :convert_tabs => @options[:convert_tabs])
|
187
187
|
@status = Ruco::StatusBar.new(@editor, :columns => @options[:columns])
|
188
188
|
@command = Ruco::CommandBar.new(:columns => @options[:columns])
|
189
189
|
command.cursor_line = editor_lines
|
data/lib/ruco/core_ext/string.rb
CHANGED
data/lib/ruco/editor.rb
CHANGED
@@ -8,6 +8,13 @@ module Ruco
|
|
8
8
|
def initialize(file, options)
|
9
9
|
@file = file
|
10
10
|
content = (File.exist?(@file) ? File.read(@file) : '')
|
11
|
+
if content.include?("\t")
|
12
|
+
if options[:convert_tabs]
|
13
|
+
content.tabs_to_spaces!
|
14
|
+
else
|
15
|
+
raise "#{@file} contains tabs.\nRuco atm does not support tabs, but will happily convert them to spaces if started with --convert-tabs or -c"
|
16
|
+
end
|
17
|
+
end
|
11
18
|
@text_area = TextArea.new(content, options)
|
12
19
|
@modified = false
|
13
20
|
end
|
data/lib/ruco/keyboard.rb
CHANGED
@@ -19,7 +19,7 @@ class Keyboard
|
|
19
19
|
loop do
|
20
20
|
key = fetch_user_input
|
21
21
|
if sequence_finished?
|
22
|
-
sequence_to_keys(@sequence).each{|
|
22
|
+
sequence_to_keys(@sequence).each{|k| yield k }
|
23
23
|
@sequence = []
|
24
24
|
end
|
25
25
|
next unless key
|
@@ -71,9 +71,9 @@ class Keyboard
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def self.fetch_user_input
|
74
|
-
key = @input.call
|
75
|
-
return if key.nil? or key >= NOTHING
|
74
|
+
key = @input.call or return
|
76
75
|
key = key.ord if key.is_a?(String) # ruby 1.9 fix
|
76
|
+
return if key >= NOTHING
|
77
77
|
key
|
78
78
|
end
|
79
79
|
|
@@ -129,7 +129,7 @@ class Keyboard
|
|
129
129
|
if needs_paste_fix?(sequence)
|
130
130
|
[bytes_to_string(sequence)]
|
131
131
|
else
|
132
|
-
#
|
132
|
+
# when connected via ssh escape sequences are used
|
133
133
|
if escape_sequence?(sequence)
|
134
134
|
[escape_sequence_to_key(sequence)]
|
135
135
|
else
|
data/lib/ruco/text_area.rb
CHANGED
@@ -3,7 +3,7 @@ module Ruco
|
|
3
3
|
attr_reader :lines, :selection
|
4
4
|
|
5
5
|
def initialize(content, options)
|
6
|
-
@lines =
|
6
|
+
@lines = content.naive_split("\n")
|
7
7
|
@options = options
|
8
8
|
@line = 0
|
9
9
|
@column = 0
|
@@ -91,7 +91,7 @@ module Ruco
|
|
91
91
|
def insert(text)
|
92
92
|
delete_content_in_selection if @selection
|
93
93
|
|
94
|
-
text
|
94
|
+
text.tabs_to_spaces!
|
95
95
|
if text == "\n" and @column >= after_last_word
|
96
96
|
current_whitespace = current_line.match(/^\s*/)[0]
|
97
97
|
next_whitespace = lines[@line+1].to_s.match(/^\s*/)[0]
|
@@ -277,10 +277,6 @@ module Ruco
|
|
277
277
|
end
|
278
278
|
end
|
279
279
|
|
280
|
-
def tabs_to_spaces(text)
|
281
|
-
text.gsub("\t",' ' * Ruco::TAB_SIZE)
|
282
|
-
end
|
283
|
-
|
284
280
|
def delete_content_in_selection
|
285
281
|
with_lines_as_string do |content|
|
286
282
|
start = index_for_position(*@selection.first)
|
data/ruco.gemspec
CHANGED
data/spec/ruco/editor_spec.rb
CHANGED
@@ -11,9 +11,18 @@ describe Ruco::Editor do
|
|
11
11
|
@file = 'spec/temp.txt'
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
describe 'convert tabs' do
|
15
|
+
it "reads tab as spaces when option is set" do
|
16
|
+
write("\t\ta")
|
17
|
+
editor = Ruco::Editor.new(@file, :lines => 3, :columns => 5, :convert_tabs => true)
|
18
|
+
editor.view.should == " a\n\n\n"
|
19
|
+
end
|
20
|
+
|
21
|
+
it "raises when tabs are in content and option is not set" do
|
22
|
+
lambda{
|
23
|
+
editor = Ruco::Editor.new(@file, :lines => 3, :columns => 5)
|
24
|
+
}.should raise_error
|
25
|
+
end
|
17
26
|
end
|
18
27
|
|
19
28
|
describe :move do
|
data/spec/ruco/keyboard_spec.rb
CHANGED
@@ -86,10 +86,18 @@ describe Keyboard do
|
|
86
86
|
output.should == [11121, 324234]
|
87
87
|
end
|
88
88
|
|
89
|
-
it "recognises
|
90
|
-
type [27, 91, 49, 59, 50, 65]
|
91
|
-
output.should == [:"Shift+up"]
|
89
|
+
it "recognises escape sequence for Shift+down" do
|
92
90
|
type [27, 91, 49, 59, 50, 66]
|
93
91
|
output.should == [:"Shift+down"]
|
94
92
|
end
|
93
|
+
|
94
|
+
it "recognises escape sequence for Shift+up" do
|
95
|
+
type [27, 91, 49, 59, 50, 65]
|
96
|
+
output.should == [:"Shift+up"]
|
97
|
+
end
|
98
|
+
|
99
|
+
it "can handle strings from 1.9" do
|
100
|
+
type ['a']
|
101
|
+
output.should == ["a"]
|
102
|
+
end
|
95
103
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 27
|
9
|
+
version: 0.0.27
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Michael Grosser
|
@@ -89,7 +89,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
89
89
|
requirements:
|
90
90
|
- - ">="
|
91
91
|
- !ruby/object:Gem::Version
|
92
|
-
hash:
|
92
|
+
hash: 926649455
|
93
93
|
segments:
|
94
94
|
- 0
|
95
95
|
version: "0"
|