mysh 0.1.1 → 0.1.2

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: 56a76283a8d651321e0120c508b5402ebc91d9ae
4
- data.tar.gz: 52eb191af673c9494000f23f254f24f8b5e906e3
3
+ metadata.gz: a7a1fe687d859a5bcd1b9d9c5752a37d0204373e
4
+ data.tar.gz: b141ac7759e49a617717f77c49fe60faeb92540b
5
5
  SHA512:
6
- metadata.gz: 57b6d2bebfd47526c31af93b646d084041de6e623733376e5937b7c4ce2cc054ba384583a97e0feb79354c9a234947cdc24efb01234c1791f2b88f87780305a1
7
- data.tar.gz: 593a900c74fd535984bd7554f90f45e94f3316d905dfd1fec44383f412fe7dc24082866a7dee757a9096a6a6306c7050a778fba22740093fa50466c4a9754ad9
6
+ metadata.gz: 86c6a1c87904fd42c6cb2267c34d9233934d4180bce918ba427bc8e759f0dc724e196ce1b3d460f050aed7993619c62d8a70c57ff43a0893bf031ce259e025d7
7
+ data.tar.gz: e584dbab723de2722996b57c10e20883939c5c46799d4f8d724e1424378640005f83ab1779d9f9df345255cd2f58c003f63cd7e4984357e85b442e9e1e172c6c
@@ -9,6 +9,7 @@ require 'English'
9
9
  $no_alias_read_line_module = true
10
10
  require 'mini_readline'
11
11
 
12
+ require_relative 'mysh/smart_source'
12
13
  require_relative 'mysh/internal'
13
14
  require_relative 'mysh/expression'
14
15
  require_relative 'mysh/version'
@@ -29,7 +30,7 @@ module Mysh
29
30
  @input = MiniReadline::Readline.new(history: true,
30
31
  eoi_detect: true,
31
32
  auto_complete: true,
32
- auto_source: MiniReadline::AutoFileSource)
33
+ auto_source: SmartSource)
33
34
 
34
35
  loop do
35
36
  input = @input.readline(prompt: 'mysh> ')
@@ -10,39 +10,28 @@ module Mysh
10
10
 
11
11
  #Add the exit command to the library.
12
12
  add(self.new('help', 'Display help information for mysh.') do |args|
13
- puts "mysh (MY SHell) version: #{Mysh::VERSION}"
13
+ puts "mysh (MY ruby SHell) version: #{Mysh::VERSION}"
14
14
  puts
15
15
 
16
16
  if args.empty?
17
17
  width = 0
18
- puts "Internal mysh commands:"
18
+ puts "1) Internal mysh commands:"
19
19
  puts " - executed by mysh directly."
20
- puts " - a leading space skips all internal commands."
20
+ puts " - supports the following set of commands."
21
21
  puts
22
+ puts "Command Description"
23
+ puts "======= ==========="
22
24
 
23
25
  InternalCommand
24
26
  .info
25
- .concat(ExecHost.info)
26
- .sort do |first, second |
27
- width = [width, first[0].length, second[0].length].max
28
- first[0] <=> second[0]
29
- end
30
- .each do |info|
31
- puts "#{info[0].ljust(width)} #{info[1]}"
32
- end
33
-
34
- puts
35
- puts "Math support:"
36
- puts " - the execution environment includes the Math module."
37
- puts " - for more info use the help math command."
38
-
39
- puts
40
- puts "External commands:"
41
- puts " - executed by the system using the standard shell."
42
- puts " - use help #{EXT_TAG} for more info on external commands."
27
+ .sort {|first, second | first[0] <=> second[0] }
28
+ .each {|info| puts "#{info[0].ljust(10)} #{info[1]}" }
43
29
  puts
30
+ puts IO.read(File.dirname(__FILE__) + '/help.txt')
44
31
  elsif args[0] == 'math'
45
32
  puts IO.read(File.dirname(__FILE__) + '/help_math.txt')
33
+ elsif args[0] == 'ruby'
34
+ puts IO.read(File.dirname(__FILE__) + '/help_ruby.txt')
46
35
  else
47
36
  args[0] = "" if args[0] == EXT_TAG
48
37
  system("help " + args.join)
@@ -0,0 +1,14 @@
1
+ 2) Ruby Expression support:
2
+ - any line beginning with an equals "=" sign will be evaluated as a Ruby
3
+ expression. This allows the mysh command line to serve as a programming,
4
+ debugging and super-calculator environment.
5
+ - for more info use the 'help ruby' command.
6
+
7
+ 3) Math support:
8
+ - the execution environment includes the Math module.
9
+ - for more info use the 'help math' command.
10
+
11
+ 4) External commands:"
12
+ - executed by the system using the standard shell.
13
+ - to force the use of the external shell, add a leading space to the command.
14
+
@@ -1,5 +1,9 @@
1
1
  mysh Math support summary
2
2
 
3
+ - The Ruby expression execution environment includes the Math module. Thus
4
+ the following advanced math functions are directly available without having
5
+ to explicitly reference that module.
6
+
3
7
  Method Returns Description
4
8
  ======= ======= ================================================
5
9
  acos(x) Float Computes the arc cosine of x. Returns 0..PI.
@@ -25,8 +29,8 @@ hypot(x,y) Float Returns sqrt(x**2 + y**2), the hypotenuse of a right-angled
25
29
  ldexp(f,e) Float Returns the value of f*(2**e).
26
30
  lgamma(x) Array Returns a two-element array containing the log of the
27
31
  gamma of x and the sign of gamma of x.
28
- log(x) Float Computes the natural log of c.
29
- log(x,B) Float Computes the base B log of c.
32
+ log(x) Float Computes the natural log of x.
33
+ log(x,B) Float Computes the base B log of x.
30
34
  log10(x) Float Returns the base 10 logarithm of x.
31
35
  log2(x) Float Returns the base 2 logarithm of x.
32
36
  sin(x) Float Computes the sine of x (expressed in radians).
@@ -0,0 +1,15 @@
1
+ mysh Ruby expression support summary
2
+
3
+ - All command lines that begin with an equals "=" sign are evaluated as Ruby
4
+ expressions.
5
+ - Expressions ending with a backslash character "\" are continued on the next
6
+ line. The prompt changes to "mysh\" to indicate that this is going on.
7
+ - The results are displayed using the pretty-print facility.
8
+ - Auto-complete always places any file names in quotes so they can be used
9
+ as string parameters.
10
+
11
+ A few noteworthy methods exist that facilitate use of Ruby expressions:
12
+
13
+ reset Reset the execution environment to the default state.
14
+ result Returns the result of the previous expression.
15
+
@@ -11,13 +11,6 @@ module Mysh
11
11
 
12
12
  include Math
13
13
 
14
- #Get help info on Ruby host exec.
15
- def self.info
16
- [["=an_expr", "Display the result of evaluating an expression in ruby."],
17
- ["=result", "Display the result of the previous evaluation."],
18
- ["=stuff \\","This expression is continued on the next line."]]
19
- end
20
-
21
14
  #The result of the previous expression.
22
15
  attr_reader :result
23
16
 
@@ -42,7 +35,12 @@ module Mysh
42
35
  #Do the actual work of executing an expression.
43
36
  def do_execute(str)
44
37
  if /\\\s*$/ =~ str
45
- do_execute($PREMATCH + "\n" + Mysh.input.readline(prompt: 'mysh\\ '))
38
+ parms = {
39
+ prompt: 'mysh\\ ',
40
+ auto_source: MiniReadline::QuotedFileFolderSource
41
+ }
42
+
43
+ do_execute($PREMATCH + "\n" + Mysh.input.readline(parms))
46
44
  else
47
45
  begin
48
46
  pp eval("@result" + str)
@@ -55,4 +53,3 @@ module Mysh
55
53
  end
56
54
  end
57
55
  end
58
-
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+
3
+ #* array_source.rb - An array as the source for auto-complete.
4
+ module Mysh
5
+
6
+ #* array_source.rb - An array as the source for auto-complete.
7
+ class SmartSource
8
+
9
+ #Create a new file/folder auto-data source. NOP
10
+ def initialize(options)
11
+ @auto_source = MiniReadline::AutoFileSource.new(options)
12
+ @quote_source = MiniReadline::QuotedFileFolderSource.new(options)
13
+ end
14
+
15
+ #Construct a new data list for auto-complete
16
+ def rebuild(str)
17
+ @active_source = str[0] == '=' ? @quote_source : @auto_source
18
+ @active_source.rebuild(str)
19
+ end
20
+
21
+ #Get the next string for auto-complete
22
+ def next
23
+ @active_source.next
24
+ end
25
+
26
+ end
27
+
28
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Mysh
4
4
  #The version string of MY SHell.
5
- VERSION = "0.1.1"
5
+ VERSION = "0.1.2"
6
6
 
7
7
  #A brief summary of this gem.
8
8
  SUMMARY = "mysh -- a Ruby inspired command shell"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mysh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Camilleri
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-04 00:00:00.000000000 Z
11
+ date: 2016-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -125,7 +125,9 @@ files:
125
125
  - lib/mysh/commands/cd.rb
126
126
  - lib/mysh/commands/exit.rb
127
127
  - lib/mysh/commands/help.rb
128
+ - lib/mysh/commands/help.txt
128
129
  - lib/mysh/commands/help_math.txt
130
+ - lib/mysh/commands/help_ruby.txt
129
131
  - lib/mysh/commands/history.rb
130
132
  - lib/mysh/expression.rb
131
133
  - lib/mysh/internal.rb
@@ -133,6 +135,7 @@ files:
133
135
  - lib/mysh/internal/instance.rb
134
136
  - lib/mysh/internal/klass.rb
135
137
  - lib/mysh/internal/parse.rb
138
+ - lib/mysh/smart_source.rb
136
139
  - lib/mysh/version.rb
137
140
  - mysh.gemspec
138
141
  - rakefile.rb