cinatra 0.4.0 → 0.4.1

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.
@@ -0,0 +1,60 @@
1
+ Cinatra
2
+ =======
3
+
4
+ Cinatra is a library for command based console application.
5
+ It is like Sinatra.
6
+
7
+ Feature
8
+ -----
9
+
10
+ * Easy to define commands
11
+ * Easy to run
12
+ * Completion for commands
13
+ * Similar to Sinatra :)
14
+
15
+ Usage
16
+ -----
17
+
18
+ require 'cinatra'
19
+
20
+ command 'todos' do |arg|
21
+ show_todos
22
+ end
23
+
24
+ sub command:
25
+
26
+ require 'cinatra'
27
+
28
+ command 'todo add' do |arg|
29
+ TODOS << arg
30
+ end
31
+
32
+ Run
33
+ -----
34
+
35
+ % ruby app.rb
36
+
37
+ Default Commands
38
+ -----
39
+
40
+ help:
41
+
42
+ > help
43
+ help Show help
44
+ exit Exit
45
+ ...
46
+
47
+ exit:
48
+
49
+ > exit
50
+ %
51
+
52
+ Installation
53
+ -----
54
+
55
+ gem install cinatra
56
+
57
+ Copyright
58
+ -----
59
+
60
+ Copyright (c) 2009 jugyo. See LICENSE for details.
data/Rakefile CHANGED
@@ -5,8 +5,8 @@ begin
5
5
  require 'jeweler'
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "cinatra"
8
- gem.summary = %Q{A command base app library.}
9
- gem.description = %Q{Cinatra is a Sinatra like command base app library.}
8
+ gem.summary = %Q{Cinatra is a library for command based console application.}
9
+ gem.description = %Q{Cinatra is a library for command based console application. It is like Sinatra. :)}
10
10
  gem.email = "jugyo.org@gmail.com"
11
11
  gem.homepage = "http://github.com/jugyo/cinatra"
12
12
  gem.authors = ["jugyo"]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.4.1
@@ -36,16 +36,20 @@ class Cinatra
36
36
  return if line.empty?
37
37
  command_name, command_arg = resolve_command_name_and_arg(line)
38
38
  unless command_name
39
- puts "Error: Command not found!"
39
+ puts "Error: Command not found: #{line}"
40
40
  else
41
41
  begin
42
42
  get_command(command_name).call(command_arg)
43
43
  rescue Exception => e
44
- puts e.message
44
+ puts "Error: #{e.message}\n #{e.backtrace.join("\n ")}"
45
45
  end
46
46
  end
47
47
  end
48
48
 
49
+ def completion(text)
50
+ commands.keys.map {|i| i.to_s }.grep(/^#{Regexp.quote(text)}/)
51
+ end
52
+
49
53
  def start
50
54
  stty_save = `stty -g`.chomp
51
55
  trap("INT") do
@@ -57,9 +61,7 @@ class Cinatra
57
61
  end
58
62
 
59
63
  Readline.basic_word_break_characters= "\t\n\"\\'`><=;|&{("
60
- Readline.completion_proc = lambda do |text|
61
- Cinatra.commands.keys.map {|i| i.to_s }.grep(/#{Regexp.quote(text)}/)
62
- end
64
+ Readline.completion_proc = lambda {|text| completion(text) }
63
65
 
64
66
  while !exiting && buf = Readline.readline('> ', true)
65
67
  call(buf)
@@ -68,6 +68,14 @@ class TestCinatra < Test::Unit::TestCase
68
68
  Cinatra.add_command('test foo', &@block_foo)
69
69
  end
70
70
 
71
+ should "do completion" do
72
+ assert_equal ['test', 'test foo'], @instance.completion('')
73
+ assert_equal ['test', 'test foo'], @instance.completion('test')
74
+ assert_equal ['test foo'], @instance.completion('test ')
75
+ assert_equal [], @instance.completion('test b')
76
+ assert_equal [], @instance.completion('foo')
77
+ end
78
+
71
79
  should "call command 'test'" do
72
80
  mock(@block).call('bar')
73
81
  Cinatra.call('test bar')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cinatra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - jugyo
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-01 00:00:00 +09:00
12
+ date: 2010-01-02 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -32,7 +32,7 @@ dependencies:
32
32
  - !ruby/object:Gem::Version
33
33
  version: "0"
34
34
  version:
35
- description: Cinatra is a Sinatra like command base app library.
35
+ description: Cinatra is a library for command based console application. It is like Sinatra. :)
36
36
  email: jugyo.org@gmail.com
37
37
  executables: []
38
38
 
@@ -40,11 +40,11 @@ extensions: []
40
40
 
41
41
  extra_rdoc_files:
42
42
  - LICENSE
43
- - README.rdoc
43
+ - README.markdown
44
44
  files:
45
45
  - .gitignore
46
46
  - LICENSE
47
- - README.rdoc
47
+ - README.markdown
48
48
  - Rakefile
49
49
  - VERSION
50
50
  - examples/sleep.rb
@@ -80,7 +80,7 @@ rubyforge_project:
80
80
  rubygems_version: 1.3.5
81
81
  signing_key:
82
82
  specification_version: 3
83
- summary: A command base app library.
83
+ summary: Cinatra is a library for command based console application.
84
84
  test_files:
85
85
  - test/helper.rb
86
86
  - test/test_cinatra.rb
@@ -1,27 +0,0 @@
1
- = Cinatra
2
-
3
- Cinatra is a Sinatra like command base app library.
4
-
5
- == Usage
6
-
7
- require 'cinatra'
8
-
9
- command 'sleep' do |arg|
10
- sleep arg.to_f
11
- end
12
-
13
- command 'exit' do
14
- Cinatra.exit
15
- end
16
-
17
- == Run
18
-
19
- ruby app.rb
20
-
21
- == Installation
22
-
23
- gem install cinatra
24
-
25
- == Copyright
26
-
27
- Copyright (c) 2009 jugyo. See LICENSE for details.