pyjallib.nameToPath API documentation
Description: nameToPath 모듈 - 이름과 경로 변환 관련 기능 이름 규칙에 따라 경로를 생성하거나 경로에서 이름을 추출하는 기능 제공

# Module `pyjallib.nameToPath`

nameToPath 모듈 - 이름과 경로 변환 관련 기능 이름 규칙에 따라 경로를 생성하거나 경로에서 이름을 추출하는 기능 제공

## Classes

`class NameToPath (configPath: str,
rootPath: str = None,
sourceNaming: Naming = None)`
  Expand source code

      class NameToPath(Naming):
          """
          NameToPath 클래스는 Naming 클래스를 상속받아 이름을 기반으로 경로를 생성하는 기능을 제공합니다.
          """
          def __init__(self, configPath: str, rootPath: str = None, sourceNaming: Naming = None):
              """
              생성자 메서드입니다.
              :param configPath: 설정 파일의 경로
              :param rootPath: 루트 경로 (기본값: None)
              :param sourceNaming: 소스 이름을 처리하기 위한 Naming 객체 (기본값: None)
              """
              # 부모 클래스(Naming) 생성자 호출
              super().__init__(configPath)
              self.rootPath = None
              if rootPath:
                  self.set_root_path(rootPath)
              # 소스 네이밍 객체 설정
              self.sourceNaming = sourceNaming

          def set_root_path(self, inRootPath: str):
              """
              루트 경로를 설정합니다.
              입력된 경로를 정규화하고 유효성을 검증합니다.

              :param inRootPath: 루트 경로 (문자열)
              :return: 정규화된 경로
              :raises ValueError: 경로가 존재하지 않는 경우
              """
              if inRootPath:
                  # 경로 정규화 (상대 경로를 절대 경로로 변환, '/' 대신 '\' 사용 등)
                  normalized_path = os.path.normpath(os.path.abspath(inRootPath))

                  # 경로 존재 여부 확인 (선택적)
                  if not os.path.exists(normalized_path):
                      raise ValueError(f"경로가 존재하지 않습니다: {normalized_path}")

                  self.rootPath = normalized_path
                  return self.rootPath
              else:
                  self.rootPath = None
                  return None

          def combine(self, inPartsDict={}, inFilChar=os.sep) -> str:
              """
              딕셔너리의 값들을 설정된 순서에 따라 문자열로 결합합니다. (인덱스 제외)

              :param inPartsDict: 결합할 키-값 쌍을 포함하는 딕셔너리
              :param inFilChar: 값들을 구분할 구분자 (기본값: "_")
              :return: 결합된 문자열
              """
              # 결과 배열 초기화 (빈 문자열로)
              combinedNameArray = [""] * len(self._nameParts)

              # 각 namePart에 대해
              for i, part in enumerate(self._nameParts):
                  partName = part.get_name()
                  # 딕셔너리에서 해당 부분의 값 가져오기 (없으면 빈 문자열 사용)
                  if partName in inPartsDict:
                      combinedNameArray[i] = inPartsDict[partName]

              # 배열을 문자열로 결합
              newName = self._combine(combinedNameArray, inFilChar)
              return newName

          def gen_path(self, inStr):
              """
              입력된 문자열을 기반으로 경로를 생성합니다.

              :param inStr: 경로를 생성할 문자열 (이름)
              :return: 생성된 경로 (문자열)
              :raises ValueError: 루트 경로가 설정되지 않았거나 이름을 변환할 수 없는 경우
              """
              if not self.rootPath:
                  raise ValueError("루트 경로가 설정되지 않았습니다.")

              # 이름을 딕셔너리로 변환
              nameDict = self.sourceNaming.convert_to_dictionary(inStr)
              if not nameDict:
                  raise ValueError(f"이름을 변환할 수 없습니다: {inStr}")
              print(f"Name Dictionary: {nameDict}")

              pathDict = {}

              # 선택된 NamePart 값들을 설명으로 변환하여 폴더 이름으로 사용
              for key, value in nameDict.items():
                  namePart = self.sourceNaming.get_name_part(key)
                  if self.get_name_part(namePart.get_name()):
                      if namePart.get_type() == NamePartType.REALNAME:
                          # 실제 이름인 경우, 해당 이름을 사용
                          pathDict[key] = value
                      else:
                          pathDict[key] = namePart.get_description_by_value(value)

              combinedPath = self.combine(pathDict)
              finalPath = os.path.join(self.rootPath, combinedPath)

              return os.path.normpath(finalPath)

  NameToPath 클래스는 Naming 클래스를 상속받아 이름을 기반으로 경로를 생성하는 기능을 제공합니다.

  생성자 메서드입니다. :param configPath: 설정 파일의 경로 :param rootPath: 루트 경로 (기본값: None) :param sourceNaming: 소스 이름을 처리하기 위한 Naming 객체 (기본값: None)

  ### Ancestors

  - Naming

  ### Methods

  `def combine(self, inPartsDict={}, inFilChar='\\') ‑> str`
    Expand source code

        def combine(self, inPartsDict={}, inFilChar=os.sep) -> str:
            """
            딕셔너리의 값들을 설정된 순서에 따라 문자열로 결합합니다. (인덱스 제외)

            :param inPartsDict: 결합할 키-값 쌍을 포함하는 딕셔너리
            :param inFilChar: 값들을 구분할 구분자 (기본값: "_")
            :return: 결합된 문자열
            """
            # 결과 배열 초기화 (빈 문자열로)
            combinedNameArray = [""] * len(self._nameParts)

            # 각 namePart에 대해
            for i, part in enumerate(self._nameParts):
                partName = part.get_name()
                # 딕셔너리에서 해당 부분의 값 가져오기 (없으면 빈 문자열 사용)
                if partName in inPartsDict:
                    combinedNameArray[i] = inPartsDict[partName]

            # 배열을 문자열로 결합
            newName = self._combine(combinedNameArray, inFilChar)
            return newName

    딕셔너리의 값들을 설정된 순서에 따라 문자열로 결합합니다. (인덱스 제외)

    :param inPartsDict: 결합할 키-값 쌍을 포함하는 딕셔너리 :param inFilChar: 값들을 구분할 구분자 (기본값: "_") :return: 결합된 문자열

  `def gen_path(self, inStr)`
    Expand source code

        def gen_path(self, inStr):
            """
            입력된 문자열을 기반으로 경로를 생성합니다.

            :param inStr: 경로를 생성할 문자열 (이름)
            :return: 생성된 경로 (문자열)
            :raises ValueError: 루트 경로가 설정되지 않았거나 이름을 변환할 수 없는 경우
            """
            if not self.rootPath:
                raise ValueError("루트 경로가 설정되지 않았습니다.")

            # 이름을 딕셔너리로 변환
            nameDict = self.sourceNaming.convert_to_dictionary(inStr)
            if not nameDict:
                raise ValueError(f"이름을 변환할 수 없습니다: {inStr}")
            print(f"Name Dictionary: {nameDict}")

            pathDict = {}

            # 선택된 NamePart 값들을 설명으로 변환하여 폴더 이름으로 사용
            for key, value in nameDict.items():
                namePart = self.sourceNaming.get_name_part(key)
                if self.get_name_part(namePart.get_name()):
                    if namePart.get_type() == NamePartType.REALNAME:
                        # 실제 이름인 경우, 해당 이름을 사용
                        pathDict[key] = value
                    else:
                        pathDict[key] = namePart.get_description_by_value(value)

            combinedPath = self.combine(pathDict)
            finalPath = os.path.join(self.rootPath, combinedPath)

            return os.path.normpath(finalPath)

    입력된 문자열을 기반으로 경로를 생성합니다.

    :param inStr: 경로를 생성할 문자열 (이름) :return: 생성된 경로 (문자열) :raises ValueError: 루트 경로가 설정되지 않았거나 이름을 변환할 수 없는 경우

  `def set_root_path(self, inRootPath: str)`
    Expand source code

        def set_root_path(self, inRootPath: str):
            """
            루트 경로를 설정합니다.
            입력된 경로를 정규화하고 유효성을 검증합니다.

            :param inRootPath: 루트 경로 (문자열)
            :return: 정규화된 경로
            :raises ValueError: 경로가 존재하지 않는 경우
            """
            if inRootPath:
                # 경로 정규화 (상대 경로를 절대 경로로 변환, '/' 대신 '\' 사용 등)
                normalized_path = os.path.normpath(os.path.abspath(inRootPath))

                # 경로 존재 여부 확인 (선택적)
                if not os.path.exists(normalized_path):
                    raise ValueError(f"경로가 존재하지 않습니다: {normalized_path}")

                self.rootPath = normalized_path
                return self.rootPath
            else:
                self.rootPath = None
                return None

    루트 경로를 설정합니다. 입력된 경로를 정규화하고 유효성을 검증합니다.

    :param inRootPath: 루트 경로 (문자열) :return: 정규화된 경로 :raises ValueError: 경로가 존재하지 않는 경우

  ### Inherited members

  - `Naming`:
    - `add_prefix_to_name_part`
    - `add_prefix_to_real_name`
    - `add_suffix_to_name_part`
    - `add_suffix_to_real_name`
    - `convert_digit_into_padding_string`
    - `convert_name_to_array`
    - `convert_to_description`
    - `convert_to_dictionary`
    - `convert_to_korean_description`
    - `gen_mirroring_name`
    - `get_RealName`
    - `get_config_path`
    - `get_index_as_digit`
    - `get_index_padding_num`
    - `get_name`
    - `get_name_part`
    - `get_name_part_index`
    - `get_name_part_predefined_values`
    - `get_name_part_value_by_description`
    - `get_non_RealName`
    - `get_padding_num`
    - `get_string`
    - `has_name_part`
    - `increase_index`
    - `is_in_name_part_predefined_values`
    - `load_default_config`
    - `load_from_config_file`
    - `remove_name_part`
    - `replace_filtering_char`
    - `replace_name_part`
    - `set_index_padding_num`
    - `sort_by_index`