linen 0.4.0 → 0.5.0
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/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
|