parameters: (self, file, tabs, key, value)
docstring: Prints a key and value, members of an XCObject's _properties dictionary,
      to file.
  
      tabs is an int identifying the indentation level.  If the class'
      _should_print_single_line variable is True, tabs is ignored and the
      key-value pair will be followed by a space insead of a newline.
docstring_summary: Prints a key and value, members of an XCObject's _properties dictionary,
      to file.
docstring_tokens: Prints a key and value members of an XCObject s _properties dictionary to file .
function: def _XCKVPrint(self, file, tabs, key, value):
      """Prints a key and value, members of an XCObject's _properties dictionary,
      to file.
  
      tabs is an int identifying the indentation level.  If the class'
      _should_print_single_line variable is True, tabs is ignored and the
      key-value pair will be followed by a space insead of a newline.
      """
  
      if self._should_print_single_line:
        printable = ''
        after_kv = ' '
      else:
        printable = '\t' * tabs
        after_kv = '\n'
  
      # Xcode usually prints remoteGlobalIDString values in PBXContainerItemProxy
      # objects without comments.  Sometimes it prints them with comments, but
      # the majority of the time, it doesn't.  To avoid unnecessary changes to
      # the project file after Xcode opens it, don't write comments for
      # remoteGlobalIDString.  This is a sucky hack and it would certainly be
      # cleaner to extend the schema to indicate whether or not a comment should
      # be printed, but since this is the only case where the problem occurs and
      # Xcode itself can't seem to make up its mind, the hack will suffice.
      #
      # Also see PBXContainerItemProxy._schema['remoteGlobalIDString'].
      if key == 'remoteGlobalIDString' and isinstance(self,
                                                      PBXContainerItemProxy):
        value_to_print = value.id
      else:
        value_to_print = value
  
      # PBXBuildFile's settings property is represented in the output as a dict,
      # but a hack here has it represented as a string. Arrange to strip off the
      # quotes so that it shows up in the output as expected.
      if key == 'settings' and isinstance(self, PBXBuildFile):
        strip_value_quotes = True
      else:
        strip_value_quotes = False
  
      # In another one-off, let's set flatten_list on buildSettings properties
      # of XCBuildConfiguration objects, because that's how Xcode treats them.
      if key == 'buildSettings' and isinstance(self, XCBuildConfiguration):
        flatten_list = True
      else:
        flatten_list = False
  
      try:
        printable_key = self._XCPrintableValue(tabs, key, flatten_list)
        printable_value = self._XCPrintableValue(tabs, value_to_print,
                                                 flatten_list)
        if strip_value_quotes and len(printable_value) > 1 and \
            printable_value[0] == '"' and printable_value[-1] == '"':
          printable_value = printable_value[1:-1]
        printable += printable_key + ' = ' + printable_value + ';' + after_kv
      except TypeError, e:
        gyp.common.ExceptionAppend(e,
                                   'while printing key "%s"' % key)
        raise
  
      self._XCPrint(file, 0, printable)
function_tokens: def _XCKVPrint ( self , file , tabs , key , value ) : if self . _should_print_single_line : printable = '' after_kv = ' ' else : printable = '\t' * tabs after_kv = '\n' # Xcode usually prints remoteGlobalIDString values in PBXContainerItemProxy # objects without comments.  Sometimes it prints them with comments, but # the majority of the time, it doesn't.  To avoid unnecessary changes to # the project file after Xcode opens it, don't write comments for # remoteGlobalIDString.  This is a sucky hack and it would certainly be # cleaner to extend the schema to indicate whether or not a comment should # be printed, but since this is the only case where the problem occurs and # Xcode itself can't seem to make up its mind, the hack will suffice. # # Also see PBXContainerItemProxy._schema['remoteGlobalIDString']. if key == 'remoteGlobalIDString' and isinstance ( self , PBXContainerItemProxy ) : value_to_print = value . id else : value_to_print = value # PBXBuildFile's settings property is represented in the output as a dict, # but a hack here has it represented as a string. Arrange to strip off the # quotes so that it shows up in the output as expected. if key == 'settings' and isinstance ( self , PBXBuildFile ) : strip_value_quotes = True else : strip_value_quotes = False # In another one-off, let's set flatten_list on buildSettings properties # of XCBuildConfiguration objects, because that's how Xcode treats them. if key == 'buildSettings' and isinstance ( self , XCBuildConfiguration ) : flatten_list = True else : flatten_list = False try : printable_key = self . _XCPrintableValue ( tabs , key , flatten_list ) printable_value = self . _XCPrintableValue ( tabs , value_to_print , flatten_list ) if strip_value_quotes and len ( printable_value ) > 1 and printable_value [ 0 ] == '"' and printable_value [ - 1 ] == '"' : printable_value = printable_value [ 1 : - 1 ] printable += printable_key + ' = ' + printable_value + ';' + after_kv except TypeError , e : gyp . common . ExceptionAppend ( e , 'while printing key "%s"' % key ) raise self . _XCPrint ( file , 0 , printable )