lib/cyberarm_engine/console/subcommand.rb in cyberarm_engine-0.19.0 vs lib/cyberarm_engine/console/subcommand.rb in cyberarm_engine-0.19.1

- old
+ new

@@ -1,100 +1,100 @@ -# frozen_string_literal: true - -module CyberarmEngine - class Console - class Command - class SubCommand - def initialize(parent, command, type) - @parent = parent - @command = command - @type = type - end - - attr_reader :command - - def handle(arguments, console) - if arguments.size > 1 - console.stdin("to many arguments for #{Style.highlight(command.to_s)}, got #{Style.error(arguments.size)} expected #{Style.notice(1)}.") - return - end - - case @type - when :boolean - case arguments.last - when "", nil - var = @parent.get(command.to_sym) || false - console.stdin("#{command}: #{Style.highlight(var)}") - when "on" - var = @parent.set(command.to_sym, true) - console.stdin("#{command} => #{Style.highlight(var)}") - when "off" - var = @parent.set(command.to_sym, false) - console.stdin("#{command} => #{Style.highlight(var)}") - else - console.stdin("Invalid argument for #{Style.highlight(command.to_s)}, got #{Style.error(arguments.last)} expected #{Style.notice('on')}, or #{Style.notice('off')}.") - end - when :string - case arguments.last - when "", nil - var = @parent.get(command.to_sym) || "\"\"" - console.stdin("#{command}: #{Style.highlight(var)}") - else - var = @parent.set(command.to_sym, arguments.last) - console.stdin("#{command} => #{Style.highlight(var)}") - end - when :integer - case arguments.last - when "", nil - var = @parent.get(command.to_sym) || "nil" - console.stdin("#{command}: #{Style.highlight(var)}") - else - begin - var = @parent.set(command.to_sym, Integer(arguments.last)) - console.stdin("#{command} => #{Style.highlight(var)}") - rescue ArgumentError - console.stdin("Error: #{Style.error("Expected an integer, got '#{arguments.last}'")}") - end - end - when :decimal - case arguments.last - when "", nil - var = @parent.get(command.to_sym) || "nil" - console.stdin("#{command}: #{Style.highlight(var)}") - else - begin - var = @parent.set(command.to_sym, Float(arguments.last)) - console.stdin("#{command} => #{Style.highlight(var)}") - rescue ArgumentError - console.stdin("Error: #{Style.error("Expected a decimal or integer, got '#{arguments.last}'")}") - end - end - else - raise RuntimeError - end - end - - def values - case @type - when :boolean - %w[on off] - else - [] - end - end - - def usage - case @type - when :boolean - "#{Style.highlight(command)} #{Style.notice('[on|off]')}" - when :string - "#{Style.highlight(command)} #{Style.notice('[string]')}" - when :integer - "#{Style.highlight(command)} #{Style.notice('[0]')}" - when :decimal - "#{Style.highlight(command)} #{Style.notice('[0.0]')}" - end - end - end - end - end +# frozen_string_literal: true + +module CyberarmEngine + class Console + class Command + class SubCommand + def initialize(parent, command, type) + @parent = parent + @command = command + @type = type + end + + attr_reader :command + + def handle(arguments, console) + if arguments.size > 1 + console.stdin("to many arguments for #{Style.highlight(command.to_s)}, got #{Style.error(arguments.size)} expected #{Style.notice(1)}.") + return + end + + case @type + when :boolean + case arguments.last + when "", nil + var = @parent.get(command.to_sym) || false + console.stdin("#{command}: #{Style.highlight(var)}") + when "on" + var = @parent.set(command.to_sym, true) + console.stdin("#{command} => #{Style.highlight(var)}") + when "off" + var = @parent.set(command.to_sym, false) + console.stdin("#{command} => #{Style.highlight(var)}") + else + console.stdin("Invalid argument for #{Style.highlight(command.to_s)}, got #{Style.error(arguments.last)} expected #{Style.notice('on')}, or #{Style.notice('off')}.") + end + when :string + case arguments.last + when "", nil + var = @parent.get(command.to_sym) || "\"\"" + console.stdin("#{command}: #{Style.highlight(var)}") + else + var = @parent.set(command.to_sym, arguments.last) + console.stdin("#{command} => #{Style.highlight(var)}") + end + when :integer + case arguments.last + when "", nil + var = @parent.get(command.to_sym) || "nil" + console.stdin("#{command}: #{Style.highlight(var)}") + else + begin + var = @parent.set(command.to_sym, Integer(arguments.last)) + console.stdin("#{command} => #{Style.highlight(var)}") + rescue ArgumentError + console.stdin("Error: #{Style.error("Expected an integer, got '#{arguments.last}'")}") + end + end + when :decimal + case arguments.last + when "", nil + var = @parent.get(command.to_sym) || "nil" + console.stdin("#{command}: #{Style.highlight(var)}") + else + begin + var = @parent.set(command.to_sym, Float(arguments.last)) + console.stdin("#{command} => #{Style.highlight(var)}") + rescue ArgumentError + console.stdin("Error: #{Style.error("Expected a decimal or integer, got '#{arguments.last}'")}") + end + end + else + raise RuntimeError + end + end + + def values + case @type + when :boolean + %w[on off] + else + [] + end + end + + def usage + case @type + when :boolean + "#{Style.highlight(command)} #{Style.notice('[on|off]')}" + when :string + "#{Style.highlight(command)} #{Style.notice('[string]')}" + when :integer + "#{Style.highlight(command)} #{Style.notice('[0]')}" + when :decimal + "#{Style.highlight(command)} #{Style.notice('[0.0]')}" + end + end + end + end + end end \ No newline at end of file