cosine-brush 0.0.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.
- data/bin/brush +5 -0
- data/lib/brush.rb +42 -0
- metadata +57 -0
data/bin/brush
ADDED
data/lib/brush.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
|
2
|
+
module Brush
|
3
|
+
class Shell
|
4
|
+
DEFAULT_EXEC_MATCH = %r"^(\S.*)"
|
5
|
+
DEFAULT_RUBY_MATCH = %r"^\s+(.*)"
|
6
|
+
DEFAULT_PS1 = "% "
|
7
|
+
DEFAULT_PS2 = "%-"
|
8
|
+
DEFAULT_RPS1 = "\#=> "
|
9
|
+
DEFAULT_RPS2 = "\# > "
|
10
|
+
|
11
|
+
def initialize (inp = $stdin, out = $stdout, err = $stderr, binding = nil)
|
12
|
+
@in, @out, @err = inp, out, err
|
13
|
+
@exec_match = DEFAULT_EXEC_MATCH
|
14
|
+
@ruby_match = DEFAULT_RUBY_MATCH
|
15
|
+
@ps1, @ps2 = DEFAULT_PS1, DEFAULT_PS2
|
16
|
+
@rps1, @rps2 = DEFAULT_RPS1, DEFAULT_RPS2
|
17
|
+
@binding ||= binding
|
18
|
+
@out.sync = true
|
19
|
+
@err.sync = true
|
20
|
+
end
|
21
|
+
|
22
|
+
def start
|
23
|
+
while not @in.eof?
|
24
|
+
@out.print @ps1
|
25
|
+
line = @in.gets.chomp
|
26
|
+
if line =~ @ruby_match
|
27
|
+
repl line[@ruby_match, 1]
|
28
|
+
elsif line =~ @exec_match
|
29
|
+
system line[@exec_match, 1]
|
30
|
+
else
|
31
|
+
repl line
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def repl (code)
|
37
|
+
result = eval(code, @binding)
|
38
|
+
@out.puts "#{@rps1}#{result.inspect}"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
metadata
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cosine-brush
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Michael H Buselli
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-05-16 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: Brush is intended to be an interactive shell with the power of Ruby. As it is in its infancy, it is very basic and much of the functionality is implemented by scaffolding that will later be replaced. For instance, presently commands are passed off to another shell for execution, but eventually all globing, pipe setup, forking, and execing will be handled directly by Brush.
|
17
|
+
email:
|
18
|
+
- cosine@cosine.org
|
19
|
+
- michael@buselli.com
|
20
|
+
executables: []
|
21
|
+
|
22
|
+
extensions: []
|
23
|
+
|
24
|
+
extra_rdoc_files: []
|
25
|
+
|
26
|
+
files:
|
27
|
+
- bin/brush
|
28
|
+
- lib/brush.rb
|
29
|
+
has_rdoc: true
|
30
|
+
homepage: http://cosine.org/ruby/brush/
|
31
|
+
licenses:
|
32
|
+
post_install_message:
|
33
|
+
rdoc_options: []
|
34
|
+
|
35
|
+
require_paths:
|
36
|
+
- lib
|
37
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: "0"
|
42
|
+
version:
|
43
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: "0"
|
48
|
+
version:
|
49
|
+
requirements: []
|
50
|
+
|
51
|
+
rubyforge_project: brush
|
52
|
+
rubygems_version: 1.3.5
|
53
|
+
signing_key:
|
54
|
+
specification_version: 2
|
55
|
+
summary: "Brush \xE2\x80\x94 the Bourne RUby SHell"
|
56
|
+
test_files: []
|
57
|
+
|