Sha256: fd7013002bee3f95be953252c2970d85bbeec61d551def603f990d6d640fd95d
Contents?: true
Size: 1.94 KB
Versions: 1
Compression:
Stored size: 1.94 KB
Contents
# frozen_string_literal: true module Generated class Argument class UnrecognizedType < ArgumentError; end SEPARATOR = ":" attr_accessor :raw_name, :raw_type, :raw_required, :raw_default, :raw_desc, :raw_banner def initialize(value) @raw_name, @raw_type = value.split(SEPARATOR) @raw_required = true # Arguments are Required by Default end def parameter_type self.class.name.demodulize.underscore.to_sym end def argument? parameter_type == :argument end def option? parameter_type == :option end def name raw_name end def desc "<TODO: How will the '#{raw_name}' #{parameter_type} be used by the generator?>" end def banner required? ? banner_content : "[#{banner_content}]" end def type case raw_type when "integer", "float", "numeric" :numeric when "string", "text" :string when "array" :array when "hash" :hash when "boolean" :boolean else raise UnrecognizedType, raw_type end end def banner_content case type when :string name.upcase when :numeric default || "1" when :array "one two three" when :hash "key_one:value_one key_two:value_two" when :boolean nil else raw_banner end end def default # Required arguments/options don't get defaults return nil if required? case type when :string "<TODO>" when :numeric 0 when :array [] when :hash {} when :boolean false else raw_default end end def required case raw_required when true, "true", 1 true when false, "false", 0 false end end def required? = required def optional? = !required end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
generated-0.1.1 | lib/generated/argument.rb |