Перейти к содержанию

Границы#

Границы определяют, где строка делится на слова. Они позволяют вам контролировать, как строка делится во время преобразований между различными соглашениями об именовании.

Рассмотрим абстрактный пример, где символ "_" используется в качестве границы:

Представьте строку: "A_B_C"

Используя "_" в качестве границы, строка делится на отдельные сегменты: ["A", "B", "C"]

Специфика границ#

Может быть сложно определить, как разбить строку на слова.

Допустим, строка содержит слово "2D", например "scale2D", и мы хотим перевести его в регистр snake. Как нам решить, какие boundaries использовать для разбиения этой строки на слова? Должно ли это быть "scale_2_d", "scale_2d" или просто "scale2d"?

По умолчанию метод преобразования использует некоторые предопределённые boundaries, но иногда предопределенных границ недостаточно для соответствия определенному варианту использования, поэтому вы можете явно указать, какие из них использовать, предоставив экземпляры класса Boundary.

boundaries/specificity.py
1
2
3
4
5
6
import textcase

textcase.snake("scale2D")  # scale_2_d

textcase.snake("scale2D", boundaries=[textcase.LOWER_DIGIT])  # scale_2d
textcase.snake("scale2D", boundaries=[])  # scale2d

Вы можете увидеть полный список всех встроенных границ в Спецификации API.

Создание кастомных границ#

Эта библиотека предоставляет ряд констант для границ, связанных с общими случаями. Но если вам нужно обрабатывать более конкретные случаи, вы можете легко создать пользовательские границы и использовать их, а также встроенные:

boundaries/custom_boundary.py
1
2
3
4
5
6
from textcase import Boundary, title

title("colors.brown")  # Colorsbrown (1)

DOT = Boundary.from_delimiter(".")  # (2)!
title("colors.brown", boundaries=[DOT])  # Colors Brown (3)
  1. 😢 Это совсем не то, что нам нужно. Поскольку библиотека не обрабатывает границу с точкой (".") по умолчанию, нам нужно создать ее вручную с помощью класса Boundary.
  2. 😄 Для достижения нашей цели нам нужно создать пользовательскую границу с помощью метода Boundary.from_delimiter.
  3. 😄 Теперь мы можем явно задать нашу пользовательскую границу для аргумента boundaries и он будет использоваться при разделении текста!

Чтобы узнать больше о создании кастомной границы с нуля, взгляните на класс Boundary.