class Xcodeproj::XCScheme::XMLElementWrapper
Abstract base class used for other XCScheme
classes wrapping an XML element
Attributes
@return [REXML::Element]
The XML node wrapped and manipulated by this XMLElementWrapper object
Public Instance Methods
@return [String]
The XML representation of the node this XMLElementWrapper wraps, formatted in the same way that Xcode would.
# File lib/xcodeproj/scheme/xml_element_wrapper.rb, line 14 def to_s formatter = XMLFormatter.new(2) formatter.compact = false out = '' formatter.write(@xml_element, out) out.gsub!("<?xml version='1.0' encoding='UTF-8'?>", '') out << "\n" out end
Private Instance Methods
@param [Bool]
The boolean we want to represent as a string
@return [String]
The string representaiton of that boolean used in the XML ('YES' or 'NO')
# File lib/xcodeproj/scheme/xml_element_wrapper.rb, line 63 def bool_to_string(flag) flag ? 'YES' : 'NO' end
This is a method intended to be used to facilitate the implementation of the initializers.
-
Create the @xml_element attribute based on the node passed as parameter, only if that parameter is of type REXML::Element and its name matches the tag_name given.
-
Otherwise, create a brand new REXML::Element with the proper tag name and execute the block given as a fallback to let the caller the chance to configure it
@param [REXML::Element, *] node
The node this XMLElementWrapper is expected to wrap or any other object (typically an AbstractTarget instance, or nil) the initializer might expect
@param [String] tag_name
The expected name for the node, which will also be the name used to create the new node if that `node` parameter is not a REXML::Element itself.
@yield a parameter-less block if the ‘node` parameter is not actually a REXML::Element
@raise Informative
If the `node` parameter is a REXML::Element instance but the node's name doesn't match the one provided by the `tag_name` parameter.
# File lib/xcodeproj/scheme/xml_element_wrapper.rb, line 47 def create_xml_element_with_fallback(node, tag_name) if node && node.is_a?(REXML::Element) raise Informative, 'Wrong XML tag name' unless node.name == tag_name @xml_element = node else @xml_element = REXML::Element.new(tag_name) yield if block_given? end end
@param [String]
The string representaiton of a boolean used in the XML ('YES' or 'NO')
@return [Bool]
The boolean interpretation of that string
@raise Informative
If the string is not representing a boolean (i.e. is neither 'YES' nor 'NO')
# File lib/xcodeproj/scheme/xml_element_wrapper.rb, line 76 def string_to_bool(str) raise Informative, 'Invalid tag value. Expected YES or NO.' unless %w(YES NO).include?(str) str == 'YES' end