Class: Generated::Argument

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

Direct Known Subclasses

Option

Defined Under Namespace

Classes: UnrecognizedType

Constant Summary collapse

SEPARATOR =
":"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value) ⇒ Argument

Returns a new instance of Argument.



16
17
18
19
20
# File 'lib/generated/argument.rb', line 16

def initialize(value)
  @raw_name, @raw_type = value.split(SEPARATOR)

  @raw_required = true # Arguments are Required by Default
end

Instance Attribute Details

#raw_bannerObject

Returns the value of attribute raw_banner.



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

def raw_banner
  @raw_banner
end

#raw_defaultObject

Returns the value of attribute raw_default.



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

def raw_default
  @raw_default
end

#raw_descObject

Returns the value of attribute raw_desc.



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

def raw_desc
  @raw_desc
end

#raw_nameObject

Returns the value of attribute raw_name.



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

def raw_name
  @raw_name
end

#raw_requiredObject

Returns the value of attribute raw_required.



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

def raw_required
  @raw_required
end

#raw_typeObject

Returns the value of attribute raw_type.



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

def raw_type
  @raw_type
end

Instance Method Details

#argument?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/generated/argument.rb', line 26

def argument?
  parameter_type == :argument
end


42
43
44
# File 'lib/generated/argument.rb', line 42

def banner
  required? ? banner_content : "[#{banner_content}]"
end


63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/generated/argument.rb', line 63

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

#defaultObject



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/generated/argument.rb', line 80

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

#descObject



38
39
40
# File 'lib/generated/argument.rb', line 38

def desc
  "<TODO: How will the '#{raw_name}' #{parameter_type} be used by the generator?>"
end

#nameObject



34
35
36
# File 'lib/generated/argument.rb', line 34

def name
  raw_name
end

#option?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/generated/argument.rb', line 30

def option?
  parameter_type == :option
end

#optional?Boolean

Returns:

  • (Boolean)


111
# File 'lib/generated/argument.rb', line 111

def optional? = !required

#parameter_typeObject



22
23
24
# File 'lib/generated/argument.rb', line 22

def parameter_type
  self.class.name.demodulize.underscore.to_sym
end

#requiredObject



100
101
102
103
104
105
106
107
# File 'lib/generated/argument.rb', line 100

def required
  case raw_required
  when true, "true", 1
    true
  when false, "false", 0
    false
  end
end

#required?Boolean

Returns:

  • (Boolean)


109
# File 'lib/generated/argument.rb', line 109

def required? = required

#typeObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/generated/argument.rb', line 46

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