coolline 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a96fbe30a45b8d46bd60d06fe5c4a84b771238e6
4
- data.tar.gz: 111e50a5a9c24f1c57cda30b58ffac0805834370
3
+ metadata.gz: 1f1ff87139f5360e3f34721db4068b81576a7d45
4
+ data.tar.gz: dafbaa6784716d492c90cd41ccf7067bd3b1a97f
5
5
  SHA512:
6
- metadata.gz: ed77ec90c3657c28577f0b3ee8226fc64d09dd97027e5082272ba9201e8cae0ed7d42436ff34aead9aa529cee5507ee294f8d071bbbaeffa83d1b507ef18aa2b
7
- data.tar.gz: 754a0a95c12e463bd854d1d08ea0a0a08146159c88204b67a3e9b3a43aec44355583ba832a8449fce98bc2517c1cda5d4c7224fa1cca6a69c1d81214d95c4462
6
+ metadata.gz: dac637b858d7925e93f5aa22b6ae302d618b29964938eb483160f3f38f57cdbca9e8b90b3219196ce5e6e652a5edb7ac0984cfdfa0c5558d6fff2b3a37c69e6b
7
+ data.tar.gz: f8143342410c48abdfdbdb49867cf2716c8bc0cbff743766871d437035a217eaa259f22cfd4603be58627ca9a56d578157fd2e92e55a1631a35b73953579ee64
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ Coolline - Copyright (c) 2012-2013 - Mon ouïe
2
+
3
+ This software is provided 'as-is', without any express or
4
+ implied warranty. In no event will the authors be held
5
+ liable for any damages arising from the use of this software.
6
+
7
+ Permission is granted to anyone to use this software for any purpose,
8
+ including commercial applications, and to alter it and redistribute
9
+ it freely, subject to the following restrictions:
10
+
11
+ 1. The origin of this software must not be misrepresented;
12
+ you must not claim that you wrote the original software.
13
+ If you use this software in a product, an acknowledgment
14
+ in the product documentation would be appreciated but
15
+ is not required.
16
+
17
+ 2. Altered source versions must be plainly marked as such,
18
+ and must not be misrepresented as being the original software.
19
+
20
+ 3. This notice may not be removed or altered from any
21
+ source distribution.
@@ -193,6 +193,23 @@ class Coolline
193
193
  # Reads a line from the terminal
194
194
  # @param [String] prompt Characters to print before each line
195
195
  def readline(prompt = ">> ", default_line = "")
196
+ if @input.tty?
197
+ readline_full(prompt, default_line)
198
+ else
199
+ readline_dumb(prompt)
200
+ end
201
+ end
202
+
203
+ def readline_dumb(prompt)
204
+ print prompt
205
+ line = @input.gets
206
+ self.line = line ? line.chomp : ""
207
+ print transform(line), "\n"
208
+
209
+ line.chomp if line
210
+ end
211
+
212
+ def readline_full(prompt = ">> ", default_line = "")
196
213
  @prompt = prompt
197
214
 
198
215
  @history.delete_empty
@@ -221,7 +238,6 @@ class Coolline
221
238
 
222
239
  render
223
240
  end
224
-
225
241
  end
226
242
 
227
243
  @menu.erase
@@ -238,6 +254,8 @@ class Coolline
238
254
 
239
255
  # Displays the current code on the terminal
240
256
  def render
257
+ return unless @input.tty?
258
+
241
259
  width = @input.winsize[1]
242
260
  prompt_size = ansi_length(@prompt)
243
261
  line = transform(@line)
@@ -388,7 +406,7 @@ class Coolline
388
406
  def common_beginning(candidates)
389
407
  candidates.inject do |common, el|
390
408
  i = 0
391
- i += 1 while common[i] == el[i]
409
+ i += 1 while common[i] == el[i] and i != el.size
392
410
 
393
411
  el[0...i]
394
412
  end
@@ -1,3 +1,3 @@
1
1
  class Coolline
2
- Version = "0.4.2"
2
+ Version = "0.4.3"
3
3
  end
@@ -15,3 +15,16 @@ context "a user uses colors for live code highlighting" do
15
15
  asserts(:strip_ansi_codes, "\e[38;5;232mHate\e[0m").equals "Hate"
16
16
  end
17
17
  end
18
+
19
+ context "a user uses non-tty input" do
20
+ setup do
21
+ Coolline.new { |c|
22
+ c.input = StringIO.new("p 42\np 82\n")
23
+ c.output = StringIO.new
24
+ }
25
+ end
26
+
27
+ denies(:readline).raises_kind_of Exception
28
+ asserts(:readline).equals "p 82"
29
+ asserts(:readline).nil
30
+ end
@@ -2,6 +2,7 @@ $LOAD_PATH.unshift File.expand_path(File.join("../lib"), File.dirname(__FILE__))
2
2
 
3
3
  require 'riot'
4
4
  require 'coolline'
5
+ require 'stringio'
5
6
 
6
7
  Riot.reporter = Riot::PrettyDotMatrixReporter
7
8
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coolline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mon ouie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-28 00:00:00.000000000 Z
11
+ date: 2014-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: riot
@@ -33,21 +33,22 @@ extensions: []
33
33
  extra_rdoc_files:
34
34
  - README.md
35
35
  files:
36
- - lib/coolline/editor.rb
37
- - lib/coolline/ansi.rb
38
- - lib/coolline/version.rb
36
+ - lib/coolline.rb
39
37
  - lib/coolline/menu.rb
40
- - lib/coolline/handler.rb
41
- - lib/coolline/history.rb
38
+ - lib/coolline/ansi.rb
42
39
  - lib/coolline/coolline.rb
43
- - lib/coolline.rb
40
+ - lib/coolline/history.rb
41
+ - lib/coolline/handler.rb
42
+ - lib/coolline/editor.rb
43
+ - lib/coolline/version.rb
44
44
  - test/helpers.rb
45
45
  - test/coolline_test.rb
46
46
  - test/history_test.rb
47
- - test/editor_test.rb
48
47
  - test/run_all.rb
48
+ - test/editor_test.rb
49
49
  - repl.rb
50
50
  - .gemtest
51
+ - LICENSE
51
52
  - README.md
52
53
  homepage: http://github.com/Mon-Ouie/coolline
53
54
  licenses: []
@@ -68,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
69
  version: '0'
69
70
  requirements: []
70
71
  rubyforge_project:
71
- rubygems_version: 2.0.0
72
+ rubygems_version: 2.0.14
72
73
  signing_key:
73
74
  specification_version: 4
74
75
  summary: Sounds like readline, smells like readline, but isn't readline