class MxxRu::Cpp::GlobalSingleValueOption
Auxiliary class, intended to store objects like runtime_mode, rtl_mode, etc, with information about who has set this or that mode.
Attributes
default_value[R]
name[R]
value[R]
who[R]
Public Class Methods
new( a_name, a_default_value, a_available_values )
click to toggle source
- a_name
-
Name.
- a_default_value
-
Default value.
- a_available_values
-
Available values. Array of String.
# File lib/mxx_ru/cpp/target.rb, line 102 def initialize( a_name, a_default_value, a_available_values ) @name = a_name @default_value = a_default_value @default_value_changer = nil @available_values = a_available_values @value = @default_value @who = "n/a" end
Public Instance Methods
change( a_value, a_who )
click to toggle source
Value change. If new value is the same as default, value change try is ignored.
- a_value
-
New value.
- a_who
-
Who tries to change value.
# File lib/mxx_ru/cpp/target.rb, line 141 def change( a_value, a_who ) if a_value != @default_value check_value( a_value, a_who ) if @value == @default_value # Value did not change till now. @value = a_value @who = a_who else # Value is already changed. It is necessary to be convinced, # that values are the same. Otherwise there is a conflict. if a_value != @value raise MxxRu::GlobalOptionConflictEx.new( @name, @value, @who, a_value, a_who ) end end end end
change_default( a_value, a_who )
click to toggle source
Change default value.
Description of this change is printed to standard output.
- a_value
-
new default value.
- a_who
-
who tries to change value.
# File lib/mxx_ru/cpp/target.rb, line 121 def change_default( a_value, a_who ) check_value( a_value, a_who ) if nil == @default_value_changer need_change_current = ( @value == @default_value ) @default_value = a_value @default_value_changer = a_who @value = @default_value if need_change_current elsif a_value != @default_value puts "WARNING: ignoring change default value for '#{@name}' to " + "'#{a_value}' by '#{a_who}'; default value already changed by " + "'#{@default_value_changer}'" end end
Protected Instance Methods
check_value( value, who )
click to toggle source
Search value in available values. Raise exceptions if value not found.
# File lib/mxx_ru/cpp/target.rb, line 166 def check_value( value, who ) if !@available_values.include?( value ) raise MxxRu::GlobalOptionDisallowedValueEx.new( @name, @available_values, value, who ) end end