ruco 0.2.7 → 0.2.8

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/Readme.md CHANGED
@@ -154,6 +154,7 @@ Authors
154
154
 
155
155
  ### [Contributors](http://github.com/grosser/ruco/contributors)
156
156
  - [AJ Palkovic](https://github.com/ajpalkovic)
157
+ - [David Sachitano](https://github.com/dsachitano)
157
158
 
158
159
 
159
160
  [Michael Grosser](http://grosser.it)<br/>
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.7
1
+ 0.2.8
@@ -176,7 +176,18 @@ module Ruco
176
176
  end
177
177
 
178
178
  action :find do
179
- ask("Find: ", :cache => true){|result| editor.find(result) }
179
+ ask("Find: ", :cache => true) do |result|
180
+ next if editor.find(result)
181
+
182
+ if editor.content.include?(result)
183
+ ask("No matches found -- Enter=First match ESC=Stop") do
184
+ editor.move(:to, 0,0)
185
+ editor.find(result)
186
+ end
187
+ else
188
+ ask("No matches found in entire file", :auto_enter => true){}
189
+ end
190
+ end
180
191
  end
181
192
 
182
193
  action :find_and_replace do
data/lib/ruco/editor.rb CHANGED
@@ -37,10 +37,14 @@ module Ruco
37
37
 
38
38
  def find(text)
39
39
  move(:relative, 0,0) # reset selection
40
- return unless start = text_area.content.index(text, text_area.index_for_position+1)
40
+ start = text_area.content.index(text, text_area.index_for_position+1)
41
+ return unless start
42
+
43
+ # select the found word
41
44
  finish = start + text.size
42
45
  move(:to_index, finish)
43
46
  selecting{ move(:to_index, start) }
47
+
44
48
  true
45
49
  end
46
50
 
@@ -66,6 +70,10 @@ module Ruco
66
70
  session_store.set(@file, text_area.state.slice(:position, :screen_position))
67
71
  end
68
72
 
73
+ def content
74
+ text_area.content.freeze # no modifications allowed
75
+ end
76
+
69
77
  private
70
78
 
71
79
  def restore_session
data/ruco.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ruco}
8
- s.version = "0.2.7"
8
+ s.version = "0.2.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Michael Grosser"]
12
- s.date = %q{2011-11-02}
12
+ s.date = %q{2011-11-03}
13
13
  s.default_executable = %q{ruco}
14
14
  s.email = %q{michael@grosser.it}
15
15
  s.executables = ["ruco"]
@@ -356,6 +356,58 @@ describe Ruco::Application do
356
356
  end
357
357
  end
358
358
 
359
+ describe 'find' do
360
+ def command_bar
361
+ app.view.split("\n").last
362
+ end
363
+
364
+ it "finds" do
365
+ write('text foo')
366
+ type :'Ctrl+f', 'foo', :enter
367
+ app.cursor.should == [1, 5]
368
+ end
369
+
370
+ it "marks the found word" do
371
+ write('text foo')
372
+ type :'Ctrl+f', 'foo', :enter, 'a'
373
+ editor_part(app.view).should == "text a\n\n"
374
+ end
375
+
376
+ it "shows a menu when nothing was found and there were previous matches" do
377
+ write('text bar bar foo')
378
+ type :'Ctrl+f', 'bar', :enter
379
+ type :'Ctrl+f', 'bar', :enter
380
+ type :'Ctrl+f', 'bar', :enter
381
+ command_bar.should include("No matches found")
382
+ end
383
+
384
+ it "returns to first match if user confirms after no more match is found" do
385
+ write('text foo foo')
386
+ type :'Ctrl+f', 'foo', :enter
387
+ app.cursor.should == [1, 5]
388
+ type :'Ctrl+f', 'foo', :enter
389
+ app.cursor.should == [1, 9]
390
+ type :'Ctrl+f', 'foo', :enter, :enter
391
+ app.cursor.should == [1, 5]
392
+ end
393
+
394
+ it "notifies the user when no matches are found in the entire file" do
395
+ write('text foo')
396
+ type :'Ctrl+f', 'bar', :enter
397
+ command_bar.should include("No matches found in entire file")
398
+ type :enter
399
+ command_bar.should_not include("No matches found in entire file")
400
+ end
401
+
402
+ it "dismisses the nothing found warning on a single key-press" do
403
+ write('text foo')
404
+ type :'Ctrl+f', 'bar', :enter
405
+ command_bar.should include("No matches found in entire file")
406
+ type 'a'
407
+ command_bar.should_not include("No matches found in entire file")
408
+ end
409
+ end
410
+
359
411
  describe :save do
360
412
  it "just saves" do
361
413
  write('')
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruco
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 7
10
- version: 0.2.7
9
+ - 8
10
+ version: 0.2.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Michael Grosser
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-11-02 00:00:00 -07:00
18
+ date: 2011-11-03 00:00:00 -07:00
19
19
  default_executable: ruco
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency