MCPcopy Create free account
hub / github.com/bytedance/bolt / parseFromPattern

Function parseFromPattern

bolt/functions/lib/DateTimeFormatter.cpp:710–1112  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

708using ErrorCode = DateTimeResult::ErrorCode;
709
710ErrorCode parseFromPattern(
711 FormatPattern curPattern,
712 const std::string_view& input,
713 const char*& cur,
714 const char* end,
715 Date& date,
716 bool specifierNext,
717 DateTimeFormatterType type,
718 bool legacySpark = false) {
719 if (curPattern.specifier == DateTimeFormatSpecifier::TIMEZONE_OFFSET_ID) {
720 auto size = parseTimezoneOffset(cur, end, date);
721 if (size == -1) {
722 return ErrorCode::PARSE_TIMEZONE_OFFSET_ERROR;
723 }
724 cur += size;
725 } else if (curPattern.specifier == DateTimeFormatSpecifier::TIMEZONE) {
726 auto size = parseTimezone(cur, end, date, legacySpark);
727 if (size == -1) {
728 return ErrorCode::PARSE_TIMEZONE_ERROR;
729 }
730 cur += size;
731 } else if (curPattern.specifier == DateTimeFormatSpecifier::ERA) {
732 auto size = parseEra(cur, end, date);
733 if (size == -1) {
734 return ErrorCode::PARSE_ERA_ERROR;
735 }
736 cur += size;
737 } else if (
738 curPattern.specifier == DateTimeFormatSpecifier::MONTH_OF_YEAR_TEXT) {
739 auto size = parseMonthText(cur, end, date);
740 if (size == -1) {
741 return ErrorCode::PARSE_MONTH_ERROR;
742 }
743 cur += size;
744 if (!date.hasYear) {
745 date.hasYear = true;
746 date.year = 2000;
747 }
748 } else if (curPattern.specifier == DateTimeFormatSpecifier::HALFDAY_OF_DAY) {
749 auto size = parseHalfDayOfDay(cur, end, date);
750 if (size == -1) {
751 return ErrorCode::PARSE_HALFDAY_ERROR;
752 }
753#ifdef SPARK_COMPATIBLE
754 date.isHourOfHalfDay = true; // for get_timestamp("PM", "a") case
755#endif
756 cur += size;
757 } else if (
758 curPattern.specifier == DateTimeFormatSpecifier::DAY_OF_WEEK_TEXT) {
759 auto size = parseDayOfWeekText(cur, end, date);
760 if (size == -1) {
761 return ErrorCode::PARSE_DAY_ERROR;
762 }
763 cur += size;
764 date.weekDateFormat = true;
765 date.dayOfYearFormat = false;
766 if (!date.hasYear) {
767 date.hasYear = true;

Callers 1

parseMethod · 0.85

Calls 12

parseTimezoneOffsetFunction · 0.85
parseTimezoneFunction · 0.85
parseEraFunction · 0.85
parseMonthTextFunction · 0.85
parseHalfDayOfDayFunction · 0.85
parseDayOfWeekTextFunction · 0.85
specAllowsNegativeFunction · 0.85
specAllowsPlusSignFunction · 0.85
getMaxDigitConsumeFunction · 0.85
getSpecifierNameFunction · 0.85
characterIsDigitFunction · 0.70
push_backMethod · 0.45

Tested by

no test coverage detected