charcode

v1.4.0

Constants for ASCII and common non-ASCII character codes. Integer constants corresponding to the code points of individual characters.

Package archive: https://pubdev.letsnova.ru/api/archives/charcode/1.4.0.tar.gz

Installdart pub add charcode

Readme

Pub package publisher

Character code constants

This package can generate constant symbolic names for character codes.

The constants can used when working directly with characters as integers, to make the code more readable: if (firstChar == $A) ... vs if (firstChar == 0x41 /*A*/).

Pre-defined constants

The package also provides a set of pre-defined constants covering all ASCII characters and all HTML entities.

Those constants are intended for use while developing a new package or application. When development is done, it's recommended that you generate a file for yourself, containing only the constants that you actually use, and include that in your project.

Usage

To generate a set of constants, run the charcode application with a list of the characters you want to reference.

Example:

dart run charcode -o lib/src/charcodes.dart "09.e\-ftn{}[],:"
                

Run dart run charcode --help to see other options.

After switching to the generated constants file, you can, and should, remove your dependency on this package, or keep it as a dev-dependency in case you want to generate the file again.

To use the pre-defined constants, import either the ASCII or the HTML library

import "package:charcode/ascii.dart";
                // or
                import "package:charcode/html_entity.dart";
                

or import both libraries using the combined charcode.dart library:

import "package:charcode/charcode.dart";
                

(Importing both libraries directly causes some conflicting names to be inaccessible.)

Naming

The character names are preceded by a $ to avoid conflicting with other variables, due to their short and common names (for example "$i").

Characters that are valid in a Dart identifier directly follow the $. Examples: $_, $a, $B and $3. Other characters are given symbolic names.

The names of letters are lower-case for lower-case letters ($sigma for σ), and mixed- or upper-case for upper-case letters ($Sigma for Σ). The names of symbols and punctuation are all lower-case or camelCase, and omit suffixes like "sign", "symbol" and "mark". Examples: $plus, $exclamation, $tilde, $doubleQuote.

The ascii.dart library defines a symbolic name for each ASCII character. Some characters have more than one name. For example the common name $tab and the official abbreviation $ht for the horizontal tab.

The html_entity.dart library defines a constant for each HTML 4.01 character entity using their standard entity abbreviation, including case. Examples: $nbsp for &nbps;, $aring for the lower-case å and $Aring for the upper-case Å.

The HTML entities include all characters in the Latin-1 code page, Greek letters and some mathematical symbols.

The charcode.dart library exports both ascii.dart and html_entity.dart. Where both libraries define the same name, the HTML entity name is preferred.

Rationale

The Dart language doesn't have character literals. If that ever changes, this package will become irrelevant. Until then, this package can be used for the most common characters. See request for character literals.

Changelog

1.4.0

  • Updates generator to write into existing file without clobbering it.
  • Changes the -h flag to be -H, so -h works for help. (Technically breaking, if anyone uses the flag.)
  • Adds verbose flag.

1.3.1

  • Optimize for Pub score.

1.3.0

  • Add camelCase constant names as alternatives for current snake_case constants. Example $doubleQuote as alternative to $double_quote.
  • Internal tweaks to flag parsing.
  • Switch to using package:lints.

1.2.0

  • Stable release for null safety.

1.2.0-nullsafety.3

  • Update SDK constraints to >=2.12.0-0 <3.0.0 based on beta release guidelines.

1.2.0-nullsafety.2

  • Allow prerelease versions of the 2.12 sdk.
  • Add command line functionality to generate constants. Allows clients to generate their own constants instead of depending on the package at run-time. Example: To generate the characters needed for a hexadecimal numeral, run pub run charcode a-fA-F\d+-.

1.2.0-nullsafety.1

  • Allow 2.10 stable and 2.11.0 dev SDK versions.

1.2.0-nullsafety

  • Opt in to null safety.

1.1.3

  • Added example, changed lints.

1.1.2

  • Updated the SDK constraint.

1.1.1

  • Spelling and linting fixes.

1.1.0

  • Initial version