p-hatan/ mirror

pub repository

mirror.p-hatan.com

intl

0.12.3

Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional text, and other internationalization issues.

Download archive

Readme

Intl

This package provides internationalization and localization facilities, including message translation, plurals and genders, date/number formatting and parsing, and bidirectional text.

General

The most important library is intl. It defines the Intl class, with the default locale and methods for accessing most of the internationalization mechanisms. This library also defines the DateFormat, NumberFormat, and BidiFormatter classes.

Current locale

The package has a single current locale, called defaultLocale. Operations will use that locale unless told to do otherwise.

You can explicitly set the global locale

  Intl.defaultLocale = 'pt_BR';

or get it from the browser

  import "package:intl/intl_browser.dart";
  ...
  findSystemLocale().then(runTheRestOfMyProgram);

To override the current locale for a particular operation, pass the operation to withLocale. Note that this includes async tasks spawned from that operation, and that the argument to withLocale will supercede the defaultLocale while the operation is active. If you are using different locales within an application, the withLocale operation may be preferable to setting defaultLocale.

  Intl.withLocale('fr', () => print(myLocalizedMessage());

To specify the locale for an operation you can create a format object in a specific locale, or pass in the locale as a parameter to methods.

  var format = new DateFormat.yMd("ar");
  var dateString = format.format(new DateTime.now());
  print(myMessage(dateString, locale: 'ar');

Initialization

All the different types of locale data require an async initialization step to make sure the data is available. This reduces the size of the application by only loading the data that is actually required.

Each different area of internationalization (messages, dates, numbers) requires a separate initialization process. That way, if the application only needs to format dates, it doesn't need to take the time or space to load up messages, numbers, or other things it may not need.

With messages, there is also a need to import a file that won't exist until the code generation step has been run. This can be awkward, but can be worked around by creating a stub messages_all.dart file, running an empty translation step, or commenting out the import until translations are available. See "Extracting and Using Translated Messages"

Messages

Messages to be localized are written as functions that return the result of an Intl.message call.

  String continueMessage() => Intl.message(
      "Hit any key to continue",
      name: "continueMessage",
      args: [],
      desc: "Explains that we will not proceed further until "
          "the user presses a key");
  print(continueMessage());

This provides, in addition to the basic message string, a name, a description for translators, the arguments used in the message, and examples. The name and args parameters are required, and must match the name and arguments list of the function. In the future we hope to have these provided automatically.

This can be run in the program before any translation has been done, and will just return the message string. It can also be extracted to a file and then be made to return a translated version without modifying the original program. See "Extracting Messages" below for more details.

The purpose of wrapping the message in a function is to allow it to have parameters which can be used in the result. The message string is allowed to use a restricted form of Dart string interpolation, where only the function's parameters can be used, and only in simple expressions. Local variables cannot be used, and neither can expressions with curly braces. Only the message string can have interpolation. The name, desc, args, and examples must be literals and not contain interpolations. Only the args parameter can refer to variables, and it should list exactly the function parameters. If you are passing numbers or dates and you want them formatted, you must do the formatting outside the function and pass the formatted string into the message.

  greetingMessage(name) => Intl.message(
      "Hello $name!",
      name: "greetingMessage",
      args: [name],
      desc: "Greet the user as they first open the application",
      examples: {'name': "Emily"});
  print(greetingMessage('Dan'));

There is one special class of complex expressions allowed in the message string, for plurals and genders.

  remainingEmailsMessage(int howMany, String userName) => 
    Intl.message(
      "${Intl.plural(howMany,
          zero: 'There are no emails left for $userName.',
          one: 'There is one email left for $userName.',
          other: 'There are $howMany emails left for $userName.')}",
    name: "remainingEmailsMessage",
    args: [howMany, userName],
    desc: "How many emails remain after archiving.",
    examples: {'howMany': 42, 'userName': 'Fred'});

  print(remainingEmailsMessage(1, "Fred"));

However, since the typical usage for a plural or gender is for it to be at the top-level, we can also omit the Intl.message call and provide its parameters to the Intl.plural call instead.

  remainingEmailsMessage(int howMany, String userName) => 
    Intl.plural(
      howMany,
      zero: 'There are no emails left for $userName.',
      one: 'There is one email left for $userName.',
      other: 'There are $howMany emails left for $userName.'),
      name: "remainingEmailsMessage",
      args: [howMany, userName],
      desc: "How many emails remain after archiving.",
      examples: {'howMany': 42, 'userName': 'Fred'});

Similarly, there is an Intl.gender message, and plurals and genders can be nested.

  notOnlineMessage(String userName, String userGender) => 
    Intl.gender(
      userGender,
      male: '$userName is unavailable because he is not online.',
      female: '$userName is unavailable because she is not online.',
      other: '$userName is unavailable because they are not online'),
      name: "notOnlineMessage",
      args: [userName, userGender],
      desc: "The user is not available to hangout.",
      examples: {{'userGender': 'male', 'userName': 'Fred'},
          {'userGender': 'female', 'userName' : 'Alice'}});

It's recommended to use complete sentences in the sub-messages to keep the structure as simple as possible for the translators.

Extracting And Using Translated Messages

When your program contains messages that need translation, these must be extracted from the program source, sent to human translators, and the results need to be incorporated.

To extract messages, run the extract_to_arb.dart program.

  pub run intl:extract_to_arb --output-dir=target/directory
      my_program.dart more_of_my_program.dart

This will produce a file intl_messages.arb with the messages from all of these programs. an [ARB] (https://code.google.com/p/arb/wiki/ApplicationResourceBundleSpecification) format file which can be used for input to translation tools like Google Translator Toolkit The resulting translations can be used to generate a set of libraries using the generate_from_arb.dart program.

This expects to receive a series of files, one per locale.

  pub run intl:generate_from_arb --generated_file_prefix=<prefix> 
      <my_dart_files> <translated_ARB_files>

This will generate Dart libraries, one per locale, which contain the translated versions. Your Dart libraries can import the primary file, named <prefix>messages_all.dart, and then call the initialization for a specific locale. Once that's done, any Intl.message calls made in the context of that locale will automatically print the translated version instead of the original.

  import "my_prefix_messages_all.dart";
  ...
  initializeMessages("dk").then(printSomeMessages);

Once the future returned from the initialization call returns, the message data is available.

Number Formatting and Parsing

To format a number, create a NumberFormat instance.

  var f = new NumberFormat("###.0#", "en_US");
  print(f.format(12.345));
    ==> 12.34

The locale parameter is optional. If omitted, then it will use the current locale. The format string is as described in NumberFormat

It's also possible to access the number symbol data for the current locale, which provides information as to the various separator characters, patterns, and other information used for formatting, as

  f.symbols

Current known limitations are that the currency format will only print the name of the currency, and does not support currency symbols, and that the scientific format does not really agree with scientific notation. Number parsing is not yet implemented.

Note that before doing any number formatting for a particular locale you must load the appropriate data by calling

  import 'package:intl/number_symbols_data_local.dart';
  ...
  initializeNumberFormatting(localeName, null).then(formatNumbers);

Once the future returned from the initialization call returns, the formatting data is available. Note that right now this includes all the data for a locales. We expect to make this use deferred loading to reduce code size.

Date Formatting and Parsing

To format a DateTime, create a DateFormat instance. These can be created using a set of commonly used skeletons taken from ICU/CLDR or using an explicit pattern. For details on the supported skeletons and patterns see DateFormat.

  new DateFormat.yMMMMEEEEd().format(aDateTime);
    ==> 'Wednesday, January 10, 2012'
  new DateFormat("EEEEE", "en_US").format(aDateTime);
    ==> 'Wednesday'
  new DateFormat("EEEEE", "ln").format(aDateTime);
    ==> 'mokɔlɔ mwa mísáto'

You can also parse dates using the same skeletons or patterns.

    new DateFormat.yMd("en_US").parse("1/10/2012");
    new DateFormat("Hms", "en_US").parse('14:23:01');

Skeletons can be combined, the main use being to print a full date and time, e.g.

    new DateFormat.yMEd().add_jms().format(new DateTime.now());
      ==> 'Thu, 5/23/2013 10:21:47 AM'

Known limitations: Time zones are not yet supported. Dart DateTime objects don't have a time zone, so are either local or UTC. Formatting and parsing Durations is not yet implemented.

Note that before doing any DateTime formatting for a particular locale, you must load the appropriate data by calling.

    import 'package:intl/date_symbol_data_local.dart';
    ...
    initializeDateFormatting("de_DE", null).then(formatDates);

Once the future returned from the initialization call returns, the formatting data is available.

There are other mechanisms for loading the date formatting data implemented, but we expect to deprecate those in favor of having the data in a library as in the above, and using deferred loading to only load the portions that are needed. For the time being, this will include all of the data, which will increase code size.

Bidirectional Text

The class BidiFormatter provides utilities for working with Bidirectional text. We can wrap the string with unicode directional indicator characters or with an HTML span to indicate direction. The direction can be specified with the RTL and LTR constructors, or detected from the text.

    new BidiFormatter.RTL().wrapWithUnicode('xyz');
    new BidiFormatter.RTL().wrapWithSpan('xyz');
Changelog

0.12.3

  • Use latest version of 'analyzer' and 'args' packages.

0.12.2+1

  • Adds a special locale name "fallback" in verifiedLocale. So if a translation is provided for that locale and has been initialized, anything that doesn't find a closer match will use that locale. This can be used instead of having it default to the text in the original source messages.

0.12.1

  • Adds a DateFormat.parseLoose that accepts mixed case and missing delimiters when parsing dates. It also allows arbitrary amounts of whitespace anywhere that whitespace is expected. So, for example, in en-US locale a yMMMd format would accept "SEP 3 2014", even though it would generate "Sep 3, 2014". This is fairly limited, and its reliability in other locales is not known.

0.12.0+3

  • Update pubspec dependencies to allow analyzer version 23.

0.12.0+2

  • No user impacting changes. Tighten up a couple method signatures to specify that int is required.

0.12.0+1

  • Fixes bug with printing a percent or permille format with no fraction part and a number with no integer part. For example, print 0.12 with a format pattern of "#%". The test for whether there was a printable integer part tested the basic number, so it ignored the integer digits. This was introduced in 0.11.2 when we stopped multiplying the input number in the percent/permille case.

0.12.0

  • Make withLocale and defaultLocale use a zone, so async operations inside withLocale also get the correct locale. Bumping the version as this might be considered breaking, or at least behavior-changing.

0.11.12

  • Number formatting now accepts "int-like" inputs that don't have to conform to the num interface. In particular, you can now pass an Int64 from the fixnum package and format it. In addition, this no longer multiplies the result, so it won't lose precision on a few additional cases in JS.

0.11.11

  • Add a -no-embedded-plurals flag to reject plurals and genders that have either leading or trailing text around them. This follows the ICU recommendation that a plural or gender should contain the entire phrase/sentence, not just part of it.

0.11.10

  • Fix some style glitches with naming. The only publicly visible one is DateFormat.parseUtc, but the parseUTC variant is still retained for backward-compatibility.

  • Provide a better error message when generating translated versions and the name of a variable substitution in the message doesn't match the name in the translation.

0.11.9

  • Fix bug with per-mille parsing (only divided by 100, not 1000)

  • Support percent and per-mille formats with both positive and negative variations. Previously would throw an exception for too many modifiers.

0.11.8

  • Support NumberFormats with two different grouping sizes, e.g. 1,23,45,67,890

0.11.7

  • Moved petitparser into a regular dependency so pub run works.

  • Improved code layout of the package.

  • Added a DateFormat.parseStrict method that rejects DateTimes with invalid values and requires it to be the whole string.

0.11.6

  • Catch analyzer errors and do not generate messages for that file. Previously this would stop the message extraction on syntax errors and not give error messages as good as the compiler would produce. Just let the compiler do it.

0.11.5

  • Change to work with both petitparser 1.1.x and 1.2.x versions.

0.11.4

  • Broaden the pubspec constraints to allow current analyzer versions.

0.11.3

  • Add a --[no]-use-deferred-loading flag to generate_from_arb.dart and generally make the deferred loading of message libraries optional.

0.11.2

  • Missed canonicalization of locales in one place in message library generation.

  • Added a simple debug script for message_extraction_test.

0.11.1

  • Negative numbers were being parsed as positive.

0.11.0

0.10.0

  • Make message catalogs use deferred loading.

  • Update CLDR Data to version 25 for dates and numbers.

  • Update analyzer dependency to allow later versions.

  • Adds workaround for flakiness in DateTime creation, removes debugging code associated with that.

0.9.9

  • Add NumberFormat.parse()

  • Allow NumberFormat constructor to take an optional currency name/symbol, so you can format for a particular locale without it dictating the currency, and also supply the currency symbols which we don't have yet.

  • Canonicalize locales more consistently, avoiding a number of problems if you use a non-canonical form.

  • For locales whose length is longer than 6 change "-" to "_" in position 3 when canonicalizing. Previously anything of length > 6 was left completely alone.

0.9.8

  • Add a "meaning" optional parameter for Intl.message to distinguish between two messages with identical text.

  • Handle two different messages with the same text.

  • Allow complex string literals in arguments (e.g. multi-line)

Installing

export PUB_HOSTED_URL=https://pub.mirror.p-hatan.com
flutter pub add intl
pubspec.yaml
name: intl
version: 0.12.3
author: Dart Team <misc@dartlang.org>
description: Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional text, and other internationalization issues.
homepage: https://github.com/dart-lang/intl
environment:
  sdk: '>=1.4.0 <2.0.0'
documentation: http://www.dartdocs.org/documentation/intl/latest
dependencies:
  analyzer: '>=0.13.2 <0.26.0'
  args: '>=0.12.1 <0.14.0'
  path: '>=0.9.0 <2.0.0'
  petitparser: '>=1.1.3 <2.0.0'
dev_dependencies:
  fixnum: '>=0.9.0 <0.10.0'
  unittest: '>=0.10.0 <0.12.0'
transformers:
- $dart2js:
    $exclude:
    - test/date_time_format_file_even_test.dart
    - test/date_time_format_file_odd_test.dart
    - test/find_default_locale_standalone_test.dart
    - test/message_extraction/embedded_plural_text_after_test.dart
    - test/message_extraction/embedded_plural_text_before_test.dart
    - test/message_extraction/examples_parsing_test.dart
    - test/message_extraction/failed_extraction_test.dart
    - test/message_extraction/make_hardcoded_translation.dart
    - test/message_extraction/message_extraction_no_deferred_test.dart
    - test/message_extraction/message_extraction_test.dart
    - test/message_extraction/really_fail_extraction_test.dart
    - test/intl_message_basic_example_test.dart # invalid import under pub's package-layout

Version history

VersionPublishedArchiveSHA-256
0.2.72012-11-30T21:19:19.570290ZDownload5f319b26e157bb43dd45cb881c73ff0d86352ea9425e52155c59a8b7f9ab7021
0.2.8+22012-12-11T21:38:15.817890ZDownload30d115d51e31c3be7a1100bf8183fbfd1f3e68cae4ff32c9b67f6b8852f5c2a4
0.2.9+72012-12-18T18:01:19.415470ZDownload04b32e80755221b16a0c257dae149b4850afd0d22295e0d000f0c5d5cf4efa66
0.2.10+12013-01-09T01:29:21.767710ZDownload08ce8a695c3661c1bfe0b1e808029b559955bc033c68fad3093f17632150f7d0
0.3.1+12013-01-22T22:01:50.124830ZDownloadc2e2adec9d1132dac9656dcdeb5681ed969650a0367339c005bfe2faec921297
0.3.22013-01-28T20:39:33.821660ZDownload5524fc36adc1d70c48739d6ef53ff4e6197330f6a3346e0e3817ca83b807ac48
0.3.42013-02-05T16:59:59.412570ZDownloadf55533b26533c6df1ff1a11e6f5a91fc5eefecbbf60a0eca1a54c16c48a2ff04
0.3.5+12013-02-11T19:57:33.907630ZDownloada058fd656677954e4f2ad8cb4385d0b13249de288cefea9a0a3b10ab34d365d6
0.3.7+62013-02-20T20:46:04.415610ZDownload1090f69ee7c3e486c3f38997040242790beb88cef5dacbed2284bffb659af9e1
0.4.02013-02-25T18:47:30.583290ZDownloadd4f32af15b5d218af26dabef1a36e51e4bf5f1a369e74b318eaeb46df2021025
0.4.12013-03-05T19:04:44.195260ZDownload4ff09c3685dfe7c4ff8805f6ae4b9ea89e662d0fda7641fd8fb5f977522ab63d
0.4.22013-03-16T00:13:53.988450ZDownload023dbf3efb2f6c3dad446790148d0eafa2449ee00027a7f1504379eace7c886b
0.4.3+12013-03-25T19:53:15.493040ZDownload3c214be43f18717e5349d0b022e9f72c484ac4dc476d319062c7cda77a71459d
0.4.4+42013-04-03T17:56:54.081970ZDownload48f57bfdc244d8d3bba0650003c12cce9e1828799b33a2a11021152776bbd117
0.4.5+12013-04-08T23:13:49.637940ZDownloada0ea6f2df81e77db5d6ed08fd5095e3a48fc1c6ef73634b88b536d43475b212f
0.4.7+12013-04-16T15:42:29.658530ZDownloadcb19d96470c3bebe33b57fa3c0393d419b12f73b9ffabca73fc5f327cb963b32
0.5.0+12013-04-23T00:51:04.233620ZDownload9126337d2fe1410735fe60c1e696c51efaa24e62643e5fa7b00ec49b8d30400e
0.5.12013-04-29T18:52:30.652860ZDownload5986eaf4bd9ce0cc7502008225161196ba9139e60e45f1689f23bf1fbee27255
0.5.42013-05-03T16:42:31.116760ZDownload661892fb54c30a380b8539fda902e946577726658c20cc791fc342140958a3fc
0.5.52013-05-06T19:18:54.632840ZDownloadcf3c5d0f27f2e017a35d0f35ad270ee3dcd48635e0108ce98e723965874758d7
0.5.62013-05-08T16:40:01.008500ZDownload409225d89bd799a2b5454454a7a7be93d0f1efaf2f76e53cf6e9be69aec9cf5b
0.5.72013-05-10T05:06:09.623740ZDownload9e731e29e682988765ff6c6e7de28cc6513c3e9b31f34a726ecb8e0832214236
0.5.92013-05-20T15:45:01.246110ZDownload12c7a078e3bd7fca66d56299a76fd3c71372838c10dc619a88a636d8eabc0044
0.5.11+12013-05-29T00:09:32.589650ZDownloadea98c763d9aa5c95eb2189f754196dac7aa2c429ca106b313d269830b16b077a
0.5.122013-05-29T18:31:38.923080ZDownload0f3966b7b8445d91c8836d7b95d7db2a6341ef94ba5634f5686cbb05953d2991
0.5.132013-06-03T16:05:14.362910ZDownload571565dadab98ab93165d73bddfe131d80f408f456579f4d0da782744eac27bd
0.5.14+12013-06-05T15:05:11.689880ZDownload19f94a4994851ba76699a3a6ffa0502981790accc0cffad284388ab9ebea246d
0.5.14+32013-06-06T16:37:09.588100ZDownload8c478afc3e7a87c2c10583e95f6fd7716c1310875fb9183c5540f2f87685f740
0.5.152013-06-07T23:00:38.172830ZDownload5f1bc2c6b3e430f39f5d91c6e5662119413d3ada19cc59507081fff03ac184d0
0.5.162013-06-10T16:36:17.281480ZDownloadb67bd7338ed435450f36db77791a4997b8d0e3d5d6d776f1a2db133f2e1cdcbb
0.5.172013-06-12T17:53:03.277750ZDownload5d2964fa19494b27dcd7712654139b749bacac9c0894d87618d1b8d85ac69ae7
0.5.202013-06-17T22:08:16.281070ZDownload71393125a672a3e61d67200c9102c02ccef6f40c041d5aa2813fe88dbbffdc2f
0.6.12013-06-27T19:32:05.116710ZDownloadc7a30aacddd17fbca8b45dda90a1bdc77453140d38a2dd94a63574c95530500d
0.6.22013-06-28T20:55:40.108830ZDownload7fd11deb61e70fc68119aa3aec1b00b084770e944a964163e1cd19ca06a336dd
0.6.3+12013-07-09T00:23:50.379870ZDownloada72fc6cfdb0c9f30935ed9d745c74269a3c7f1365f6e967cb7f423c640579f20
0.6.52013-07-16T00:19:08.457720ZDownloadfc8c055db9db9fe80b8cd2811107c869aca865b999915fc898257f29b62b0b78
0.6.62013-07-17T19:40:26.271430ZDownload5d15b06afa76fa2258ed953b2f4f109059405de38328b87e536d0d7db2a1b32e
0.6.82013-07-19T20:55:16.616690ZDownload12b57ad7cf8fadbcf659ec6274602cf0ddc41ca356460990a481d624efde0368
0.6.92013-07-22T15:13:18.584720ZDownload2e63ba9a4305adbb5965ab094053fbf9d0439342e9d3dfe170a366049cebab07
0.6.9+22013-07-24T03:58:22.227530ZDownloadb948b6e3cf23528dc863767bc71407d8e3b6e7455918e7f504c912a3455bb981
0.6.112013-07-25T05:09:32.352880ZDownload9da90c2eb0283cca7a822151393d192c08e1ca33b890e43dbd5cb2cb46da9afd
0.6.122013-07-26T20:05:50.648170ZDownload1c2b551d9098c1a0325c4d5c7013183a118df76a711cb122c493c457940aa383
0.6.132013-07-30T21:55:36.918620ZDownload412fdf99568c1f9ceba0722ac48c356526627273830ab1b38697e11cc8a88d55
0.6.142013-08-02T16:24:14.061280ZDownload70fe45472e32478b181c2c1b5b3cc4e0668353fa918bdb6fac4c675e4e64c209
0.6.15+22013-08-05T22:48:40.361780ZDownload1bd35db589800cd99782083536cff8f2e92ee3c7ae970d1881ff2091e2c59662
0.6.15+32013-08-06T20:12:48.448530ZDownloadd6f4b03c1474266a2059f7df6054f2e149d3af12b60197579b1973fe45b1c205
0.6.172013-08-10T17:35:12.207390ZDownloaddc910c01184695d740c4c38d2c20f5de53614bfb07e52a05c741a460182d93a5
0.6.17+22013-08-12T22:21:07.940590ZDownload75ec7ca9d511a22da9bf04e1f2b09d14c3c8d2d8427b2c65c8e409e630b64aeb
0.6.192013-08-19T16:09:55.811340ZDownloadd0f78bb225ea3ededeb65938c38ef58fd8a564bd659170ef9c72a80e9abe292a
0.6.20+12013-08-22T18:18:58.494070ZDownload4804d451137716884098f42d725b604e2a29805dd13d3890bed2f25b8e2e3367
0.6.21+32013-08-26T17:42:14.706980ZDownload10d97f72df88a29dba870b5c923b50baf583b1beb8b8b4a8ff2243d4f1eea1fc
0.7.02013-08-28T19:28:45.516980ZDownload4ab0f37db856fb9b6c6fc96087c87db746a112b7a50f425059217faa33690f95
0.7.12013-09-03T15:49:52.270390ZDownload248aedf5312825cb9cdd47b85eb1d087ef725af22e0d6e1ddb62b22c10d1af36
0.7.22013-09-06T15:50:43.188040ZDownloade0a1839aeaf4141ebe5bccd93bfd90a424aa604d4d78433abdf2e92134ae37a4
0.7.2+12013-09-08T15:46:06.463940ZDownload78b277e00574cddf7b972e284b8b255a8e649245279ef0faf5ffb078d8285cb1
0.7.3+12013-09-16T15:43:08.102750ZDownloadef2757922bd8deab2e89e95194be71140dad7c5356f827ce5696e074112c325d
0.7.42013-09-18T03:03:21.764600ZDownloadf07fde350a936b04a8b8414bf4e817a5e8a9c222365387de7d0873999bdee1ac
0.7.52013-09-20T23:22:22.972480ZDownloadca4a7c0aa09a6b75591b3bb7363345c7bd18e0877c8a4e45fbeeaf68d1889ba3
0.7.62013-09-27T14:56:07.534880ZDownload852568b62b6c18d8e620c86fd96bcb5b0bf9bcffd6ae8976785ce4f842d38de8
0.7.6+42013-10-01T23:47:33.270380ZDownload7d9186fa4a7468649f4b71a44056641b720f5d3e4657580cfb9cc3e5ee00c30f
0.8.02013-10-03T16:26:28.535860ZDownload90f2a4cce5ad7de9961bd4896b96e538adae01d712208e5159c577c96b71c188
0.8.12013-10-04T21:53:40.598050ZDownload17c0ed8bde59a72be7ce601339ba5b3c5aca5ef5c2e0664a02602188944d09a1
0.8.22013-10-14T21:40:51.217600ZDownload2de9f3d585ddfb62f5871b8a2f751458355833d2706bbade3557773f5a11d5e3
0.8.32013-10-17T15:59:49.265930ZDownload4bdfd6f20483777888b494a1e98924cb562a1e5360e3cba8c43d5405ddca56e1
0.8.42013-10-19T21:08:16.638020ZDownload977f164e69e2b2e122c724602911e54a349afd075aa9aef9d6537f5861279828
0.8.52013-10-21T15:49:55.666430ZDownload9dde3d71fab89c9f3127968ba4d72e0d879257362e150dc9e4f755eaa817cc50
0.8.62013-10-24T08:18:03.569400ZDownload6b34d53d8fd8f79d85e2fceaa7e9e66a55605e8182b073034fa94526fdbfcee1
0.8.72013-10-28T14:29:51.512860ZDownload42bb1d7191b99852f759ce43a80fb78c7f29acd1ec21fa308d64a61dd106f9d9
0.8.82013-10-30T03:29:01.550630ZDownload3610a56d91700b93dd0b6db5ffd7b1092fc8ef8d4c504c114bba515d5c4396e8
0.8.92013-10-31T15:15:25.387910ZDownload13b52c417c3a1c64b0b8a988459a1702f4986d6fbb64a0a1fc9fe1696d549db3
0.8.102013-11-01T19:22:50.089440ZDownloadbc3ae5dc73136adfb0c529ddd6ed1ddad2b54be90d9862bbe50720425b0f5a81
0.8.10+32013-11-04T16:48:30.438310ZDownloadf51df23da47a15761088d15bd2c85d1a42bd3ad1eafdaa4e99e80b4af752c776
0.8.10+42013-11-05T16:04:20.902570ZDownloadc251cbf052e83f160902de8bebf9ba5f7d0fd535a72a2ca3950fff3995f5b155
0.9.02013-11-06T19:30:52.719730ZDownload46e65fb9382337eda83f842e3db09e68322a7af6d0ff4e39d96c900a68589509
0.9.12013-12-10T00:28:40.729600ZDownloadc7dfc4ecd604551bf950c0fe3c5e8dfbbcb317a0d4cc8c69ae26eaca95d9093a
0.9.22014-01-06T22:30:06.231820ZDownloadc8f404c3841ba3c8fbe71fe2413810d32c149275b38fe07fdeb03aa65f5fd4f6
0.9.32014-01-06T23:40:21.020790ZDownloadc160a85d5244a1de3fbd469496b085c0910e711dcadaecf07e82bdd85cfc151b
0.9.42014-01-13T18:34:04.441770ZDownloadc59c3c6666e2ad1ca4f24c190d3488cc2e150def7f09f19d50f480eb0d35855f
0.9.52014-02-20T18:29:33.883930ZDownloadd07f33f9634b142162c555d4e9aa4d2a846ec2d9b31763c5ac41a50dd0cbe4a3
0.9.62014-02-25T20:27:55.804350ZDownloadc3c0f1655ef6ed98f558b74c736ee1e027786db2288dab2dab49bbd61a2caa18
0.9.72014-03-04T21:05:57.622150ZDownload073c41ab83ad330e8215dfa0b624130ebf54559aa25407e75d07eaead0ecf1f3
0.9.82014-03-31T23:11:36.238760ZDownloadb4e630962c36902b580fde30f673b7c2fe609990c8eb8bbb589b8f8b8e919265
0.9.92014-05-09T21:26:39.520810ZDownload99dd6423d62b5b9c6f6f4ce457c7b03f0a28bf9a44cad79948d8d2355359b0c0
0.9.102014-06-13T19:32:23.003790ZDownloada193062f0b0388e6e467f042222f0094b6f494a94239a5f3ae20b2487bfff1d1
0.10.02014-07-01T18:06:49.167760ZDownload45c65765ddccdd561ac7101550af51fb4cdeef45db717fd44cf87a55bcd38966
0.11.02014-07-02T17:03:18.619700ZDownloade5390d4e99b39eddab7a8ea81b1dcc2a2e664edbf3d7abdcffaf0134ae85cbbe
0.11.12014-07-08T17:50:12.842040ZDownload15fd3e74f10ee5a75086c847e5ac93c157d72aed8b295f8b7562d3ed25fc7672
0.11.22014-07-09T23:09:15.033700ZDownloadfe39259f5b591119ea8d94725efef7ad8711fa66508f01a4186927885251af1e
0.11.32014-07-24T21:48:06.716690ZDownload5df7fe0865380e3197b606c81026f014d4181d592cb7af3ea82562a1447874c1
0.11.42014-07-31T18:21:29.887790ZDownload019027238cf1413424a6ad1f126a19acbcc100989c83a0af8e24e461414f959a
0.11.52014-08-22T17:47:31.172840ZDownload8222d5c8042dd25c43db89228dbd3c35137bd4c50555e921cdbddf359522372f
0.11.62014-08-26T20:48:12.403430ZDownload82e5bb1d8a0ef44afe53675a399fa1543ab46fb2355ea3223e3f47d568e405d2
0.11.72014-09-10T00:07:27.185100ZDownload9ba5214222fedb488c8c40f03a359ea855e31f5114819ba251b729f00c0b8610
0.11.82014-09-23T17:47:15.179380ZDownload67d3d5fbcec96f398a91a38a38aba62aeb8b72401f62e9c8186f4fd511ad1fbd
0.11.92014-09-26T20:20:21.974770ZDownload47fd850faf969216655ba4e79d63b11b7ce449fba29285d9d2a671e0c8747efe
0.11.102014-11-13T17:14:36.692340ZDownload009f3099488853e4e36ad0f7a13dcfba04c4683cda1f06ee238ac68c3fe8c70d
0.11.112014-12-02T21:55:27.075940ZDownload9182fe65d26a5632eaa211c72279f11ca30a4e77abc3e56dec3f22fc9e75578b
0.11.122014-12-16T23:16:38.527110ZDownload1cd0e7aee40bd3de6e47d9ec698bb6f64bbec16906c4cdd4f2e0442e3803ab89
0.12.02015-01-03T00:40:00.745770ZDownload481dd31438bada379069526148f95e282ef6e2aa69b0a1ebd13929bdfc3528ef
0.12.0+12015-01-07T00:59:29.511820ZDownload5db224f96cffdb8642cd5f279f30635e6111f11d9909a08fbdb71753340f4217
0.12.0+22015-01-27T23:41:55.227730ZDownload3576e3aeeec83e300a71561e42baff30027e7740a356f29ceab0102fb97a79f2
0.12.0+32015-02-04T19:07:27.564490ZDownloada28189392fa2a9165c0dd50f47bc4a389e1bebcdeb749a51955478b72d5c7d8c
0.12.12015-03-16T23:29:05.031110ZDownloadd824b6bb503d4f9e761948a607f4c0e2eb9e33a126ddb91900e3ba7a81b2fdaf
0.12.22015-03-23T23:08:41.799390ZDownload05f50a126bbe5d62c5e2f8e191f24625f5b19784fcd8c971628af85ef959c0d2
0.12.2+12015-04-27T17:57:50.960820ZDownloadc6c5e8f2c4fb607af0567bbd32a9f0fbdb896fb3f34c3e9d5905a1a2a13ab1ca
0.12.32015-05-04T20:12:28.704620ZDownload3f389d3715eb6ade3c975cfa7790a766fd55251988dc67c2f4452c138a9e01c5
0.12.42015-05-21T20:30:32.533ZDownloade14b8729fa0a47fab6c81bc6dda75270a6b84344772365868ab65950ba8b7b11
0.12.4+12015-07-23T19:35:04.516ZDownload74cd3b30a28cb5b29e3ef9f68ddd53ed35e008027306446212a617fcbd4e479d
0.12.4+22015-08-19T23:43:51.410ZDownload95e5020b060476f7d8c11abaf61ddb64f0fa9d2d48a61632df4fe6f5c1841316
0.12.4+32015-12-10T01:36:40.976ZDownload9da363026641b02c89b6267d07c4f39f2d4403c7fb511568989f04d59c638934
0.12.5-dev2015-12-10T01:34:39.569ZDownload7e082d0c97579445288b5e74783dbbfd04311c38ee0a49569ea00a3b8e455853
0.12.52015-12-17T18:56:59.475ZDownload8ed5b824df2a64b0369151344472d1b25bed4ad91b7daee497c3f27330e2d690
0.12.62016-01-15T01:00:07.111ZDownload9bcee98e83b6881454e7699fcf5383b3d19e668bd347f8054f80989cc8f41bf7
0.12.72016-02-10T01:03:45.976ZDownloadf33a233e85cf28ebb175464c0c58fa39b8da1d2a10ed7b4b1579b7cef17e11a0
0.12.7+12016-04-11T23:53:15.769ZDownloadf56eea5ae4f1164e23a642d7a8c8cd586ecf1ca58d2ac214e9cc8fa0a7c7eadd
0.13.02016-05-20T22:54:30.856ZDownloadf226a778a2137f5f172233b2648df214d3fa4e6ed99eaf1f1d503970b075722c
0.13.12016-08-31T19:25:57.327ZDownload7f64a4f32fb698221ffe0d3feb936f5377c6384eeb65bf411e7575fc2b99ab2d
0.14.02016-09-02T23:12:49.275ZDownloadd68476ce0b99bc44f724d937e31dedf505f6627be3a73d1d67593dad08144ac3
0.15.02017-03-28T19:54:15.096208ZDownloadb5bd9eecf789d72353d9463713d883c27aedf0c925fc85d61c32d8f8a8e0612a
0.15.12017-06-15T23:41:27.638295ZDownloadaf553a9ce11d4ffe0d5b4eee5faea8be70d6e458a34e26239c26c9a5f78080b5
0.15.22017-10-19T18:42:29.664850ZDownload18740ddf7e1fed87e6e2082d7ac9e1928472056ff045c26cac221f37c188b062
0.15.32018-03-20T18:26:53.836368ZDownloadcec2a6ba480134e30801d1a034bdb631b2d4eb4dacbf6b46b17c5b0ba24d5c61
0.15.42018-03-21T00:50:43.271185ZDownloada8c6649da11da654fe97560d602bf1a06ab67a8b969583a5ff6ab73d98ebeea4
0.15.52018-04-10T20:44:04.581776ZDownload8c707127c59f9c7eb9e43120e64592c4adb795136a0899bce63201518a018042
0.15.62018-04-11T21:27:04.496232ZDownload6feeaa64ba821d4c375659e7ab7cfa48e8a563eaf65d8eef1b5708d62d2790fa
0.15.72018-07-17T17:24:53.608608ZDownload7ced2f0af123ddae5823b8de8dd8119d9b1c376dea42b839cbe2eb85aab6adc4
0.15.82019-03-22T17:56:57.865516ZDownloade8563d2ae9e4df520134b2e67460f1263486ab79b09f9479e86238ae71e1fb9a
0.16.02019-08-26T23:15:01.665866ZDownloadc4508fd87532307d64d9a36c62cae6d2384894a570bb4d7f46a2c08542e5b645
0.16.12020-01-06T22:29:53.216238ZDownload4691515bb3f68ebbc4776bc97a84d429bb8e8c141a77b5ab988a4b02adb1747a
0.17.0-nullsafety2020-10-20T21:42:29.472797ZDownload0764ee908c27ca7cbb5b7d6c21a982ac769fe6992d434cce4da4e92b503fa9a0
0.17.0-nullsafety.12020-10-27T18:23:14.723440ZDownload09bd0ea20cfadbc313537b0d68555b89639da80036388c1ec368a5301878be99
0.17.0-nullsafety.22020-11-04T22:55:35.156106ZDownload4cff208b5e8127725851fc44e87fcd0e45fa05427256a4b9725e92d2b183cc91
0.17.02021-02-03T23:05:47.810311ZDownload910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91
0.18.02022-12-14T16:03:01.104278ZDownloada3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6
0.18.12023-04-18T13:50:51.318504ZDownload3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d
0.19.02023-12-07T16:00:02.586792ZDownloadd6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
0.20.02024-11-13T08:01:28.889479ZDownload99f282cb0e02edcbbf8c6b3bbc7c90b65635156c412e58f3975a7e55284ce685
0.20.12024-11-28T12:40:31.563431ZDownload00f33b908655e606b86d2ade4710a231b802eec6f11e87e4ea3783fd72077a50
0.20.22025-01-24T07:59:51.183145ZDownload3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5
0.20.32026-06-25T09:21:11.857146ZDownload1ca20c894b1717686a2319b8548763d812bc0aabdac580420a44c5178c57a867

Dependencies

analyzer "\u003e=0.13.2 \u003c0.26.0"

args "\u003e=0.12.1 \u003c0.14.0"

path "\u003e=0.9.0 \u003c2.0.0"

petitparser "\u003e=1.1.3 \u003c2.0.0"