Class: Clop_Option

Inherits:
Object
  • Object
show all
Defined in:
lib/clop.rb

Overview

require “acs.rb” if not defined? acsrequire

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(def_str) ⇒ Clop_Option

Returns a new instance of Clop_Option.



9
10
11
# File 'lib/clop.rb', line 9

def initialize(def_str)
  parse_option_definition(def_str)
end

Instance Attribute Details

#defaultvalueObject (readonly)

Returns the value of attribute defaultvalue.



5
6
7
# File 'lib/clop.rb', line 5

def defaultvalue
  @defaultvalue
end

#descriptionObject (readonly)

Returns the value of attribute description.



5
6
7
# File 'lib/clop.rb', line 5

def description
  @description
end

#longdescriptionObject (readonly)

Returns the value of attribute longdescription.



5
6
7
# File 'lib/clop.rb', line 5

def longdescription
  @longdescription
end

#longnameObject (readonly)

Returns the value of attribute longname.



5
6
7
# File 'lib/clop.rb', line 5

def longname
  @longname
end

#printnameObject (readonly)

Returns the value of attribute printname.



5
6
7
# File 'lib/clop.rb', line 5

def printname
  @printname
end

#shortnameObject (readonly)

Returns the value of attribute shortname.



5
6
7
# File 'lib/clop.rb', line 5

def shortname
  @shortname
end

#typeObject (readonly)

Returns the value of attribute type.



5
6
7
# File 'lib/clop.rb', line 5

def type
  @type
end

#valuestringObject

Returns the value of attribute valuestring.



7
8
9
# File 'lib/clop.rb', line 7

def valuestring
  @valuestring
end

#variablenameObject (readonly)

Returns the value of attribute variablename.



5
6
7
# File 'lib/clop.rb', line 5

def variablename
  @variablename
end

Instance Method Details

#add_tabs(s, reference_size, n) ⇒ Object



72
73
74
75
# File 'lib/clop.rb', line 72

def add_tabs(s, reference_size, n)
  (1..n).each{|i| s += "\t" if reference_size < 8*i}
  return s
end

#eval_valueObject



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/clop.rb', line 55

def eval_value
  case @type
    when "bool"
      eval(@valuestring)
    when "string"
      @valuestring
    when "int"
      @valuestring.to_i
    when "float"
      @valuestring.to_f
    #when /^float\s*vector$/
    #  @valuestring.gsub(/[\[,\]]/," ").split.map{|x| x.to_f}.to_v
    else
      raise "\n  type \"#{@type}\" is not recognized\n"
  end
end

#parse_option_definition(def_str) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/clop.rb', line 13

def parse_option_definition(def_str)
  while s = def_str.shift
    break if parse_single_lines_done?(s)
  end
  while s = def_str.shift
    break if s =~ /^\s*$/ and  def_str[0] =~ /^\s*$/
    @longdescription += s + "\n"
  end
end

#parse_single_lines_done?(s) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/clop.rb', line 23

def parse_single_lines_done?(s)
  if s !~ /\s*(\w.*?)\s*\:/
    raise "\n  option definition line has wrong format:\n==> #{s} <==\n"
  end
  name = $1
  content = $'
  case name
    when /Short\s+(N|n)ame/
      @shortname = content.split[0]
    when /Long\s+(N|n)ame/
      @longname = content.split[0]
    when /Value\s+(T|t)ype/
      @type = content.sub(/^\s+/,"").sub(/\s*(#.*|$)/,"")
      @valuestring = "false" if @type == "bool"
    when /Default\s+(V|v)alue/
      @defaultvalue = content.sub(/^\s+/,"").sub(/\s*(#.*|$)/,"")
      @valuestring = @defaultvalue
    when /Variable\s+(N|n)ame/
      @variablename = content.split[0]
    when /Print\s+(N|n)ame/
      @printname = content.sub(/^\s+/,"").sub(/\s*(#.*|$)/,"")
    when /Description/
      @description = content.sub(/^\s+/,"").sub(/\s*(#.*|$)/,"")
    when /Long\s+(D|d)escription/
      @longdescription = ""
      return true
    else
      raise "\n  option definition line unrecognized:\n==> #{s} <==\n"
  end
  return false
end

#to_sObject



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/clop.rb', line 77

def to_s
  if @type == nil
    s = @description + "\n"
  elsif @type == "bool"
    if eval(@valuestring)
      s = @description + "\n"
    else
      s = ""
    end
  else
    s = @description
    s = add_tabs(s, s.size, 4)
    s += ": "
    if defined? @printname
      s += @printname
    else
      s += @variablename
    end
    s += " = " unless defined? @printname and @printname == ""
    #s += "\n  " if @type =~ /^float\s*vector$/
    s += eval_value.to_s + "\n"
  end
  return s
end