Encodes the input string with the specified encoding. Args: input_string (str): The string to encode. encoding (Encoding): The encoding type. Returns: MetaString: An encoded MetaString object.
(self, input_string: str, encoding: Encoding)
| 295 | return self.encode_with_encoding(input_string, encoding) |
| 296 | |
| 297 | def encode_with_encoding(self, input_string: str, encoding: Encoding) -> MetaString: |
| 298 | """ |
| 299 | Encodes the input string with the specified encoding. |
| 300 | |
| 301 | Args: |
| 302 | input_string (str): The string to encode. |
| 303 | encoding (Encoding): The encoding type. |
| 304 | |
| 305 | Returns: |
| 306 | MetaString: An encoded MetaString object. |
| 307 | """ |
| 308 | # Long meta string longer than _METASTRING_NUM_CHARS_LIMIT is not allowed. |
| 309 | assert len(input_string) < _METASTRING_NUM_CHARS_LIMIT, "Long meta string longer than _METASTRING_NUM_CHARS_LIMIT is not allowed." |
| 310 | |
| 311 | if not input_string: |
| 312 | return MetaString( |
| 313 | input_string, |
| 314 | Encoding.UTF_8, |
| 315 | bytes(), |
| 316 | 0, |
| 317 | self.special_char1, |
| 318 | self.special_char2, |
| 319 | ) |
| 320 | |
| 321 | length = len(input_string) |
| 322 | if encoding == Encoding.LOWER_SPECIAL: |
| 323 | encoded_data = self._encode_lower_special(input_string) |
| 324 | return MetaString( |
| 325 | input_string, |
| 326 | encoding, |
| 327 | encoded_data, |
| 328 | length * 5, |
| 329 | self.special_char1, |
| 330 | self.special_char2, |
| 331 | ) |
| 332 | elif encoding == Encoding.LOWER_UPPER_DIGIT_SPECIAL: |
| 333 | encoded_data = self._encode_lower_upper_digit_special(input_string) |
| 334 | return MetaString( |
| 335 | input_string, |
| 336 | encoding, |
| 337 | encoded_data, |
| 338 | length * 6, |
| 339 | self.special_char1, |
| 340 | self.special_char2, |
| 341 | ) |
| 342 | elif encoding == Encoding.FIRST_TO_LOWER_SPECIAL: |
| 343 | encoded_data = self._encode_first_to_lower_special(input_string) |
| 344 | return MetaString( |
| 345 | input_string, |
| 346 | encoding, |
| 347 | encoded_data, |
| 348 | length * 5, |
| 349 | self.special_char1, |
| 350 | self.special_char2, |
| 351 | ) |
| 352 | elif encoding == Encoding.ALL_TO_LOWER_SPECIAL: |
| 353 | chars = list(input_string) |
| 354 | upper_count = sum(1 for c in chars if c.isupper()) |