Class: Xcodeproj::XCScheme::EnvironmentVariables
- Inherits:
-
XMLElementWrapper
- Object
- XMLElementWrapper
- Xcodeproj::XCScheme::EnvironmentVariables
- Defined in:
- lib/xcodeproj/scheme/environment_variables.rb
Overview
This class wraps the EnvironmentVariables node of a .xcscheme XML file. This is just a container of EnvironmentVariable objects. It can either appear on a LaunchAction or TestAction scheme group.
Instance Attribute Summary
Attributes inherited from XMLElementWrapper
Instance Method Summary collapse
-
#[](key) ⇒ EnvironmentVariable
Variable Returns the matching environment variable for a specified key.
-
#[]=(key, value) ⇒ EnvironmentVariable
Assigns a value for a specified key.
-
#all_variables ⇒ Array<EnvironmentVariable>
The key value pairs currently set in @xml_element.
-
#assign_variable(variable) ⇒ Array<EnvironmentVariable>
Adds a given variable to the set of environment variables, or replaces it if that key already exists.
-
#initialize(node_or_variables = nil) ⇒ EnvironmentVariables
constructor
A new instance of EnvironmentVariables.
-
#remove_variable(variable) ⇒ Array<EnvironmentVariable>
Removes a specified variable (by string or object) from the set of environment variables.
-
#to_a ⇒ Array<Hash{Symbol => String,Bool}>
The current environment variables represented as an array.
Methods inherited from XMLElementWrapper
Constructor Details
#initialize(node_or_variables = nil) ⇒ EnvironmentVariables
Returns a new instance of EnvironmentVariables.
19 20 21 22 23 24 |
# File 'lib/xcodeproj/scheme/environment_variables.rb', line 19 def initialize(node_or_variables = nil) create_xml_element_with_fallback(node_or_variables, VARIABLES_NODE) do @all_variables = [] node_or_variables.each { |var| assign_variable(var) } unless node_or_variables.nil? end end |
Instance Method Details
#[](key) ⇒ EnvironmentVariable
Variable Returns the matching environment variable for a specified key
68 69 70 |
# File 'lib/xcodeproj/scheme/environment_variables.rb', line 68 def [](key) all_variables.find { |var| var.key == key } end |
#[]=(key, value) ⇒ EnvironmentVariable
Assigns a value for a specified key
81 82 83 84 |
# File 'lib/xcodeproj/scheme/environment_variables.rb', line 81 def []=(key, value) assign_variable(:key => key, :value => value) self[key] end |
#all_variables ⇒ Array<EnvironmentVariable>
Returns The key value pairs currently set in @xml_element.
29 30 31 |
# File 'lib/xcodeproj/scheme/environment_variables.rb', line 29 def all_variables @all_variables ||= @xml_element.get_elements(VARIABLE_NODE).map { |variable| EnvironmentVariable.new(variable) } end |
#assign_variable(variable) ⇒ Array<EnvironmentVariable>
Adds a given variable to the set of environment variables, or replaces it if that key already exists
42 43 44 45 46 47 |
# File 'lib/xcodeproj/scheme/environment_variables.rb', line 42 def assign_variable(variable) env_var = variable.is_a?(EnvironmentVariable) ? variable : EnvironmentVariable.new(variable) all_variables.each { |existing_var| remove_variable(existing_var) if existing_var.key == env_var.key } @xml_element.add_element(env_var.xml_element) @all_variables << env_var end |
#remove_variable(variable) ⇒ Array<EnvironmentVariable>
Removes a specified variable (by string or object) from the set of environment variables
56 57 58 59 60 61 |
# File 'lib/xcodeproj/scheme/environment_variables.rb', line 56 def remove_variable(variable) env_var = variable.is_a?(EnvironmentVariable) ? variable : all_variables.find { |var| var.key == variable } raise "Unexpected parameter type: #{env_var.class}" unless env_var.is_a?(EnvironmentVariable) @xml_element.delete_element(env_var.xml_element) @all_variables -= [env_var] end |
#to_a ⇒ Array<Hash{Symbol => String,Bool}>
Returns The current environment variables represented as an array.
89 90 91 |
# File 'lib/xcodeproj/scheme/environment_variables.rb', line 89 def to_a all_variables.map(&:to_h) end |