Version one.
diff --git a/lib/ascii.dart b/lib/ascii.dart
new file mode 100644
index 0000000..fa50d7a
--- /dev/null
+++ b/lib/ascii.dart
@@ -0,0 +1,348 @@
+// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/**
+ * Declare integer constants for each ASCII character.
+ *
+ * The constants all start with "$" to avoid conflicting with other constants.
+ *
+ * For characters that are valid in an identifier, the character iteself
+ * follows the "$". For other characters, a symbolic name is used.
+ * In some cases, multiple alternative symbolic names are provided.
+ * Please stick to using one name per character in your code.
+ *
+ * The symbolic names are, where applicable, the name of the symbol without
+ * any "mark", "symbol" "sign" or "accent" suffix.
+ * Examples: [$exclamation], [$pipe], [$dollar] and [$grave].
+ * For less common symbols, a selection of common names are used.
+ *
+ * For parenthetical markers, there is both a short name, [$lparen]/[$rparen],
+ * and a long name, $[open_paren]/ $[close_paren].
+ *
+ * For common HTML entities, the entity names are also useable as symbolic
+ * names: [$apos], [$quot], [$lt], [$gt], and [$amp].
+ */
+library charcode.ascii.dollar_lowercase;
+
+// Control characters.
+
+/// "Null character" control character.
+const int $nul = 0x00;
+/// "Start of Header" control character.
+const int $soh = 0x01;
+/// "Start of Text" control character.
+const int $stx = 0x02;
+/// "End of Text" control character.
+const int $etx = 0x03;
+/// "End of Transmission" control character.
+const int $eot = 0x04;
+/// "Enquiry" control character.
+const int $enq = 0x05;
+/// "Acknowledgment" control character.
+const int $ack = 0x06;
+/// "Bell" control character.
+const int $bel = 0x07;
+/// "Backspace" control character.
+const int $bs = 0x08;
+/// "Horizontal Tab" control character.
+const int $ht = 0x09;
+/// "Horizontal Tab" control character, common name.
+const int $tab = 0x09;
+/// "Line feed" control character.
+const int $lf = 0x0A;
+/// "Vertical Tab" control character.
+const int $vt = 0x0B;
+/// "Form feed" control character.
+const int $ff = 0x0C;
+/// "Carriage return" control character.
+const int $cr = 0x0D;
+/// "Shift Out" control character.
+const int $so = 0x0E;
+/// "Shift In" control character.
+const int $si = 0x0F;
+/// "Data Link Escape" control character.
+const int $dle = 0x10;
+/// "Device Control 1" control character (oft. XON).
+const int $dc1 = 0x11;
+/// "Device Control 2" control character.
+const int $dc2 = 0x12;
+/// "Device Control 3" control character (oft. XOFF).
+const int $dc3 = 0x13;
+/// "Device Control 4" control character.
+const int $dc4 = 0x14;
+/// "Negative Acknowledgment" control character.
+const int $nak = 0x15;
+/// "Synchronous idle" control character.
+const int $syn = 0x16;
+/// "End of Transmission Block" control character.
+const int $etb = 0x17;
+/// "Cancel" control character.
+const int $can = 0x18;
+/// "End of Medium" control character.
+const int $em = 0x19;
+/// "Substitute" control character.
+const int $sub = 0x1A;
+/// "Escape" control character.
+const int $esc = 0x1B;
+/// "File Separator" control character.
+const int $fs = 0x1C;
+/// "Group Separator" control character.
+const int $gs = 0x1D;
+/// "Record Separator" control character.
+const int $rs = 0x1E;
+/// "Unit Separator" control character.
+const int $us = 0x1F;
+/// "Delete" control character.
+const int $del = 0x7F;
+
+// Visible characters.
+
+/// Space character.
+const int $space = 0x20;
+/// Character '!'.
+const int $exclamation = 0x21;
+/// Character '"', short name.
+const int $quot = 0x22;
+/// Character '"'.
+const int $quote = 0x22;
+/// Character '"'.
+const int $double_quote = 0x22;
+/// Character '"'.
+const int $quotation = 0x22;
+/// Character '#'.
+const int $hash = 0x23;
+/// Character '$'.
+const int $dollar = 0x24;
+/// Character '%'.
+const int $percent = 0x25;
+/// Character '&', short name.
+const int $amp = 0x26;
+/// Character '&'.
+const int $ampersand = 0x26;
+/// Character '''.
+const int $apos = 0x27;
+/// Character '''.
+const int $apostrophe = 0x27;
+/// Character '''.
+const int $single_quote = 0x27;
+/// Character '('.
+const int $lparen = 0x28;
+/// Character '('.
+const int $open_paren = 0x28;
+/// Character '('.
+const int $open_parenthesis = 0x28;
+/// Character ')'.
+const int $rparen = 0x29;
+/// Character ')'.
+const int $close_paren = 0x29;
+/// Character ')'.
+const int $close_parenthesis = 0x29;
+/// Character '*'.
+const int $asterisk = 0x2A;
+/// Character '+'.
+const int $plus = 0x2B;
+/// Character ','.
+const int $comma = 0x2C;
+/// Character '-'.
+const int $minus = 0x2D;
+/// Character '.'.
+const int $dot = 0x2E;
+/// Character '.'.
+const int $fullstop = 0x2E;
+/// Character '/'.
+const int $slash = 0x2F;
+/// Character '/'.
+const int $solidus = 0x2F;
+/// Character '/'.
+const int $division = 0x2F;
+/// Character '0'.
+const int $0 = 0x30;
+/// Character '1'.
+const int $1 = 0x31;
+/// Character '2'.
+const int $2 = 0x32;
+/// Character '3'.
+const int $3 = 0x33;
+/// Character '4'.
+const int $4 = 0x34;
+/// Character '5'.
+const int $5 = 0x35;
+/// Character '6'.
+const int $6 = 0x36;
+/// Character '7'.
+const int $7 = 0x37;
+/// Character '8'.
+const int $8 = 0x38;
+/// Character '9'.
+const int $9 = 0x39;
+/// Character ':'.
+const int $colon = 0x3A;
+/// Character ';'.
+const int $semicolon = 0x3B;
+/// Character '<'.
+const int $lt = 0x3C;
+/// Character '<'.
+const int $less_than = 0x3C;
+/// Character '<'.
+const int $langle = 0x3C;
+/// Character '<'.
+const int $open_angle = 0x3C;
+/// Character ' ='.
+const int $equal = 0x3D;
+/// Character '>'.
+const int $gt = 0x3E;
+/// Character '>'.
+const int $greater_than = 0x3E;
+/// Character '>'.
+const int $rangle = 0x3E;
+/// Character '>'.
+const int $close_angle = 0x3E;
+/// Character '?'.
+const int $question = 0x3F;
+
+/// Character '@'.
+const int $at = 0x40;
+/// Character 'A'.
+const int $A = 0x41;
+/// Character 'B'.
+const int $B = 0x42;
+/// Character 'C'.
+const int $C = 0x43;
+/// Character 'D'.
+const int $D = 0x44;
+/// Character 'E'.
+const int $E = 0x45;
+/// Character 'F'.
+const int $F = 0x46;
+/// Character 'G'.
+const int $G = 0x47;
+/// Character 'H'.
+const int $H = 0x48;
+/// Character 'I'.
+const int $I = 0x49;
+/// Character 'J'.
+const int $J = 0x4A;
+/// Character 'K'.
+const int $K = 0x4B;
+/// Character 'L'.
+const int $L = 0x4C;
+/// Character 'M'.
+const int $M = 0x4D;
+/// Character 'N'.
+const int $N = 0x4E;
+/// Character 'O'.
+const int $O = 0x4F;
+/// Character 'P'.
+const int $P = 0x50;
+/// Character 'Q'.
+const int $Q = 0x51;
+/// Character 'R'.
+const int $R = 0x52;
+/// Character 'S'.
+const int $S = 0x53;
+/// Character 'T'.
+const int $T = 0x54;
+/// Character 'U'.
+const int $U = 0x55;
+/// Character 'V'.
+const int $V = 0x56;
+/// Character 'W'.
+const int $W = 0x57;
+/// Character 'X'.
+const int $X = 0x58;
+/// Character 'Y'.
+const int $Y = 0x59;
+/// Character 'Z'.
+const int $Z = 0x5A;
+/// Character '['.
+const int $lbracket = 0x5B;
+/// Character '['.
+const int $open_bracket = 0x5B;
+/// Character '\'.
+const int $backslash = 0x5C;
+/// Character ']'.
+const int $rbracket = 0x5D;
+/// Character ']'.
+const int $close_bracket = 0x5D;
+/// Character '^'.
+const int $circumflex = 0x5E;
+/// Character '^'.
+const int $caret = 0x5E;
+/// Character '^'.
+const int $hat = 0x5E;
+/// Character '_'.
+const int $underscore = 0x5F;
+/// Character '_'.
+const int $underline = 0x5F;
+
+/// Character '`'.
+const int $backquote = 0x60;
+/// Character '`'.
+const int $grave = 0x60;
+/// Character 'a'.
+const int $a = 0x61;
+/// Character 'b'.
+const int $b = 0x62;
+/// Character 'c'.
+const int $c = 0x63;
+/// Character 'd'.
+const int $d = 0x64;
+/// Character 'e'.
+const int $e = 0x65;
+/// Character 'f'.
+const int $f = 0x66;
+/// Character 'g'.
+const int $g = 0x67;
+/// Character 'h'.
+const int $h = 0x68;
+/// Character 'i'.
+const int $i = 0x69;
+/// Character 'j'.
+const int $j = 0x6A;
+/// Character 'k'.
+const int $k = 0x6B;
+/// Character 'l'.
+const int $l = 0x6C;
+/// Character 'm'.
+const int $m = 0x6D;
+/// Character 'n'.
+const int $n = 0x6E;
+/// Character 'o'.
+const int $o = 0x6F;
+/// Character 'p'.
+const int $p = 0x70;
+/// Character 'q'.
+const int $q = 0x71;
+/// Character 'r'.
+const int $r = 0x72;
+/// Character 's'.
+const int $s = 0x73;
+/// Character 't'.
+const int $t = 0x74;
+/// Character 'u'.
+const int $u = 0x75;
+/// Character 'v'.
+const int $v = 0x76;
+/// Character 'w'.
+const int $w = 0x77;
+/// Character 'x'.
+const int $x = 0x78;
+/// Character 'y'.
+const int $y = 0x79;
+/// Character 'z'.
+const int $z = 0x7A;
+/// Character '{'.
+const int $lbrace = 0x7B;
+/// Character '{'.
+const int $open_brace = 0x7B;
+/// Character '|'.
+const int $pipe = 0x7C;
+/// Character '|'.
+const int $bar = 0x7C;
+/// Character '}'.
+const int $rbrace = 0x7D;
+/// Character '}'.
+const int $close_brace = 0x7D;
+/// Character '~'.
+const int $tilde = 0x7E;
diff --git a/lib/charcode.dart b/lib/charcode.dart
new file mode 100644
index 0000000..00efc71
--- /dev/null
+++ b/lib/charcode.dart
@@ -0,0 +1,15 @@
+// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/**
+ * Defines symbolic names for character code points.
+ *
+ * Includes all ASCII and Latin-1 characters.
+ *
+ * Exports the libraries `ascii.dart` and `html-entity.dart`.
+ */
+library charcode;
+
+export "ascii.dart";
+export "html-entity.dart";
diff --git a/lib/html-entity.dart b/lib/html-entity.dart
new file mode 100644
index 0000000..6e43354
--- /dev/null
+++ b/lib/html-entity.dart
@@ -0,0 +1,520 @@
+// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/**
+ * Character codes based on HTML 4.01 character entity names.
+ *
+ * For each entity name, e.g., `nbsp`,
+ * a constant with that name prefixed by `$` is defined
+ * for that entity's code point.
+ *
+ * The HTML entities include the non-ASCII Latin-1 characters and
+ * symbols, mathematical symbols and Greek litters.
+ *
+ * The five characters that are ASCII
+ * are exported from the "ascii.dart" library,
+ * so the libraries can both be imported without conflict.
+ */
+library charcode.htmlentity.dollar_lowercase;
+
+export "ascii.dart" show $quot, $amp, $apos, $lt, $gt;
+
+/// no-break space (non-breaking space)
+static const int $nbsp = 0x00A0;
+/// inverted exclamation mark ('¡')
+static const int $iexcl = 0x00A1;
+/// cent sign ('¢')
+static const int $cent = 0x00A2;
+/// pound sign ('£')
+static const int $pound = 0x00A3;
+/// currency sign ('¤')
+static const int $curren = 0x00A4;
+/// yen sign (yuan sign) ('¥')
+static const int $yen = 0x00A5;
+/// broken bar (broken vertical bar) ('¦')
+static const int $brvbar = 0x00A6;
+/// section sign ('§')
+static const int $sect = 0x00A7;
+/// diaeresis (spacing diaeresis); see Germanic umlaut ('¨')
+static const int $uml = 0x00A8;
+/// copyright symbol ('©')
+static const int $copy = 0x00A9;
+/// feminine ordinal indicator ('ª')
+static const int $ordf = 0x00AA;
+/// left-pointing double angle quotation mark (left pointing guillemet) ('«')
+static const int $laquo = 0x00AB;
+/// not sign ('¬')
+static const int $not = 0x00AC;
+/// soft hyphen (discretionary hyphen)
+static const int $shy = 0x00AD;
+/// registered sign (registered trademark symbol) ('®')
+static const int $reg = 0x00AE;
+/// macron (spacing macron, overline, APL overbar) ('¯')
+static const int $macr = 0x00AF;
+/// degree symbol ('°')
+static const int $deg = 0x00B0;
+/// plus-minus sign (plus-or-minus sign) ('±')
+static const int $plusmn = 0x00B1;
+/// superscript two (superscript digit two, squared) ('²')
+static const int $sup2 = 0x00B2;
+/// superscript three (superscript digit three, cubed) ('³')
+static const int $sup3 = 0x00B3;
+/// acute accent (spacing acute) ('´')
+static const int $acute = 0x00B4;
+/// micro sign ('µ')
+static const int $micro = 0x00B5;
+/// pilcrow sign (paragraph sign) ('¶')
+static const int $para = 0x00B6;
+/// middle dot (Georgian comma, Greek middle dot) ('·')
+static const int $middot = 0x00B7;
+/// cedilla (spacing cedilla) ('¸')
+static const int $cedil = 0x00B8;
+/// superscript one (superscript digit one) ('¹')
+static const int $sup1 = 0x00B9;
+/// masculine ordinal indicator ('º')
+static const int $ordm = 0x00BA;
+/// right-pointing double angle quotation mark (right pointing guillemet) ('»')
+static const int $raquo = 0x00BB;
+/// vulgar fraction one quarter (fraction one quarter) ('¼')
+static const int $frac14 = 0x00BC;
+/// vulgar fraction one half (fraction one half) ('½')
+static const int $frac12 = 0x00BD;
+/// vulgar fraction three quarters (fraction three quarters) ('¾')
+static const int $frac34 = 0x00BE;
+/// inverted question mark (turned question mark) ('¿')
+static const int $iquest = 0x00BF;
+/// Latin capital letter A with grave accent (Latin capital letter A grave) ('À')
+static const int $Agrave = 0x00C0;
+/// Latin capital letter A with acute accent ('Á')
+static const int $Aacute = 0x00C1;
+/// Latin capital letter A with circumflex ('Â')
+static const int $Acirc = 0x00C2;
+/// Latin capital letter A with tilde ('Ã')
+static const int $Atilde = 0x00C3;
+/// Latin capital letter A with diaeresis ('Ä')
+static const int $Auml = 0x00C4;
+/// Latin capital letter A with ring above (Latin capital letter A ring) ('Å')
+static const int $Aring = 0x00C5;
+/// Latin capital letter AE (Latin capital ligature AE) ('Æ')
+static const int $AElig = 0x00C6;
+/// Latin capital letter C with cedilla ('Ç')
+static const int $Ccedil = 0x00C7;
+/// Latin capital letter E with grave accent ('È')
+static const int $Egrave = 0x00C8;
+/// Latin capital letter E with acute accent ('É')
+static const int $Eacute = 0x00C9;
+/// Latin capital letter E with circumflex ('Ê')
+static const int $Ecirc = 0x00CA;
+/// Latin capital letter E with diaeresis ('Ë')
+static const int $Euml = 0x00CB;
+/// Latin capital letter I with grave accent ('Ì')
+static const int $Igrave = 0x00CC;
+/// Latin capital letter I with acute accent ('Í')
+static const int $Iacute = 0x00CD;
+/// Latin capital letter I with circumflex ('Î')
+static const int $Icirc = 0x00CE;
+/// Latin capital letter I with diaeresis ('Ï')
+static const int $Iuml = 0x00CF;
+/// Latin capital letter Eth ('Ð')
+static const int $ETH = 0x00D0;
+/// Latin capital letter N with tilde ('Ñ')
+static const int $Ntilde = 0x00D1;
+/// Latin capital letter O with grave accent ('Ò')
+static const int $Ograve = 0x00D2;
+/// Latin capital letter O with acute accent ('Ó')
+static const int $Oacute = 0x00D3;
+/// Latin capital letter O with circumflex ('Ô')
+static const int $Ocirc = 0x00D4;
+/// Latin capital letter O with tilde ('Õ')
+static const int $Otilde = 0x00D5;
+/// Latin capital letter O with diaeresis ('Ö')
+static const int $Ouml = 0x00D6;
+/// multiplication sign ('×')
+static const int $times = 0x00D7;
+/// Latin capital letter O with stroke (Latin capital letter O slash) ('Ø')
+static const int $Oslash = 0x00D8;
+/// Latin capital letter U with grave accent ('Ù')
+static const int $Ugrave = 0x00D9;
+/// Latin capital letter U with acute accent ('Ú')
+static const int $Uacute = 0x00DA;
+/// Latin capital letter U with circumflex ('Û')
+static const int $Ucirc = 0x00DB;
+/// Latin capital letter U with diaeresis ('Ü')
+static const int $Uuml = 0x00DC;
+/// Latin capital letter Y with acute accent ('Ý')
+static const int $Yacute = 0x00DD;
+/// Latin capital letter THORN ('Þ')
+static const int $THORN = 0x00DE;
+/// Latin small letter sharp s (ess-zed); see German Eszett ('ß')
+static const int $szlig = 0x00DF;
+/// Latin small letter a with grave accent ('à')
+static const int $agrave = 0x00E0;
+/// Latin small letter a with acute accent ('á')
+static const int $aacute = 0x00E1;
+/// Latin small letter a with circumflex ('â')
+static const int $acirc = 0x00E2;
+/// Latin small letter a with tilde ('ã')
+static const int $atilde = 0x00E3;
+/// Latin small letter a with diaeresis ('ä')
+static const int $auml = 0x00E4;
+/// Latin small letter a with ring above ('å')
+static const int $aring = 0x00E5;
+/// Latin small letter ae (Latin small ligature ae) ('æ')
+static const int $aelig = 0x00E6;
+/// Latin small letter c with cedilla ('ç')
+static const int $ccedil = 0x00E7;
+/// Latin small letter e with grave accent ('è')
+static const int $egrave = 0x00E8;
+/// Latin small letter e with acute accent ('é')
+static const int $eacute = 0x00E9;
+/// Latin small letter e with circumflex ('ê')
+static const int $ecirc = 0x00EA;
+/// Latin small letter e with diaeresis ('ë')
+static const int $euml = 0x00EB;
+/// Latin small letter i with grave accent ('ì')
+static const int $igrave = 0x00EC;
+/// Latin small letter i with acute accent ('í')
+static const int $iacute = 0x00ED;
+/// Latin small letter i with circumflex ('î')
+static const int $icirc = 0x00EE;
+/// Latin small letter i with diaeresis ('ï')
+static const int $iuml = 0x00EF;
+/// Latin small letter eth ('ð')
+static const int $eth = 0x00F0;
+/// Latin small letter n with tilde ('ñ')
+static const int $ntilde = 0x00F1;
+/// Latin small letter o with grave accent ('ò')
+static const int $ograve = 0x00F2;
+/// Latin small letter o with acute accent ('ó')
+static const int $oacute = 0x00F3;
+/// Latin small letter o with circumflex ('ô')
+static const int $ocirc = 0x00F4;
+/// Latin small letter o with tilde ('õ')
+static const int $otilde = 0x00F5;
+/// Latin small letter o with diaeresis ('ö')
+static const int $ouml = 0x00F6;
+/// division sign (obelus) ('÷')
+static const int $divide = 0x00F7;
+/// Latin small letter o with stroke (Latin small letter o slash) ('ø')
+static const int $oslash = 0x00F8;
+/// Latin small letter u with grave accent ('ù')
+static const int $ugrave = 0x00F9;
+/// Latin small letter u with acute accent ('ú')
+static const int $uacute = 0x00FA;
+/// Latin small letter u with circumflex ('û')
+static const int $ucirc = 0x00FB;
+/// Latin small letter u with diaeresis ('ü')
+static const int $uuml = 0x00FC;
+/// Latin small letter y with acute accent ('ý')
+static const int $yacute = 0x00FD;
+/// Latin small letter thorn ('þ')
+static const int $thorn = 0x00FE;
+/// Latin small letter y with diaeresis ('ÿ')
+static const int $yuml = 0x00FF;
+/// Latin capital ligature oe ('Œ')
+static const int $OElig = 0x0152;
+/// Latin small ligature oe ('œ')
+static const int $oelig = 0x0153;
+/// Latin capital letter s with caron ('Š')
+static const int $Scaron = 0x0160;
+/// Latin small letter s with caron ('š')
+static const int $scaron = 0x0161;
+/// Latin capital letter y with diaeresis ('Ÿ')
+static const int $Yuml = 0x0178;
+/// Latin small letter f with hook (function, florin) ('ƒ')
+static const int $fnof = 0x0192;
+/// modifier letter circumflex accent ('ˆ')
+static const int $circ = 0x02C6;
+/// small tilde ('˜')
+static const int $tilde = 0x02DC;
+/// Greek capital letter Alpha ('Α')
+static const int $Alpha = 0x0391;
+/// Greek capital letter Beta ('Β')
+static const int $Beta = 0x0392;
+/// Greek capital letter Gamma ('Γ')
+static const int $Gamma = 0x0393;
+/// Greek capital letter Delta ('Δ')
+static const int $Delta = 0x0394;
+/// Greek capital letter Epsilon ('Ε')
+static const int $Epsilon = 0x0395;
+/// Greek capital letter Zeta ('Ζ')
+static const int $Zeta = 0x0396;
+/// Greek capital letter Eta ('Η')
+static const int $Eta = 0x0397;
+/// Greek capital letter Theta ('Θ')
+static const int $Theta = 0x0398;
+/// Greek capital letter Iota ('Ι')
+static const int $Iota = 0x0399;
+/// Greek capital letter Kappa ('Κ')
+static const int $Kappa = 0x039A;
+/// Greek capital letter Lambda ('Λ')
+static const int $Lambda = 0x039B;
+/// Greek capital letter Mu ('Μ')
+static const int $Mu = 0x039C;
+/// Greek capital letter Nu ('Ν')
+static const int $Nu = 0x039D;
+/// Greek capital letter Xi ('Ξ')
+static const int $Xi = 0x039E;
+/// Greek capital letter Omicron ('Ο')
+static const int $Omicron = 0x039F;
+/// Greek capital letter Pi ('Π')
+static const int $Pi = 0x03A0;
+/// Greek capital letter Rho ('Ρ')
+static const int $Rho = 0x03A1;
+/// Greek capital letter Sigma ('Σ')
+static const int $Sigma = 0x03A3;
+/// Greek capital letter Tau ('Τ')
+static const int $Tau = 0x03A4;
+/// Greek capital letter Upsilon ('Υ')
+static const int $Upsilon = 0x03A5;
+/// Greek capital letter Phi ('Φ')
+static const int $Phi = 0x03A6;
+/// Greek capital letter Chi ('Χ')
+static const int $Chi = 0x03A7;
+/// Greek capital letter Psi ('Ψ')
+static const int $Psi = 0x03A8;
+/// Greek capital letter Omega ('Ω')
+static const int $Omega = 0x03A9;
+/// Greek small letter alpha ('α')
+static const int $alpha = 0x03B1;
+/// Greek small letter beta ('β')
+static const int $beta = 0x03B2;
+/// Greek small letter gamma ('γ')
+static const int $gamma = 0x03B3;
+/// Greek small letter delta ('δ')
+static const int $delta = 0x03B4;
+/// Greek small letter epsilon ('ε')
+static const int $epsilon = 0x03B5;
+/// Greek small letter zeta ('ζ')
+static const int $zeta = 0x03B6;
+/// Greek small letter eta ('η')
+static const int $eta = 0x03B7;
+/// Greek small letter theta ('θ')
+static const int $theta = 0x03B8;
+/// Greek small letter iota ('ι')
+static const int $iota = 0x03B9;
+/// Greek small letter kappa ('κ')
+static const int $kappa = 0x03BA;
+/// Greek small letter lambda ('λ')
+static const int $lambda = 0x03BB;
+/// Greek small letter mu ('μ')
+static const int $mu = 0x03BC;
+/// Greek small letter nu ('ν')
+static const int $nu = 0x03BD;
+/// Greek small letter xi ('ξ')
+static const int $xi = 0x03BE;
+/// Greek small letter omicron ('ο')
+static const int $omicron = 0x03BF;
+/// Greek small letter pi ('π')
+static const int $pi = 0x03C0;
+/// Greek small letter rho ('ρ')
+static const int $rho = 0x03C1;
+/// Greek small letter final sigma ('ς')
+static const int $sigmaf = 0x03C2;
+/// Greek small letter sigma ('σ')
+static const int $sigma = 0x03C3;
+/// Greek small letter tau ('τ')
+static const int $tau = 0x03C4;
+/// Greek small letter upsilon ('υ')
+static const int $upsilon = 0x03C5;
+/// Greek small letter phi ('φ')
+static const int $phi = 0x03C6;
+/// Greek small letter chi ('χ')
+static const int $chi = 0x03C7;
+/// Greek small letter psi ('ψ')
+static const int $psi = 0x03C8;
+/// Greek small letter omega ('ω')
+static const int $omega = 0x03C9;
+/// Greek theta symbol ('ϑ')
+static const int $thetasym = 0x03D1;
+/// Greek Upsilon with hook symbol ('ϒ')
+static const int $upsih = 0x03D2;
+/// Greek pi symbol ('ϖ')
+static const int $piv = 0x03D6;
+/// en space (' ')
+static const int $ensp = 0x2002;
+/// em space (' ')
+static const int $emsp = 0x2003;
+/// thin space
+static const int $thinsp = 0x2009;
+/// zero-width non-joiner
+static const int $zwnj = 0x200C;
+/// zero-width joiner
+static const int $zwj = 0x200D;
+/// left-to-right mark
+static const int $lrm = 0x200E;
+/// right-to-left mark
+static const int $rlm = 0x200F;
+/// en dash ('–')
+static const int $ndash = 0x2013;
+/// em dash ('—')
+static const int $mdash = 0x2014;
+/// left single quotation mark ('‘')
+static const int $lsquo = 0x2018;
+/// right single quotation mark ('’')
+static const int $rsquo = 0x2019;
+/// single low-9 quotation mark ('‚')
+static const int $sbquo = 0x201A;
+/// left double quotation mark ('“')
+static const int $ldquo = 0x201C;
+/// right double quotation mark ('”')
+static const int $rdquo = 0x201D;
+/// double low-9 quotation mark ('„')
+static const int $bdquo = 0x201E;
+/// dagger, obelisk ('†')
+static const int $dagger = 0x2020;
+/// double dagger, double obelisk ('‡')
+static const int $Dagger = 0x2021;
+/// bullet (black small circle) ('•')
+static const int $bull = 0x2022;
+/// horizontal ellipsis (three dot leader) ('…')
+static const int $hellip = 0x2026;
+/// per mille sign ('‰')
+static const int $permil = 0x2030;
+/// prime (minutes, feet) ('′')
+static const int $prime = 0x2032;
+/// double prime (seconds, inches) ('″')
+static const int $Prime = 0x2033;
+/// single left-pointing angle quotation mark ('‹')
+static const int $lsaquo = 0x2039;
+/// single right-pointing angle quotation mark ('›')
+static const int $rsaquo = 0x203A;
+/// overline (spacing overscore) ('‾')
+static const int $oline = 0x203E;
+/// fraction slash (solidus) ('⁄')
+static const int $frasl = 0x2044;
+/// euro sign ('€')
+static const int $euro = 0x20AC;
+/// black-letter capital I (imaginary part) ('ℑ')
+static const int $image = 0x2111;
+/// script capital P (power set, Weierstrass p) ('℘')
+static const int $weierp = 0x2118;
+/// black-letter capital R (real part symbol) ('ℜ')
+static const int $real = 0x211C;
+/// trademark symbol ('™')
+static const int $trade = 0x2122;
+/// alef symbol (first transfinite cardinal) ('ℵ')
+static const int $alefsym = 0x2135;
+/// leftwards arrow ('←')
+static const int $larr = 0x2190;
+/// upwards arrow ('↑')
+static const int $uarr = 0x2191;
+/// rightwards arrow ('→')
+static const int $rarr = 0x2192;
+/// downwards arrow ('↓')
+static const int $darr = 0x2193;
+/// left right arrow ('↔')
+static const int $harr = 0x2194;
+/// downwards arrow with corner leftwards (carriage return) ('↵')
+static const int $crarr = 0x21B5;
+/// leftwards double arrow ('⇐')
+static const int $lArr = 0x21D0;
+/// upwards double arrow ('⇑')
+static const int $uArr = 0x21D1;
+/// rightwards double arrow ('⇒')
+static const int $rArr = 0x21D2;
+/// downwards double arrow ('⇓')
+static const int $dArr = 0x21D3;
+/// left right double arrow ('⇔')
+static const int $hArr = 0x21D4;
+/// for all ('∀')
+static const int $forall = 0x2200;
+/// partial differential ('∂')
+static const int $part = 0x2202;
+/// there exists ('∃')
+static const int $exist = 0x2203;
+/// empty set (null set); see also U+8960, ⌀ ('∅')
+static const int $empty = 0x2205;
+/// del or nabla (vector differential operator) ('∇')
+static const int $nabla = 0x2207;
+/// element of ('∈')
+static const int $isin = 0x2208;
+/// not an element of ('∉')
+static const int $notin = 0x2209;
+/// contains as member ('∋')
+static const int $ni = 0x220B;
+/// n-ary product (product sign) ('∏')
+static const int $prod = 0x220F;
+/// n-ary summation ('∑')
+static const int $sum = 0x2211;
+/// minus sign ('−')
+static const int $minus = 0x2212;
+/// asterisk operator ('∗')
+static const int $lowast = 0x2217;
+/// square root (radical sign) ('√')
+static const int $radic = 0x221A;
+/// proportional to ('∝')
+static const int $prop = 0x221D;
+/// infinity ('∞')
+static const int $infin = 0x221E;
+/// angle ('∠')
+static const int $ang = 0x2220;
+/// logical and (wedge) ('∧')
+static const int $and = 0x2227;
+/// logical or (vee) ('∨')
+static const int $or = 0x2228;
+/// intersection (cap) ('∩')
+static const int $cap = 0x2229;
+/// union (cup) ('∪')
+static const int $cup = 0x222A;
+/// integral ('∫')
+static const int $int = 0x222B;
+/// therefore sign ('∴')
+static const int $there4 = 0x2234;
+/// tilde operator (varies with, similar to) ('∼')
+static const int $sim = 0x223C;
+/// congruent to ('≅')
+static const int $cong = 0x2245;
+/// almost equal to (asymptotic to) ('≈')
+static const int $asymp = 0x2248;
+/// not equal to ('≠')
+static const int $ne = 0x2260;
+/// identical to; sometimes used for 'equivalent to' ('≡')
+static const int $equiv = 0x2261;
+/// less-than or equal to ('≤')
+static const int $le = 0x2264;
+/// greater-than or equal to ('≥')
+static const int $ge = 0x2265;
+/// subset of ('⊂')
+static const int $sub = 0x2282;
+/// superset of ('⊃')
+static const int $sup = 0x2283;
+/// not a subset of ('⊄')
+static const int $nsub = 0x2284;
+/// subset of or equal to ('⊆')
+static const int $sube = 0x2286;
+/// superset of or equal to ('⊇')
+static const int $supe = 0x2287;
+/// circled plus (direct sum) ('⊕')
+static const int $oplus = 0x2295;
+/// circled times (vector product) ('⊗')
+static const int $otimes = 0x2297;
+/// up tack (orthogonal to, perpendicular) ('⊥')
+static const int $perp = 0x22A5;
+/// dot operator ('⋅')
+static const int $sdot = 0x22C5;
+/// vertical ellipsis ('⋮')
+static const int $vellip = 0x22EE;
+/// left ceiling (APL upstile) ('⌈')
+static const int $lceil = 0x2308;
+/// right ceiling ('⌉')
+static const int $rceil = 0x2309;
+/// left floor (APL downstile) ('⌊')
+static const int $lfloor = 0x230A;
+/// right floor ('⌋')
+static const int $rfloor = 0x230B;
+/// left-pointing angle bracket (bra) ('〈')
+static const int $lang = 0x2329;
+/// right-pointing angle bracket (ket) ('〉')
+static const int $rang = 0x232A;
+/// lozenge ('◊')
+static const int $loz = 0x25CA;
+/// black spade suit ('♠')
+static const int $spades = 0x2660;
+/// black club suit (shamrock) ('♣')
+static const int $clubs = 0x2663;
+/// black heart suit (valentine) ('♥')
+static const int $hearts = 0x2665;
+/// black diamond suit ('♦')
+static const int $diams = 0x2666;
diff --git a/pubspec.yaml b/pubspec.yaml
new file mode 100644
index 0000000..aa9e2c9
--- /dev/null
+++ b/pubspec.yaml
@@ -0,0 +1,12 @@
+name: charcode
+version: 0.1.0
+author: Dart Team <misc@dartlang.org>
+description: >
+ Constants for ASCII and common non-ASCII character codes.
+
+ When working with characters in Dart, there is no simple way to
+ represent the code point of a character.
+ This library declares readalbe symbolic names for character codes.
+homepage: http://www.dartlang.org
+environment:
+ sdk: '>=1.0.0 <2.0.0'