linen 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/linen.rb +11 -6
- data/lib/linen/argument.rb +1 -1
- data/lib/linen/exceptions.rb +2 -0
- data/lib/linen/handler.rb +17 -0
- data/lib/linen/{cli.rb → handlers/cli.rb} +12 -3
- data/lib/linen/workspace.rb +12 -0
- metadata +4 -2
data/lib/linen.rb
CHANGED
@@ -18,8 +18,8 @@ require 'string_extensions'
|
|
18
18
|
|
19
19
|
|
20
20
|
module Linen
|
21
|
-
VERSION = "0.
|
22
|
-
SVNRev = %q$Rev:
|
21
|
+
VERSION = "0.5.0"
|
22
|
+
SVNRev = %q$Rev: 119 $
|
23
23
|
|
24
24
|
|
25
25
|
def self::plugins
|
@@ -27,9 +27,10 @@ module Linen
|
|
27
27
|
end
|
28
28
|
|
29
29
|
|
30
|
-
def self::start
|
31
|
-
Linen::
|
32
|
-
|
30
|
+
def self::start( handler = Linen::CLI )
|
31
|
+
Linen::Workspace.register_handler handler
|
32
|
+
handler.start
|
33
|
+
end
|
33
34
|
end
|
34
35
|
|
35
36
|
|
@@ -40,7 +41,11 @@ require 'linen/argument'
|
|
40
41
|
require 'linen/command'
|
41
42
|
|
42
43
|
|
44
|
+
### handlers
|
45
|
+
require 'linen/handler'
|
46
|
+
require 'linen/handlers/cli'
|
47
|
+
|
48
|
+
|
43
49
|
### Other Infrastructure
|
44
|
-
require 'linen/cli'
|
45
50
|
require 'linen/exceptions'
|
46
51
|
require 'linen/workspace'
|
data/lib/linen/argument.rb
CHANGED
data/lib/linen/exceptions.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
##############################################################
|
4
|
+
# Copyright 2007, LAIKA, Inc. #
|
5
|
+
# #
|
6
|
+
# Authors: #
|
7
|
+
# * Ben Bleything <bbleything@laika.com> #
|
8
|
+
##############################################################
|
9
|
+
|
10
|
+
class Linen::Handler
|
11
|
+
# placeholder. This will eventually become the abstract
|
12
|
+
# class from which all handlers inherit.
|
13
|
+
|
14
|
+
def self::say( input )
|
15
|
+
raise NotImplementedError, "You must override say() in the handler"
|
16
|
+
end
|
17
|
+
end
|
@@ -7,7 +7,7 @@
|
|
7
7
|
# * Ben Bleything <bbleything@laika.com> #
|
8
8
|
##############################################################
|
9
9
|
|
10
|
-
class Linen::CLI
|
10
|
+
class Linen::CLI < Linen::Handler
|
11
11
|
class << self
|
12
12
|
attr_accessor :prompt
|
13
13
|
end
|
@@ -63,7 +63,7 @@ class Linen::CLI
|
|
63
63
|
end
|
64
64
|
|
65
65
|
|
66
|
-
def self::
|
66
|
+
def self::start
|
67
67
|
loop do
|
68
68
|
begin
|
69
69
|
input = Readline.readline( @prompt )
|
@@ -81,6 +81,11 @@ class Linen::CLI
|
|
81
81
|
#######
|
82
82
|
private
|
83
83
|
#######
|
84
|
+
|
85
|
+
# def self::say( input )
|
86
|
+
# puts input
|
87
|
+
# end
|
88
|
+
|
84
89
|
|
85
90
|
def self::canonicalize( input )
|
86
91
|
begin
|
@@ -114,7 +119,11 @@ class Linen::CLI
|
|
114
119
|
|
115
120
|
puts results.map { |arg, value|
|
116
121
|
next unless value
|
117
|
-
|
122
|
+
|
123
|
+
output = value
|
124
|
+
output = value.join( ', ' ) if value.is_a? Array
|
125
|
+
|
126
|
+
"#{arg}: #{output}"
|
118
127
|
}.join( "\n" )
|
119
128
|
|
120
129
|
while input !~ /^(y|n)/i
|
data/lib/linen/workspace.rb
CHANGED
@@ -8,6 +8,14 @@
|
|
8
8
|
##############################################################
|
9
9
|
|
10
10
|
class Linen::Workspace
|
11
|
+
def self::register_handler( handler_class )
|
12
|
+
raise Linen::WorkspaceError,
|
13
|
+
"Can only register subclasses of Linen::Handler" unless
|
14
|
+
handler_class < Linen::Handler
|
15
|
+
|
16
|
+
@@handler = handler_class
|
17
|
+
end
|
18
|
+
|
11
19
|
def set_value( name, value )
|
12
20
|
# add getter
|
13
21
|
(class << self ; self ; end).instance_eval {
|
@@ -26,4 +34,8 @@ class Linen::Workspace
|
|
26
34
|
self.set_value k, v
|
27
35
|
end
|
28
36
|
end
|
37
|
+
|
38
|
+
def method_missing( *args )
|
39
|
+
@@handler.send( *args )
|
40
|
+
end
|
29
41
|
end
|
metadata
CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: linen
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
6
|
+
version: 0.5.0
|
7
7
|
date: 2007-09-10 00:00:00 -07:00
|
8
8
|
summary: Linen - A pluggable command-line interface library
|
9
9
|
require_paths:
|
@@ -35,9 +35,11 @@ files:
|
|
35
35
|
- lib/indifferent_hash.rb
|
36
36
|
- lib/linen
|
37
37
|
- lib/linen/argument.rb
|
38
|
-
- lib/linen/cli.rb
|
39
38
|
- lib/linen/command.rb
|
40
39
|
- lib/linen/exceptions.rb
|
40
|
+
- lib/linen/handler.rb
|
41
|
+
- lib/linen/handlers
|
42
|
+
- lib/linen/handlers/cli.rb
|
41
43
|
- lib/linen/plugin.rb
|
42
44
|
- lib/linen/plugin_registry.rb
|
43
45
|
- lib/linen/workspace.rb
|