| Index: pkg/intl/lib/src/intl/date_format_helpers.dart
|
| diff --git a/pkg/intl/lib/src/intl/date_format_helpers.dart b/pkg/intl/lib/src/intl/date_format_helpers.dart
|
| deleted file mode 100644
|
| index 1b42d89c48db2c1b58e29aa7ae6dcf532a3e9e7a..0000000000000000000000000000000000000000
|
| --- a/pkg/intl/lib/src/intl/date_format_helpers.dart
|
| +++ /dev/null
|
| @@ -1,196 +0,0 @@
|
| -// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -
|
| -part of intl;
|
| -
|
| -/**
|
| - * A class for holding onto the data for a date so that it can be built
|
| - * up incrementally.
|
| - */
|
| -class _DateBuilder {
|
| - // Default the date values to the EPOCH so that there's a valid date
|
| - // in case the format doesn't set them.
|
| - int year = 1970,
|
| - month = 1,
|
| - day = 1,
|
| - hour = 0,
|
| - minute = 0,
|
| - second = 0,
|
| - fractionalSecond = 0;
|
| - bool pm = false;
|
| - bool utc = false;
|
| -
|
| - // Functions that exist just to be closurized so we can pass them to a general
|
| - // method.
|
| - void setYear(x) { year = x; }
|
| - void setMonth(x) { month = x; }
|
| - void setDay(x) { day = x; }
|
| - void setHour(x) { hour = x; }
|
| - void setMinute(x) { minute = x; }
|
| - void setSecond(x) { second = x; }
|
| - void setFractionalSecond(x) { fractionalSecond = x; }
|
| -
|
| - get hour24 => pm ? hour + 12 : hour;
|
| -
|
| - /**
|
| - * Verify that we correspond to a valid date. This will reject out of
|
| - * range values, even if the DateTime constructor would accept them. An
|
| - * invalid message will result in throwing a [FormatException].
|
| - */
|
| - verify(String s) {
|
| - _verify(month, 1, 12, "month", s);
|
| - _verify(hour24, 0, 23, "hour", s);
|
| - _verify(minute, 0, 59, "minute", s);
|
| - _verify(second, 0, 59, "second", s);
|
| - _verify(fractionalSecond, 0, 999, "fractional second", s);
|
| - // Verifying the day is tricky, because it depends on the month. Create
|
| - // our resulting date and then verify that our values agree with it
|
| - // as an additional verification. And since we're doing that, also
|
| - // check the year, which we otherwise can't verify, and the hours,
|
| - // which will catch cases like "14:00:00 PM".
|
| - var date = asDate();
|
| - _verify(hour24, date.hour, date.hour, "hour", s);
|
| - _verify(day, date.day, date.day, "day", s);
|
| - _verify(year, date.year, date.year, "year", s);
|
| - }
|
| -
|
| - _verify(int value, int min, int max, String desc, String originalInput) {
|
| - if (value < min || value > max) {
|
| - throw new FormatException(
|
| - "Error parsing $originalInput, invalid $desc value: $value");
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * Return a date built using our values. If no date portion is set,
|
| - * use the "Epoch" of January 1, 1970.
|
| - */
|
| - DateTime asDate({retry: true}) {
|
| - // TODO(alanknight): Validate the date, especially for things which
|
| - // can crash the VM, e.g. large month values.
|
| - var result;
|
| - if (utc) {
|
| - result = new DateTime.utc(
|
| - year,
|
| - month,
|
| - day,
|
| - hour24,
|
| - minute,
|
| - second,
|
| - fractionalSecond);
|
| - } else {
|
| - result = new DateTime(
|
| - year,
|
| - month,
|
| - day,
|
| - hour24,
|
| - minute,
|
| - second,
|
| - fractionalSecond);
|
| - // TODO(alanknight): Issue 15560 means non-UTC dates occasionally come
|
| - // out in UTC. If that happens, retry once. This will always happen if
|
| - // the local time zone is UTC, but that's ok.
|
| - if (result.toUtc() == result) {
|
| - result = asDate(retry: false);
|
| - }
|
| - }
|
| - return result;
|
| - }
|
| -}
|
| -
|
| -/**
|
| - * A simple and not particularly general stream class to make parsing
|
| - * dates from strings simpler. It is general enough to operate on either
|
| - * lists or strings.
|
| - */
|
| -// TODO(alanknight): With the improvements to the collection libraries
|
| -// since this was written we might be able to get rid of it entirely
|
| -// in favor of e.g. aString.split('') giving us an iterable of one-character
|
| -// strings, or else make the implementation trivial. And consider renaming,
|
| -// as _Stream is now just confusing with the system Streams.
|
| -class _Stream {
|
| - var contents;
|
| - int index = 0;
|
| -
|
| - _Stream(this.contents);
|
| -
|
| - bool atEnd() => index >= contents.length;
|
| -
|
| - next() => contents[index++];
|
| -
|
| - /**
|
| - * Return the next [howMany] items, or as many as there are remaining.
|
| - * Advance the stream by that many positions.
|
| - */
|
| - read([howMany = 1]) {
|
| - var result = peek(howMany);
|
| - index += howMany;
|
| - return result;
|
| - }
|
| -
|
| - /**
|
| - * Does the input start with the given string, if we start from the
|
| - * current position.
|
| - */
|
| - bool startsWith(String pattern) {
|
| - if (contents is String) return contents.startsWith(pattern, index);
|
| - return pattern == peek(pattern.length);
|
| - }
|
| -
|
| - /**
|
| - * Return the next [howMany] items, or as many as there are remaining.
|
| - * Does not modify the stream position.
|
| - */
|
| - peek([howMany = 1]) {
|
| - var result;
|
| - if (contents is String) {
|
| - result = contents.substring(
|
| - index,
|
| - min(index + howMany, contents.length));
|
| - } else {
|
| - // Assume List
|
| - result = contents.sublist(index, index + howMany);
|
| - }
|
| - return result;
|
| - }
|
| -
|
| - /** Return the remaining contents of the stream */
|
| - rest() => peek(contents.length - index);
|
| -
|
| - /**
|
| - * Find the index of the first element for which [f] returns true.
|
| - * Advances the stream to that position.
|
| - */
|
| - int findIndex(Function f) {
|
| - while (!atEnd()) {
|
| - if (f(next())) return index - 1;
|
| - }
|
| - return null;
|
| - }
|
| -
|
| - /**
|
| - * Find the indexes of all the elements for which [f] returns true.
|
| - * Leaves the stream positioned at the end.
|
| - */
|
| - List findIndexes(Function f) {
|
| - var results = [];
|
| - while (!atEnd()) {
|
| - if (f(next())) results.add(index - 1);
|
| - }
|
| - return results;
|
| - }
|
| -
|
| - /**
|
| - * Assuming that the contents are characters, read as many digits as we
|
| - * can see and then return the corresponding integer. Advance the stream.
|
| - */
|
| - var digitMatcher = new RegExp(r'\d+');
|
| - int nextInteger() {
|
| - var string = digitMatcher.stringMatch(rest());
|
| - if (string == null || string.isEmpty) return null;
|
| - read(string.length);
|
| - return int.parse(string);
|
| - }
|
| -}
|
|
|