StepRange InputType::createStepRange(AnyStepHandling anyStepHandling, const Decimal& stepBaseDefault, const Decimal& minimumDefault, const Decimal& maximumDefault, const StepRange::StepDescription& stepDescription) const { const Decimal stepBase = findStepBase(stepBaseDefault); const Decimal minimum = parseToNumber(element().fastGetAttribute(minAttr), minimumDefault); const Decimal maximum = parseToNumber(element().fastGetAttribute(maxAttr), maximumDefault); const Decimal step = StepRange::parseStep(anyStepHandling, stepDescription, element().fastGetAttribute(stepAttr)); return StepRange(stepBase, minimum, maximum, step, stepDescription); }
StepRange WeekInputType::createStepRange(AnyStepHandling anyStepHandling) const { DEFINE_STATIC_LOCAL(const StepRange::StepDescription, stepDescription, (weekDefaultStep, weekDefaultStepBase, weekStepScaleFactor, StepRange::ParsedStepValueShouldBeInteger)); const Decimal stepBase = findStepBase(weekDefaultStepBase); const Decimal minimum = parseToNumber(element().fastGetAttribute(minAttr), Decimal::fromDouble(DateComponents::minimumWeek())); const Decimal maximum = parseToNumber(element().fastGetAttribute(maxAttr), Decimal::fromDouble(DateComponents::maximumWeek())); const Decimal step = StepRange::parseStep(anyStepHandling, stepDescription, element().fastGetAttribute(stepAttr)); return StepRange(stepBase, minimum, maximum, step, stepDescription); }
StepRange RangeInputType::createStepRange(AnyStepHandling anyStepHandling) const { DEFINE_STATIC_LOCAL(const StepRange::StepDescription, stepDescription, (rangeDefaultStep, rangeDefaultStepBase, rangeStepScaleFactor)); const Decimal stepBase = findStepBase(rangeDefaultStepBase); const Decimal minimum = parseToNumber(element().fastGetAttribute(minAttr), rangeDefaultMinimum); const Decimal maximum = ensureMaximum(parseToNumber(element().fastGetAttribute(maxAttr), rangeDefaultMaximum), minimum, rangeDefaultMaximum); const AtomicString& precisionValue = element().fastGetAttribute(precisionAttr); if (!precisionValue.isNull()) { const Decimal step = equalIgnoringCase(precisionValue, "float") ? Decimal::nan() : 1; return StepRange(stepBase, minimum, maximum, step, stepDescription); } const Decimal step = StepRange::parseStep(anyStepHandling, stepDescription, element().fastGetAttribute(stepAttr)); return StepRange(stepBase, minimum, maximum, step, stepDescription); }
StepRange InputType::createStepRange(AnyStepHandling anyStepHandling, const Decimal& stepBaseDefault, const Decimal& minimumDefault, const Decimal& maximumDefault, const StepRange::StepDescription& stepDescription) const { bool hasRangeLimitations = false; const Decimal stepBase = findStepBase(stepBaseDefault); Decimal minimum = parseToNumberOrNaN(element().fastGetAttribute(minAttr)); if (minimum.isFinite()) hasRangeLimitations = true; else minimum = minimumDefault; Decimal maximum = parseToNumberOrNaN(element().fastGetAttribute(maxAttr)); if (maximum.isFinite()) hasRangeLimitations = true; else maximum = maximumDefault; const Decimal step = StepRange::parseStep(anyStepHandling, stepDescription, element().fastGetAttribute(stepAttr)); return StepRange(stepBase, minimum, maximum, hasRangeLimitations, step, stepDescription); }
StepRange RangeInputType::createStepRange( AnyStepHandling anyStepHandling) const { DEFINE_STATIC_LOCAL( const StepRange::StepDescription, stepDescription, (rangeDefaultStep, rangeDefaultStepBase, rangeStepScaleFactor)); const Decimal stepBase = findStepBase(rangeDefaultStepBase); const Decimal minimum = parseToNumber(element().fastGetAttribute(minAttr), rangeDefaultMinimum); const Decimal maximum = ensureMaximum( parseToNumber(element().fastGetAttribute(maxAttr), rangeDefaultMaximum), minimum, rangeDefaultMaximum); const Decimal step = StepRange::parseStep( anyStepHandling, stepDescription, element().fastGetAttribute(stepAttr)); // Range type always has range limitations because it has default // minimum/maximum. // https://html.spec.whatwg.org/multipage/forms.html#range-state-(type=range):concept-input-min-default const bool hasRangeLimitations = true; return StepRange(stepBase, minimum, maximum, hasRangeLimitations, step, stepDescription); }