original_string: protected function get_path(array $subcontext, string $name) : string {
          $subcontext = shorten_filenames($subcontext, MAX_FILENAME_SIZE, true);
          $name = shorten_filename($name, MAX_FILENAME_SIZE, true);
  
          // This weird code is to look for a subcontext that contains a number and append an '_' to the front.
          // This is because there seems to be some weird problem with array_merge_recursive used in finalise_content().
          $subcontext = array_map(function($data) {
              if (stripos($data, DIRECTORY_SEPARATOR) !== false) {
                  $newpath = explode(DIRECTORY_SEPARATOR, $data);
                  $newpath = array_map(function($value) {
                      if (is_numeric($value)) {
                          return '_' . $value;
                      }
                      return $value;
                  }, $newpath);
                  return implode(DIRECTORY_SEPARATOR, $newpath);
              } else if (is_numeric($data)) {
                  $data = '_' . $data;
              }
              return $data;
          }, $subcontext);
  
          // Combine the context path, and the subcontext data.
          $path = array_merge(
              $this->get_context_path(),
              $subcontext
          );
  
          // Join the directory together with the name.
          $filepath = implode(DIRECTORY_SEPARATOR, $path) . DIRECTORY_SEPARATOR . $name;
  
          // To use backslash, it must be doubled ("\\\\" PHP string).
          $separator = str_replace('\\', '\\\\', DIRECTORY_SEPARATOR);
          return preg_replace('@(' . $separator . '|/)+@', $separator, $filepath);
      }
code: protected function get_path(array $subcontext, string $name) : string {
          $subcontext = shorten_filenames($subcontext, MAX_FILENAME_SIZE, true);
          $name = shorten_filename($name, MAX_FILENAME_SIZE, true);
  
          // This weird code is to look for a subcontext that contains a number and append an '_' to the front.
          // This is because there seems to be some weird problem with array_merge_recursive used in finalise_content().
          $subcontext = array_map(function($data) {
              if (stripos($data, DIRECTORY_SEPARATOR) !== false) {
                  $newpath = explode(DIRECTORY_SEPARATOR, $data);
                  $newpath = array_map(function($value) {
                      if (is_numeric($value)) {
                          return '_' . $value;
                      }
                      return $value;
                  }, $newpath);
                  return implode(DIRECTORY_SEPARATOR, $newpath);
              } else if (is_numeric($data)) {
                  $data = '_' . $data;
              }
              return $data;
          }, $subcontext);
  
          // Combine the context path, and the subcontext data.
          $path = array_merge(
              $this->get_context_path(),
              $subcontext
          );
  
          // Join the directory together with the name.
          $filepath = implode(DIRECTORY_SEPARATOR, $path) . DIRECTORY_SEPARATOR . $name;
  
          // To use backslash, it must be doubled ("\\\\" PHP string).
          $separator = str_replace('\\', '\\\\', DIRECTORY_SEPARATOR);
          return preg_replace('@(' . $separator . '|/)+@', $separator, $filepath);
      }
code_tokens: protected function get_path ( array $ subcontext , string $ name ) : string { $ subcontext = shorten_filenames ( $ subcontext , MAX_FILENAME_SIZE , true ) ; $ name = shorten_filename ( $ name , MAX_FILENAME_SIZE , true ) ; // This weird code is to look for a subcontext that contains a number and append an '_' to the front. // This is because there seems to be some weird problem with array_merge_recursive used in finalise_content(). $ subcontext = array_map ( function ( $ data ) { if ( stripos ( $ data , DIRECTORY_SEPARATOR ) !== false ) { $ newpath = explode ( DIRECTORY_SEPARATOR , $ data ) ; $ newpath = array_map ( function ( $ value ) { if ( is_numeric ( $ value ) ) { return '_' . $ value ; } return $ value ; } , $ newpath ) ; return implode ( DIRECTORY_SEPARATOR , $ newpath ) ; } else if ( is_numeric ( $ data ) ) { $ data = '_' . $ data ; } return $ data ; } , $ subcontext ) ; // Combine the context path, and the subcontext data. $ path = array_merge ( $ this -> get_context_path ( ) , $ subcontext ) ; // Join the directory together with the name. $ filepath = implode ( DIRECTORY_SEPARATOR , $ path ) . DIRECTORY_SEPARATOR . $ name ; // To use backslash, it must be doubled ("\\\\" PHP string). $ separator = str_replace ( '\\' , '\\\\' , DIRECTORY_SEPARATOR ) ; return preg_replace ( '@(' . $ separator . '|/)+@' , $ separator , $ filepath ) ; }
docstring: Get the relative file path within the current context, and subcontext, using the specified filename.
  
  @param   string[]        $subcontext The location within the current context to export this data.
  @param   string          $name       The intended filename, including any extensions.
  @return  string                      The fully-qualfiied file path.
docstring_tokens: Get the relative file path within the current context and subcontext using the specified filename .