Merge: Fix generic parameter names
[nit.git] / lib / opts.nit
index 20bf42f..a1bffc1 100644 (file)
@@ -29,19 +29,19 @@ abstract class Option
        var errors: Array[String] = new Array[String]
 
        # Is this option mandatory?
-       var mandatory: Bool writable = false
+       var mandatory: Bool = false is writable
 
        # Is this option hidden from `usage`?
-       var hidden: Bool writable = false
+       var hidden: Bool = false is writable
 
        # Has this option been read?
-       var read: Bool writable = false
+       var read: Bool = false is writable
 
        # Current value of this option
-       var value: VALUE writable
+       var value: VALUE is writable
 
        # Default value of this option
-       var default_value: VALUE writable
+       var default_value: VALUE is writable
 
        # Create a new option
        init(help: String, default: VALUE, names: nullable Array[String])
@@ -83,7 +83,7 @@ abstract class Option
        fun pretty_default: String
        do
                var dv = default_value
-               if dv != null then return " ({dv})"
+               if dv != null then return " ({dv.to_s})"
                return ""
        end
 
@@ -138,7 +138,7 @@ abstract class OptionParameter
        protected fun convert(str: String): VALUE is abstract
 
        # Is the parameter mandatory?
-       var parameter_mandatory: Bool writable = true
+       var parameter_mandatory: Bool = true is writable
 
        redef fun read_param(it)
        do
@@ -195,7 +195,7 @@ class OptionEnum
        redef fun pretty_default
        do
                if default_value != null then
-                       return " ({values[default_value.as(not null)]})"
+                       return " ({values[default_value]})"
                else
                        return ""
                end
@@ -245,23 +245,15 @@ end
 # Context where the options process
 class OptionContext
        # Options present in the context
-       var options: Array[Option]
+       var options = new Array[Option]
 
        # Rest of the options after `parse` is called
-       var rest: Array[String]
+       var rest = new Array[String]
 
        # Errors found in the context after parsing
-       var errors: Array[String]
+       var errors = new Array[String]
 
-       private var optmap: Map[String, Option]
-
-       init
-       do
-               options = new Array[Option]
-               optmap = new HashMap[String, Option]
-               rest = new Array[String]
-               errors = new Array[String]
-       end
+       private var optmap = new HashMap[String, Option]
 
        # Add one or more options to the context
        fun add_option(opts: Option...) do
@@ -295,7 +287,6 @@ class OptionContext
        end
 
        # Parse the command line
-       # FIXME: avoir crashing on a command line like : `myprog -foo` (more than one letter after a single `-`)
        protected fun parse_intern(it: Iterator[String])
        do
                var parseargs = true
@@ -312,7 +303,7 @@ class OptionContext
                                # We're looking for packed short options
                                if str.chars.last_index_of('-') == 0 and str.length > 2 then
                                        var next_called = false
-                                       for i in [1..str.length] do
+                                       for i in [1..str.length[ do
                                                var short_opt = "-" + str.chars[i].to_s
                                                if optmap.has_key(short_opt) then
                                                        var option = optmap[short_opt]