add functions

pull/1/head
Matthew Butterick 10 years ago
parent e597ae1e10
commit 250315d09f

@ -17,267 +17,275 @@
(define tags (append block-tags inline-tags)) (define tags (append block-tags inline-tags))
(define/contract (entity->string e)
(symbol? . -> . string?)
(format "~a" (integer->char (entity->integer e))))
(define/contract (string->entity str)
(string? . -> . symbol?)
(integer->entity (char->integer (car (string->list str)))))
(define/contract (entity->integer e) (define/contract (entity->integer e)
(symbol? . -> . integer?) (symbol? . -> . integer?)
(hash-ref entities e)) (hash-ref entities e))
(define/contract (integer->entity c) (define/contract (integer->entity int)
(integer? . -> . symbol?) (integer? . -> . symbol?)
(hash-ref chars c)) (hash-ref chars int))
(define entities '#hash((quot . 34) (define entities '#hash((quot . 34)
(amp . 38) (amp . 38)
(apos . 39) (apos . 39)
(lt . 60) (lt . 60)
(gt . 62) (gt . 62)
(nbsp . 160) (nbsp . 160)
(iexcl . 161) (iexcl . 161)
(cent . 162) (cent . 162)
(pound . 163) (pound . 163)
(curren . 164) (curren . 164)
(yen . 165) (yen . 165)
(brvbar . 166) (brvbar . 166)
(sect . 167) (sect . 167)
(uml . 168) (uml . 168)
(copy . 169) (copy . 169)
(ordf . 170) (ordf . 170)
(laquo . 171) (laquo . 171)
(not . 172) (not . 172)
(shy . 173) (shy . 173)
(reg . 174) (reg . 174)
(macr . 175) (macr . 175)
(deg . 176) (deg . 176)
(plusmn . 177) (plusmn . 177)
(sup2 . 178) (sup2 . 178)
(sup3 . 179) (sup3 . 179)
(acute . 180) (acute . 180)
(micro . 181) (micro . 181)
(para . 182) (para . 182)
(middot . 183) (middot . 183)
(cedil . 184) (cedil . 184)
(sup1 . 185) (sup1 . 185)
(ordm . 186) (ordm . 186)
(raquo . 187) (raquo . 187)
(frac14 . 188) (frac14 . 188)
(frac12 . 189) (frac12 . 189)
(frac34 . 190) (frac34 . 190)
(iquest . 191) (iquest . 191)
(Agrave . 192) (Agrave . 192)
(Aacute . 193) (Aacute . 193)
(Acirc . 194) (Acirc . 194)
(Atilde . 195) (Atilde . 195)
(Auml . 196) (Auml . 196)
(Aring . 197) (Aring . 197)
(AElig . 198) (AElig . 198)
(Ccedil . 199) (Ccedil . 199)
(Egrave . 200) (Egrave . 200)
(Eacute . 201) (Eacute . 201)
(Ecirc . 202) (Ecirc . 202)
(Euml . 203) (Euml . 203)
(Igrave . 204) (Igrave . 204)
(Iacute . 205) (Iacute . 205)
(Icirc . 206) (Icirc . 206)
(Iuml . 207) (Iuml . 207)
(ETH . 208) (ETH . 208)
(Ntilde . 209) (Ntilde . 209)
(Ograve . 210) (Ograve . 210)
(Oacute . 211) (Oacute . 211)
(Ocirc . 212) (Ocirc . 212)
(Otilde . 213) (Otilde . 213)
(Ouml . 214) (Ouml . 214)
(times . 215) (times . 215)
(Oslash . 216) (Oslash . 216)
(Ugrave . 217) (Ugrave . 217)
(Uacute . 218) (Uacute . 218)
(Ucirc . 219) (Ucirc . 219)
(Uuml . 220) (Uuml . 220)
(Yacute . 221) (Yacute . 221)
(THORN . 222) (THORN . 222)
(szlig . 223) (szlig . 223)
(agrave . 224) (agrave . 224)
(aacute . 225) (aacute . 225)
(acirc . 226) (acirc . 226)
(atilde . 227) (atilde . 227)
(auml . 228) (auml . 228)
(aring . 229) (aring . 229)
(aelig . 230) (aelig . 230)
(ccedil . 231) (ccedil . 231)
(egrave . 232) (egrave . 232)
(eacute . 233) (eacute . 233)
(ecirc . 234) (ecirc . 234)
(euml . 235) (euml . 235)
(igrave . 236) (igrave . 236)
(iacute . 237) (iacute . 237)
(icirc . 238) (icirc . 238)
(iuml . 239) (iuml . 239)
(eth . 240) (eth . 240)
(ntilde . 241) (ntilde . 241)
(ograve . 242) (ograve . 242)
(oacute . 243) (oacute . 243)
(ocirc . 244) (ocirc . 244)
(otilde . 245) (otilde . 245)
(ouml . 246) (ouml . 246)
(divide . 247) (divide . 247)
(oslash . 248) (oslash . 248)
(ugrave . 249) (ugrave . 249)
(uacute . 250) (uacute . 250)
(ucirc . 251) (ucirc . 251)
(uuml . 252) (uuml . 252)
(yacute . 253) (yacute . 253)
(thorn . 254) (thorn . 254)
(yuml . 255) (yuml . 255)
(OElig . 338) (OElig . 338)
(oelig . 339) (oelig . 339)
(Scaron . 352) (Scaron . 352)
(scaron . 353) (scaron . 353)
(Yuml . 376) (Yuml . 376)
(fnof . 402) (fnof . 402)
(circ . 710) (circ . 710)
(tilde . 732) (tilde . 732)
(Alpha . 913) (Alpha . 913)
(Beta . 914) (Beta . 914)
(Gamma . 915) (Gamma . 915)
(Delta . 916) (Delta . 916)
(Epsilon . 917) (Epsilon . 917)
(Zeta . 918) (Zeta . 918)
(Eta . 919) (Eta . 919)
(Theta . 920) (Theta . 920)
(Iota . 921) (Iota . 921)
(Kappa . 922) (Kappa . 922)
(Lambda . 923) (Lambda . 923)
(Mu . 924) (Mu . 924)
(Nu . 925) (Nu . 925)
(Xi . 926) (Xi . 926)
(Omicron . 927) (Omicron . 927)
(Pi . 928) (Pi . 928)
(Rho . 929) (Rho . 929)
(Sigma . 931) (Sigma . 931)
(Tau . 932) (Tau . 932)
(Upsilon . 933) (Upsilon . 933)
(Phi . 934) (Phi . 934)
(Chi . 935) (Chi . 935)
(Psi . 936) (Psi . 936)
(Omega . 937) (Omega . 937)
(alpha . 945) (alpha . 945)
(beta . 946) (beta . 946)
(gamma . 947) (gamma . 947)
(delta . 948) (delta . 948)
(epsilon . 949) (epsilon . 949)
(zeta . 950) (zeta . 950)
(eta . 951) (eta . 951)
(theta . 952) (theta . 952)
(iota . 953) (iota . 953)
(kappa . 954) (kappa . 954)
(lambda . 955) (lambda . 955)
(mu . 956) (mu . 956)
(nu . 957) (nu . 957)
(xi . 958) (xi . 958)
(omicron . 959) (omicron . 959)
(pi . 960) (pi . 960)
(rho . 961) (rho . 961)
(sigmaf . 962) (sigmaf . 962)
(sigma . 963) (sigma . 963)
(tau . 964) (tau . 964)
(upsilon . 965) (upsilon . 965)
(phi . 966) (phi . 966)
(chi . 967) (chi . 967)
(psi . 968) (psi . 968)
(omega . 969) (omega . 969)
(thetasym . 977) (thetasym . 977)
(upsih . 978) (upsih . 978)
(piv . 982) (piv . 982)
(ensp . 8194) (ensp . 8194)
(emsp . 8195) (emsp . 8195)
(thinsp . 8201) (thinsp . 8201)
(zwnj . 8204) (zwnj . 8204)
(zwj . 8205) (zwj . 8205)
(lrm . 8206) (lrm . 8206)
(rlm . 8207) (rlm . 8207)
(ndash . 8211) (ndash . 8211)
(mdash . 8212) (mdash . 8212)
(lsquo . 8216) (lsquo . 8216)
(rsquo . 8217) (rsquo . 8217)
(sbquo . 8218) (sbquo . 8218)
(ldquo . 8220) (ldquo . 8220)
(rdquo . 8221) (rdquo . 8221)
(bdquo . 8222) (bdquo . 8222)
(dagger . 8224) (dagger . 8224)
(Dagger . 8225) (Dagger . 8225)
(bull . 8226) (bull . 8226)
(hellip . 8230) (hellip . 8230)
(permil . 8240) (permil . 8240)
(prime . 8242) (prime . 8242)
(Prime . 8243) (Prime . 8243)
(lsaquo . 8249) (lsaquo . 8249)
(rsaquo . 8250) (rsaquo . 8250)
(oline . 8254) (oline . 8254)
(frasl . 8260) (frasl . 8260)
(euro . 8364) (euro . 8364)
(image . 8465) (image . 8465)
(weierp . 8472) (weierp . 8472)
(real . 8476) (real . 8476)
(trade . 8482) (trade . 8482)
(alefsym . 8501) (alefsym . 8501)
(larr . 8592) (larr . 8592)
(uarr . 8593) (uarr . 8593)
(rarr . 8594) (rarr . 8594)
(darr . 8595) (darr . 8595)
(harr . 8596) (harr . 8596)
(crarr . 8629) (crarr . 8629)
(lArr . 8656) (lArr . 8656)
(uArr . 8657) (uArr . 8657)
(rArr . 8658) (rArr . 8658)
(dArr . 8659) (dArr . 8659)
(hArr . 8660) (hArr . 8660)
(forall . 8704) (forall . 8704)
(part . 8706) (part . 8706)
(exist . 8707) (exist . 8707)
(empty . 8709) (empty . 8709)
(nabla . 8711) (nabla . 8711)
(isin . 8712) (isin . 8712)
(notin . 8713) (notin . 8713)
(ni . 8715) (ni . 8715)
(prod . 8719) (prod . 8719)
(sum . 8721) (sum . 8721)
(minus . 8722) (minus . 8722)
(lowast . 8727) (lowast . 8727)
(radic . 8730) (radic . 8730)
(prop . 8733) (prop . 8733)
(infin . 8734) (infin . 8734)
(ang . 8736) (ang . 8736)
(and . 8743) (and . 8743)
(or . 8744) (or . 8744)
(cap . 8745) (cap . 8745)
(cup . 8746) (cup . 8746)
(int . 8747) (int . 8747)
(there4 . 8756) (there4 . 8756)
(sim . 8764) (sim . 8764)
(cong . 8773) (cong . 8773)
(asymp . 8776) (asymp . 8776)
(ne . 8800) (ne . 8800)
(equiv . 8801) (equiv . 8801)
(le . 8804) (le . 8804)
(ge . 8805) (ge . 8805)
(sub . 8834) (sub . 8834)
(sup . 8835) (sup . 8835)
(nsub . 8836) (nsub . 8836)
(sube . 8838) (sube . 8838)
(supe . 8839) (supe . 8839)
(oplus . 8853) (oplus . 8853)
(otimes . 8855) (otimes . 8855)
(perp . 8869) (perp . 8869)
(sdot . 8901) (sdot . 8901)
(vellip . 8942) (vellip . 8942)
(lceil . 8968) (lceil . 8968)
(rceil . 8969) (rceil . 8969)
(lfloor . 8970) (lfloor . 8970)
(rfloor . 8971) (rfloor . 8971)
(lang . 9001) (lang . 9001)
(rang . 9002) (rang . 9002)
(loz . 9674) (loz . 9674)
(spades . 9824) (spades . 9824)
(clubs . 9827) (clubs . 9827)
(hearts . 9829) (hearts . 9829)
(diams . 9830))) (diams . 9830)))
(define chars (make-hash (hash-map entities (λ(k v) (cons v k))))) ; flip the hash (define chars (make-hash (hash-map entities (λ(k v) (cons v k))))) ; flip the hash

Loading…
Cancel
Save