stdlib/strings: Moved Buffer to FlatBuffer, Buffer is now abstract.
[nit.git] / lib / opts.nit
index 06fe44e..14e28fa 100644 (file)
@@ -68,7 +68,7 @@ abstract class Option
        # A pretty print for this help
        fun pretty(off: Int): String
        do
-               var text = new Buffer.from("  ")
+               var text = new FlatBuffer.from("  ")
                text.append(_names.join(", "))
                text.append("  ")
                var rest = off - text.length
@@ -138,12 +138,12 @@ abstract class OptionParameter
        redef fun read_param(it)
        do
                super
-               if it.is_ok and it.item.first != '-' then
+               if it.is_ok and it.item.chars.first != '-' then
                        value = convert(it.item)
                        it.next
                else
                        if _parameter_mandatory then
-                               _errors.add("parameter expected for option {names.first}")
+                               _errors.add("Parameter expected for option {names.first}.")
                        end
                end
        end
@@ -265,6 +265,7 @@ class OptionContext
                while parseargs and it.is_ok do
                        var str = it.item
                        if str == "--" then
+                               it.next
                                rest.add_all(it.to_a)
                                parseargs = false
                        else
@@ -272,7 +273,7 @@ class OptionContext
                                if str.last_index_of('-') == 0 and str.length > 2 then
                                        var next_called = false
                                        for i in [1..str.length] do
-                                               var short_opt = "-" + str[i].to_s
+                                               var short_opt = "-" + str.chars[i].to_s
                                                if _optmap.has_key(short_opt) then
                                                        var option = _optmap[short_opt]
                                                        if option isa OptionParameter then
@@ -298,11 +299,9 @@ class OptionContext
 
                for opt in _options do
                        if opt.mandatory and not opt.read then
-                               _errors.add("mandatory option {opt.names.join(", ")} not found")
+                               _errors.add("Mandatory option {opt.names.join(", ")} not found.")
                        end
                end
-
-               check_errors
        end
 
        fun add_option(opts: Option...)
@@ -329,20 +328,18 @@ class OptionContext
                end
        end
 
-       private fun check_errors
+       fun get_errors: Array[String]
        do
+               var errors: Array[String] = new Array[String]
+
+               errors.add_all(_errors)
+
                for o in _options do
                        for e in o.errors do
-                               _errors.add(e)
+                               errors.add(e)
                        end
                end
 
-               if _errors.length > 0 then
-                       stderr.write("Errors occured during parsing:\n")
-                       for e in _errors do
-                               stderr.write(" - " + e + "\n")
-                       end
-                       exit(1)
-               end
+               return errors
        end
 end