class MyMenu

Attributes

debug[W]
line[R]
menuitems[R]
menutitlecolour[W]
mymenugreeting[W]
mymenuname[W]
mymenushow[W]
prompt[W]
promptcolor[W]

Public Class Methods

new() click to toggle source
# File lib/mymenu.rb, line 17
def initialize
  @mymenuname = "MyMenu"
  @prompt = "MyPrompt"
  @promptcolor = "\e[1;32m\ ".strip
  @menuitems = Array.new
  @menuitemnumbercolor = "\e[1;36m"
  @mymenugreeting = "Welcome to MyMenu"
  @mymenutoggle = true
  @debug = 0
  @number = 1
end

Public Instance Methods

additemtolist(name, func) click to toggle source
# File lib/mymenu.rb, line 31
def additemtolist(name, func)
  @menuitems << [@number, "#{name}", "#{func}"]
  @number += 1
end
definemenuitem(func, readlineprompt=false, args=nil, &codeeval) click to toggle source
# File lib/mymenu.rb, line 63
def definemenuitem(func, readlineprompt=false, args=nil, &codeeval)
  func_name = func.to_sym
  if args == nil
    Kernel.send :define_method, func_name do
      evalreadline?(readlineprompt) do
        puts "Without args" if @debug >= 2
        codeeval.call
      end
    end
  else
    Kernel.send :define_method, func_name do |args|
      evalreadline?(readlineprompt) do
        puts "With args" if @debug >= 2
        codeeval.call
      end
    end    
  end
end
menu!() click to toggle source
settitle(title) click to toggle source
# File lib/mymenu.rb, line 36
  def settitle(title)
    @mymenugreeting = title
    @menutitlecolor = "\e[1;38m"    
    @menutitle = %Q{\n
/=========================\e[0m\ 
\e[1;38m|   #{@mymenugreeting}    |\e[0m\ 
\e[1;38m\=========================/\e[0m\ \n
}
  end

Protected Instance Methods

evalreadline(&block) click to toggle source
# File lib/mymenu.rb, line 84
def evalreadline(&block)
  while buf2 = Readline.readline("#{@promptcolor}#{@prompt}>\e[0m\ ", true)
    block.instance_eval do |t|
      instance_variable_set("@line", buf2)
    end
    puts "Eval Readline Pre execution" if @debug >= 2
    block.call
    puts "Post execution of block in Readline prompt" if @debug >= 2
    break
  end
  return block.instance_variable_get("@line")
end
evalreadline?(readlineprompt, &codeeval) click to toggle source
# File lib/mymenu.rb, line 97
def evalreadline?(readlineprompt, &codeeval)
  if readlineprompt == false
    puts "Without Readline" if @debug >= 2
    codeeval.call
  else
    puts "Pre evalreadline with readlineprompt" if @debug >= 2
    evalreadline do
      codeeval.call
    end
  end
end
menubuilder() click to toggle source
showmenu() click to toggle source
# File lib/mymenu.rb, line 109
def showmenu
  unless @mymenutoggle == false
    puts @menutitle
    @menuitems.each {|n|
      puts "#{@menuitemnumbercolor}#{n[0]})\e[0m\ #{n[1]}"        
    }
    puts "\n"
  end
end
togglemenu() click to toggle source
# File lib/mymenu.rb, line 119
def togglemenu
  if @mymenutoggle == true
    @mymenutoggle = false
    puts "Toggle Menu: #{@mymenutoggle}" if @debug >= 1
  else
    @mymenutoggle = true
    puts "Toggle Menu: #{@mymenutoggle}" if @debug >= 1
  end
end