parameters: (sources, base_path, base_path_components, result)
docstring: Extracts valid sources from |sources| and adds them to |result|. Each
    source file is relative to |base_path|, but may contain '..'. To make
    resolving '..' easier |base_path_components| contains each of the
    directories in |base_path|. Additionally each source may contain variables.
    Such sources are ignored as it is assumed dependencies on them are expressed
    and tracked in some other means.
docstring_summary: Extracts valid sources from |sources| and adds them to |result|. Each
    source file is relative to |base_path|, but may contain '..'. To make
    resolving '..' easier |base_path_components| contains each of the
    directories in |base_path|. Additionally each source may contain variables.
    Such sources are ignored as it is assumed dependencies on them are expressed
    and tracked in some other means.
docstring_tokens: Extracts valid sources from |sources| and adds them to |result| . Each source file is relative to |base_path| but may contain .. . To make resolving .. easier |base_path_components| contains each of the directories in |base_path| . Additionally each source may contain variables . Such sources are ignored as it is assumed dependencies on them are expressed and tracked in some other means .
function: def _AddSources(sources, base_path, base_path_components, result):
      """Extracts valid sources from |sources| and adds them to |result|. Each
    source file is relative to |base_path|, but may contain '..'. To make
    resolving '..' easier |base_path_components| contains each of the
    directories in |base_path|. Additionally each source may contain variables.
    Such sources are ignored as it is assumed dependencies on them are expressed
    and tracked in some other means."""
      # NOTE: gyp paths are always posix style.
      for source in sources:
          if not len(source) or source.startswith("!!!") or source.startswith("$"):
              continue
          # variable expansion may lead to //.
          org_source = source
          source = source[0] + source[1:].replace("//", "/")
          if source.startswith("../"):
              source = _ResolveParent(source, base_path_components)
              if len(source):
                  result.append(source)
              continue
          result.append(base_path + source)
          if debug:
              print("AddSource", org_source, result[len(result) - 1])
function_tokens: def _AddSources ( sources , base_path , base_path_components , result ) : # NOTE: gyp paths are always posix style. for source in sources : if not len ( source ) or source . startswith ( "!!!" ) or source . startswith ( "$" ) : continue # variable expansion may lead to //. org_source = source source = source [ 0 ] + source [ 1 : ] . replace ( "//" , "/" ) if source . startswith ( "../" ) : source = _ResolveParent ( source , base_path_components ) if len ( source ) : result . append ( source ) continue result . append ( base_path + source ) if debug : print ( "AddSource" , org_source , result [ len ( result ) - 1 ] )