Download datalab/web/node_modules/moment/src/lib/create/from-string-and-format.js from arshjaved/indiaai-hackathon: direct link, hf CLI and curl.
- Browser
- Download file 3.87 kB
-
https://huggingface.co/arshjaved/indiaai-hackathon/resolve/main/datalab/web/node_modules/moment/src/lib/create/from-string-and-format.js
- Command line
-
hf download hf://arshjaved/indiaai-hackathon/datalab/web/node_modules/moment/src/lib/create/from-string-and-format.js
-
curl -L -o from-string-and-format.js https://huggingface.co/arshjaved/indiaai-hackathon/resolve/main/datalab/web/node_modules/moment/src/lib/create/from-string-and-format.js
3.87 kB
| import { configFromISO, configFromRFC2822 } from './from-string'; | |
| import { configFromArray } from './from-array'; | |
| import { getParseRegexForToken } from '../parse/regex'; | |
| import { addTimeToArrayFromToken } from '../parse/token'; | |
| import { expandFormat, formatTokenFunctions, formattingTokens } from '../format/format'; | |
| import checkOverflow from './check-overflow'; | |
| import { HOUR } from '../units/constants'; | |
| import { hooks } from '../utils/hooks'; | |
| import getParsingFlags from './parsing-flags'; | |
| // constant that refers to the ISO standard | |
| hooks.ISO_8601 = function () {}; | |
| // constant that refers to the RFC 2822 form | |
| hooks.RFC_2822 = function () {}; | |
| // date from string and format string | |
| export function configFromStringAndFormat(config) { | |
| // TODO: Move this to another part of the creation flow to prevent circular deps | |
| if (config._f === hooks.ISO_8601) { | |
| configFromISO(config); | |
| return; | |
| } | |
| if (config._f === hooks.RFC_2822) { | |
| configFromRFC2822(config); | |
| return; | |
| } | |
| config._a = []; | |
| getParsingFlags(config).empty = true; | |
| // This array is used to make a Date, either with `new Date` or `Date.UTC` | |
| var string = '' + config._i, | |
| i, parsedInput, tokens, token, skipped, | |
| stringLength = string.length, | |
| totalParsedInputLength = 0; | |
| tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; | |
| for (i = 0; i < tokens.length; i++) { | |
| token = tokens[i]; | |
| parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; | |
| // console.log('token', token, 'parsedInput', parsedInput, | |
| // 'regex', getParseRegexForToken(token, config)); | |
| if (parsedInput) { | |
| skipped = string.substr(0, string.indexOf(parsedInput)); | |
| if (skipped.length > 0) { | |
| getParsingFlags(config).unusedInput.push(skipped); | |
| } | |
| string = string.slice(string.indexOf(parsedInput) + parsedInput.length); | |
| totalParsedInputLength += parsedInput.length; | |
| } | |
| // don't parse if it's not a known token | |
| if (formatTokenFunctions[token]) { | |
| if (parsedInput) { | |
| getParsingFlags(config).empty = false; | |
| } | |
| else { | |
| getParsingFlags(config).unusedTokens.push(token); | |
| } | |
| addTimeToArrayFromToken(token, parsedInput, config); | |
| } | |
| else if (config._strict && !parsedInput) { | |
| getParsingFlags(config).unusedTokens.push(token); | |
| } | |
| } | |
| // add remaining unparsed input length to the string | |
| getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; | |
| if (string.length > 0) { | |
| getParsingFlags(config).unusedInput.push(string); | |
| } | |
| // clear _12h flag if hour is <= 12 | |
| if (config._a[HOUR] <= 12 && | |
| getParsingFlags(config).bigHour === true && | |
| config._a[HOUR] > 0) { | |
| getParsingFlags(config).bigHour = undefined; | |
| } | |
| getParsingFlags(config).parsedDateParts = config._a.slice(0); | |
| getParsingFlags(config).meridiem = config._meridiem; | |
| // handle meridiem | |
| config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); | |
| configFromArray(config); | |
| checkOverflow(config); | |
| } | |
| function meridiemFixWrap (locale, hour, meridiem) { | |
| var isPm; | |
| if (meridiem == null) { | |
| // nothing to do | |
| return hour; | |
| } | |
| if (locale.meridiemHour != null) { | |
| return locale.meridiemHour(hour, meridiem); | |
| } else if (locale.isPM != null) { | |
| // Fallback | |
| isPm = locale.isPM(meridiem); | |
| if (isPm && hour < 12) { | |
| hour += 12; | |
| } | |
| if (!isPm && hour === 12) { | |
| hour = 0; | |
| } | |
| return hour; | |
| } else { | |
| // this is not supposed to happen | |
| return hour; | |
| } | |
| } | |