Ketchup 0.4.1 → 0.4.2
raw patch · 370 files changed
+73/−2225 lines, 370 filesbinary-added
Files
- .git/COMMIT_EDITMSG +0/−1
- .git/FETCH_HEAD +2/−2
- .git/ORIG_HEAD +1/−1
- .git/config +1/−1
- .git/hooks/pre-push.sample +1/−1
- .git/index binary
- .git/logs/HEAD +2/−39
- .git/logs/refs/heads/master +2/−35
- .git/logs/refs/remotes/origin/HEAD +1/−0
- .git/logs/refs/remotes/origin/gh-pages +0/−2
- .git/logs/refs/remotes/origin/master +1/−31
- .git/objects/01/51025fe33749b1b065bfaaddeac482e2554582 binary
- .git/objects/01/e3b6fea98c7d1cd0b8d7b76a5b558e82c6e182 binary
- .git/objects/02/229886a2c1f7622014655936cde900885e9810 binary
- .git/objects/02/ffa07f6990f74dafd8c9ce6d8fa39b0976d598 binary
- .git/objects/04/27491eaa020186e459934ed69cdb7d808501cd +0/−4
- .git/objects/04/a409a115341e8d88fbe81afe993e824ed5a755 binary
- .git/objects/04/c3e16687ed10eefe4dc64aeebdfb04d44ca2ca binary
- .git/objects/06/19b7137861d0ac245cd24cdf1784b15b517ce1 binary
- .git/objects/0b/1732fd47a5b9008302f3cf2cc815b4c3fcbb03 binary
- .git/objects/0c/06892b80ad9e05a48ed2f816c1bc9ef49ca69a binary
- .git/objects/0e/1f7af50ca1ce3a4849668a919daaa5e8735d43 binary
- .git/objects/0e/f0bb4acb2a054328faea81aaa1b6ef08ab4324 binary
- .git/objects/0e/f1467fc037c2b698808c4f8670b06f437a44c5 +0/−2
- .git/objects/0f/03ed98a2eba1beb8db11eb86edb34b2321a261 binary
- .git/objects/0f/d36c65d057f7ce244a4e9a335d698f075530e6 +0/−3
- .git/objects/0f/f8579fbd897417b0d6dad6e920f8882138a7c0 binary
- .git/objects/10/93f2858a4572a7a141c96f251f273da4d55c89 binary
- .git/objects/11/c683f96aaed8fc5cad03cb58c5d1a5cec5f501 binary
- .git/objects/12/103f6ad6c8b32cef7a550d8d4d8307f656b9ec binary
- .git/objects/13/9041d9f25f891c340cc0b858838f94306c9b93 +0/−2
- .git/objects/15/9cebdfa4266754e9a10d880aa345087fe46ea3 binary
- .git/objects/17/f0b2fcca6037579949bed0f62ed8508429855c binary
- .git/objects/19/29f404bd7463b75013763eac1c2fe1bbb03373 binary
- .git/objects/1b/4e38d4a513de8e2fc27d9619999a1732330561 binary
- .git/objects/1b/5e76a54f1a37ba3e0920ce750eb71528cf66c7 binary
- .git/objects/1d/eac2fe1a42e35b994f1b855488f392c50f6a89 binary
- .git/objects/1f/964c52d8194986ca6879905fbd25488f457fae binary
- .git/objects/1f/e6614e7ded45533c17b26bdb0d4d4f48cc0e79 binary
- .git/objects/20/0e8a1d9e64883c4442f155f3695cb99ecdb392 binary
- .git/objects/20/3fe722984873d04f9997788065406b008051c1 binary
- .git/objects/23/82296bb15427910f85a9a4a5be39677a6d9005 binary
- .git/objects/23/8fd86cd3c476d75eec0d7ae736adb96dd1cc60 binary
- .git/objects/24/861f0a0b2585817bf3ae226d9bb42bad0e977b binary
- .git/objects/24/e1f1b0b0f51b252eebca5b168a4e17b4700a4c binary
- .git/objects/24/ee306a70ec71338f47f012e1a7ec5668e1851b binary
- .git/objects/26/aa433ce02a16e4f0887189d56ca66cc0fab283 +1/−0
- .git/objects/26/e2203e22a0c92e9fffb7c8d859af54bf1aa943 binary
- .git/objects/27/af847de0afe29dffa87ef0d755c84f830e4941 binary
- .git/objects/29/3dd1b539d3932cada98422cd2a4d8117f693b3 binary
- .git/objects/29/6daef4bb0fb9e15cdcf2ed42512b88b79ed514 binary
- .git/objects/2b/9c68df7936d7398cd61b39686392d66ff8f1c1 binary
- .git/objects/2b/a3de09ad5a0b0b58d543705380a9a44a31ae2b +0/−1
- .git/objects/2c/373856c51ba9550fca9b27b974c3a63db3d7b9 binary
- .git/objects/2c/a5438db72b33a2c171f3e9ae9b73bd59c2fd49 binary
- .git/objects/2c/b647573d63d84667f629ea1e26e53bd3f16e44 binary
- .git/objects/2d/15c14173d23f664b955cd24f51c82f5f09d91d +0/−1
- .git/objects/2d/61778b316db7774bc73d9c80cfa8d76e7b7a97 binary
- .git/objects/2d/d01b33323df8fd6ac686cc492d77822e040e1f binary
- .git/objects/2e/95147d7a2c86bb224527a5624c118b53f9c736 binary
- .git/objects/31/0e7b443f14a92b46059c540620e2e3ec9eeecf binary
- .git/objects/32/4d07aa12666c2f03139f626361d1a810c45bc1 +0/−1
- .git/objects/32/997e49181fa65740bdf9434d98e8f146601d75 binary
- .git/objects/33/126c8981c21f9755c7eaca90e81ca7d5d6fd62 binary
- .git/objects/33/d1dadf72d9a1c6217c5a6c7992dcdaaa343742 binary
- .git/objects/34/f107591ec1e00bba2a7bee5238bddbb4832bdb binary
- .git/objects/35/3e50d70c86a2ab186edac1c205561befde3dc7 binary
- .git/objects/35/5acd3fb38dd6a8565e8652aca975260ad9ebe4 binary
- .git/objects/35/cdbdae6aa4d9a87e4e3b7c1f21f1d2e90d691e binary
- .git/objects/36/d1bfaedb400023ee2b6ced7d3847183c454838 +0/−2
- .git/objects/37/e7da68243123c206a7b9b03e982cd2e1ffde61 binary
- .git/objects/38/b1abd98d5569fa06054273349167b45184cc6c binary
- .git/objects/39/7b16f4af94e0b04d7e6c7063332150ee9113e1 binary
- .git/objects/3a/e244621eb9dd53cbcca1a8475acf7affae786d binary
- .git/objects/3b/4a30a35ea42471082f331a39f573fbc7782f85 +0/−2
- .git/objects/3c/4e5274662ecf122b692a4b2d4b6054e6ecab6b binary
- .git/objects/3d/f33a565ba1673aeae361ffa0bdd75ad5aa87fb binary
- .git/objects/3e/acc9c75ba313c63d9d9be3616d7b8b9f452975 binary
- .git/objects/3e/c999f52b623f8b354b6f9f7fdee90db24c3c72 +0/−3
- .git/objects/3f/019d6c6041e82845c87d8f620f5f836fe5f910 binary
- .git/objects/41/bb1c25a293d0754c3554f5a07a8a2a883b40d8 binary
- .git/objects/41/c17d736e3d73852a7d08c691182692e793ab3f binary
- .git/objects/42/238709f16db39e5eaaf8841791e35d3c4484e3 binary
- .git/objects/45/3bd93c26a9e271a06ba2646d2fed80284a3d7e binary
- .git/objects/45/fa42399476a801f23b96599909ab8939757cd4 binary
- .git/objects/46/4d078f996682b5330d9821891c67f6e58c303f binary
- .git/objects/49/c47bca8a7edae0d0851b71284aa6b39a400cc4 binary
- .git/objects/4a/021a8003bac4534e449b336f4a8e8711dff2e3 binary
- .git/objects/4a/10a87d8c968f4d836bca3a08d2f44c05060fad binary
- .git/objects/4a/7482b12405ea3053e880a198094e00b4a10988 binary
- .git/objects/4a/c44b6241517d43310da25b086e175b3b9c0b49 binary
- .git/objects/4a/d51f9dc87b6aa48cb614030521d957b8498622 +0/−2
- .git/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 binary
- .git/objects/4b/839965d93e9f73dc1f00fac60ce31619cf27bf binary
- .git/objects/4b/b6b3f484c6c64383b85aff399a1f385357e138 binary
- .git/objects/4b/c44265a2bbd4697b8408ff44cfdaad4777b18b binary
- .git/objects/4c/2353910734c89633d869f0ffccf8f565c93221 +0/−2
- .git/objects/4f/6d438c143bd74eb0fea554c57583a51f92e890 binary
- .git/objects/52/36d892553250d98e5b5b322321702f74559556 binary
- .git/objects/54/0238ab17beeafc9cf736595a50f3e395b598f9 binary
- .git/objects/55/61e9ab1a9d86b8fcecc70202d0263cb525a1ed binary
- .git/objects/55/99915d18d029056942c1193b62f0469dd55de8 binary
- .git/objects/56/2c5d11641eeb9f7ae77cd0d177fd8c947ed1e9 binary
- .git/objects/57/9bdddcdb0584c78cee8df569174d8e5174a28e binary
- .git/objects/58/4b0ea086479c87718b10715c5375a4715e6965 binary
- .git/objects/5a/6881a3d40966a591bf4431aaae918faa3d3ac5 +0/−3
- .git/objects/5b/b8bdb97c488abfbfcfe0925cd02d0db1df869d binary
- .git/objects/5c/7dd6782bd7103baeb041d69fd3e17410ab46dd binary
- .git/objects/5c/ad4e38d5d9795fd867fe17bdc34c18ac26dfc6 binary
- .git/objects/5c/d6ac78a332a4565cc05200276028bb0ad7b381 binary
- .git/objects/5e/48387ea9b3a9fa8fa903f54477534cf8d8dd62 binary
- .git/objects/60/07e4f98c57a347a051cf7d7de71ca08fd85b8f binary
- .git/objects/60/c2748b7df2f5721d8c242094c744d7a777b56f binary
- .git/objects/62/25034f4b33110b1e1e8bb9938649989dcadc77 binary
- .git/objects/62/2888f76a4bd37398710e1590463719c2129297 +0/−2
- .git/objects/63/3f2583dc912547dc4bbb06de8bd1a7c275fcf2 binary
- .git/objects/63/50f4f119a8325852c5279f96ae5b0c34cce55f binary
- .git/objects/63/fea90271bdd5df9433756fd72126105cdbe5b7 binary
- .git/objects/65/31a477b445bfd988c03147cd43c5a0e289b426 binary
- .git/objects/66/5fba0e7ceccafda2b2a4e92e342ff2cbfe8247 +0/−2
- .git/objects/69/1816444999b3c2b424bdcef7eeb977fa8b18a5 binary
- .git/objects/69/367db2a6835d21762b09eec97395dd0f1d503e binary
- .git/objects/69/4dea2e0fc5c15b1ef710cee6f953b1afb623bd binary
- .git/objects/69/5dee0b1313795711418347aedd65f5bcbca02f binary
- .git/objects/69/8a48637c6765d29ae84a3e63bf4e878af2ae6d +0/−2
- .git/objects/6c/fe3c139d7fb98d3057452404339c790f2aa1d3 binary
- .git/objects/6d/30f1c67e51b4d6acd23a7bddb933aef1cee5a8 binary
- .git/objects/6d/9f02d0603a9cec81b119f36d16fdcfaebada1e binary
- .git/objects/6d/d1040ce0fbc93348725498c912f0e19175d433 binary
- .git/objects/70/15cd0af9b0fc60257cff8d057cee6a475f44d8 binary
- .git/objects/70/45659208ee4d7945199fadc8b48774da89d234 binary
- .git/objects/70/8b4d9119f776f28cc85a2a0f58b4bf1c1e7b43 +0/−2
- .git/objects/71/8178fa1b3fc34b7d7d961792c09b4b7b531b3e binary
- .git/objects/71/effddb09097324b4875677e94cd09048ea6521 binary
- .git/objects/72/2f61d1774f7fbd456a5ab611c54408e61f2cc6 binary
- .git/objects/73/e675e209d1125be27d5c119389c9337942f3b9 +0/−2
- .git/objects/75/be0ead191c37fdda11fdd628c79538651403da binary
- .git/objects/76/86c4a999a50079bfd907f126625c1c46def3a3 binary
- .git/objects/77/a5e6a3a94cbd5f7facc47bed8c940ab8ad3f5c binary
- .git/objects/78/b20a019fafabb14b2745db2c5912176729df2c binary
- .git/objects/79/9af54fbed761e676c67738cc6233b446e0e1e7 binary
- .git/objects/7a/e848a180a7f100d45ab5ac2437fc0adde1f80e binary
- .git/objects/7b/47d4cbaad3be6b78ecb8c575ffc37bd46a5e5b binary
- .git/objects/7c/e9930fef6b52b551fff42c7b10fde4d08baa0a binary
- .git/objects/7e/51503aee21f2d28f8a91d72e4c081cb7b399e6 binary
- .git/objects/81/ef35d79e1603434714aaa57410da0fa9f71e6e binary
- .git/objects/82/8e849a50ad7d3abf4afe0cc48a2b68512310cb +0/−1
- .git/objects/82/94ea0d9b3cece7eab328cd560b903f4de899f2 binary
- .git/objects/83/ac9915be5493cf66f1f96de88b5edce6c39929 +0/−1
- .git/objects/84/bf304493959e3a08b3807bd704ec632a9fb8a9 binary
- .git/objects/85/2ae7db61bff45b972b9a21023e162f5003d74d +0/−1
- .git/objects/85/b4c8d2256c11c570cacf64895353c0b9bd374f +0/−2
- .git/objects/85/d7f3da362229792ee03571c10da871b205a69f binary
- .git/objects/85/df8a78c3966d87d24b5e8eac0a2bdcbf243c47 binary
- .git/objects/85/fb86ec84907bcc86531dc82871948ff4d471fa binary
- .git/objects/86/dd8ae614f86096df8beda328370d683fba07a4 +0/−4
- .git/objects/87/66065959fca5de5327f875dbb67559f69b52b6 +0/−3
- .git/objects/87/675ebd8ba75eb85ed5ad0ba5888fce6076010c binary
- .git/objects/89/2ea0f9d3ad0fefdbacb4e06c7629c1d4317bad binary
- .git/objects/8a/4e26e09c96d9bd95bbefa4c2cde4fbf8087382 +0/−1
- .git/objects/8b/beae61080d264f5b69734128be1ecea8d6bfd4 binary
- .git/objects/8c/5dd7b601ae56b88e967ac486c0006561548b87 binary
- .git/objects/8d/9c0ac2c94c7beeb8658183e131da7ce5effefb binary
- .git/objects/91/e943bb62869a6178db375f7cb03e274ee28ca5 binary
- .git/objects/93/ac39e13883ec31ab749f768d790b6b14a0193d binary
- .git/objects/98/5425b5fac6f110e7da367684ea0168dbc8d4dd binary
- .git/objects/98/786dafc5b13181d5e4f6806a98124101fe317b binary
- .git/objects/99/ea1f98242bf7bd4527f7137c29cecb1dc6964a binary
- .git/objects/9a/6ebc14c4c86e50b3654d62c33ed7d83351c524 binary
- .git/objects/9a/6fccf7fcd2cd8aea37d5ec6057d9c18b6652a0 binary
- .git/objects/9b/b7324cccda0268cf5e5f318992da50b4f4f003 +0/−4
- .git/objects/9c/007b2a800ccd64ea6589e3aaf436dd386c5879 binary
- .git/objects/9c/39c23ffc9888f808ae093fdbd8ab7f27d175a2 +0/−1
- .git/objects/9c/54e55cc84dfa3ff2649648983bc83143370b10 binary
- .git/objects/9d/e2c9da7719f0fc9bc022d1377992812a7544bb binary
- .git/objects/9e/312f7816623a831ed832285328746834e6886c binary
- .git/objects/9e/7e76a48901351049e9c6fe083ba4bb95c2c43f binary
- .git/objects/a0/6d1fbe75dfe3b2ebe7e03bed4f97c8b05468e3 binary
- .git/objects/a3/3f00a997926762956b66487bc763c7500b5912 binary
- .git/objects/a3/7a47a2c1e944a56b3018b388c79fe13c082d4d binary
- .git/objects/a4/0d122f65722cef8bbeaa4192b0c65f24e3dac8 binary
- .git/objects/a4/52888e3b29d25f2f4b06e3f1cae1ddba210add +0/−1
- .git/objects/a4/b9abe272231882d54e9a54a8e29feb1b6f839f binary
- .git/objects/a7/1ae79e4cf33baeecab2eeecf21ae31d35dd99f binary
- .git/objects/a8/f041ca842f9d4b30406cf727910b74b3cc92d6 +0/−3
- .git/objects/a9/cfae246b204d28cdead9aa089ae8a7cded99b0 binary
- .git/objects/ab/41fa19ef0fbeb0088d8f325b1dc4280cbe9817 +0/−4
- .git/objects/ab/8f12f061e87b2922d0371d0c9e971ca49c8de3 binary
- .git/objects/ac/1fd40fffacfeb8c1880a86e9dc0aa50c9c3cf2 +0/−1
- .git/objects/ac/4473886e6ba9209e373ecacdf085588c79d527 binary
- .git/objects/ac/65ccb7a09106d00d93cb9ce559e6265ae9bdba binary
- .git/objects/ad/296ab5c62662ad2f55c20cd75483c7014e3a9e binary
- .git/objects/ae/3bc1e76696168e39e4cf60afc4131175005b11 binary
- .git/objects/ae/599a4b87624927da288aa5cd12b2b47b0c7e2d binary
- .git/objects/ae/d160a086ca22c96b3918eb9525818ab4adf8f8 binary
- .git/objects/b1/97449e22aa6e00dcbb765294c13b957ad35207 +0/−3
- .git/objects/b3/591481b033fac241826b9fc64a51d925d71175 binary
- .git/objects/b4/73be4e130f0ee35eb42d4037b2c99ee5003326 +0/−1
- .git/objects/b5/c49f759d54940ec00c97cc026a1e759eaeacc1 binary
- .git/objects/b6/3279c85b76f94cc28de65c1a8c2f65c1814e7e binary
- .git/objects/b6/4527d35ee22c00cd184fb921429a7db1984bf8 binary
- .git/objects/b8/3c2375bba608232746064adfdb067cf57e5d80 binary
- .git/objects/b9/61383890c9e39ba7e178c2f3afb5adc10ea8a0 binary
- .git/objects/b9/eb5d552bfc0adee1044e395991edcfd292826b binary
- .git/objects/ba/09adf09da69f7bd0411faa4beae8d28026eb7c binary
- .git/objects/bb/f0dc8f66b96264fdfae4c0bf005d5338436767 binary
- .git/objects/bb/f22517e7bb65f1c989ac568e5d6fe08f7a8b51 binary
- .git/objects/bf/bd19dedb8b81537db010dab8523cf46ca5e8a8 binary
- .git/objects/bf/ed8952d1f03e073bc0189e9bcc1371850662ce binary
- .git/objects/c0/9136db3f6d1b79503253d341373405dd2f0e13 binary
- .git/objects/c1/1eddba9f3bf52258e78eac875bb8d59575c4ef binary
- .git/objects/c1/ef5202b4e0351ba9c95229c0edf7dfbfb9bb33 +0/−2
- .git/objects/c2/d02249f1afb2578f5af2fcdfab5bcfbdcdb2e4 binary
- .git/objects/c3/ba3cdbd0c2f4fe371654b40c77b6d22dddc459 binary
- .git/objects/c4/41d386e187efdfa3b1992b4bd4406bd9a2ad0d binary
- .git/objects/c6/56325a56d86c044bb5136b9e8dafa421c4f758 binary
- .git/objects/c8/298c807614715a3dd52fe3fddcd74b42d8dd51 binary
- .git/objects/c8/59418b5c47a1a2516f5fbfa3881490687126fa binary
- .git/objects/c9/1a524dd7612f6b6b1a10132e0315ee38c4e7ac binary
- .git/objects/ca/7171c6a9384a3af595c1110538b011803b834c binary
- .git/objects/ca/b2bc3ee178be9364cfc53d425947736f8898f7 binary
- .git/objects/cb/bdc6717954437d467660c6c1d4355c420de08c binary
- .git/objects/cc/746e214c400d625c17bb704964d2490009dcd6 binary
- .git/objects/cd/4c39b6676acd7436a462a964926eb11e4b348a binary
- .git/objects/ce/c17859d0a08acd01b9297297b32881bc4f7104 binary
- .git/objects/cf/34a7265591f7c3f2d241bd7a554e96c85c68d5 binary
- .git/objects/cf/ed5d601e7c6661a4c95c652d865834a2960cc4 +0/−1
- .git/objects/d2/5e09437126d6267b441999d66ed90f352e67bd binary
- .git/objects/d4/6ff18dce582c39f62e9ad1a96b511f0fa43a75 binary
- .git/objects/d5/02a059e60a1f025639da03678a15d54c4b3e78 binary
- .git/objects/d6/92ca264bd3fbdb96606ebd98c8386f57bcea99 binary
- .git/objects/d6/ef2f17034da6c0b06de2b23faea8f7240cf232 binary
- .git/objects/d7/1598db24de6255e4a1d7a3dbd3c86a39b05b8f binary
- .git/objects/d7/52cbde2090cf51b382e0060e0d13a90ef9dfa8 +0/−1
- .git/objects/d7/b08975219be4409e54bcb5fa9ae7a85def6e31 binary
- .git/objects/d9/14ad60c2478c15e417bbfbae1ae6cbacfb8968 binary
- .git/objects/d9/50655d5180bc080ff323a21ce6d2c7e369a82b binary
- .git/objects/da/b38cfd353bbdc462641543658ea8acd3eac19d binary
- .git/objects/da/f5ffbd0e64b1c1405b2bc670dd396d9c544a14 binary
- .git/objects/dd/9b5e8fb8df41e00992dcbedf38edd8c0d25531 binary
- .git/objects/de/16c2da1cc71609774e151a4e6034c07965db8c binary
- .git/objects/de/93e13807a1416af9226a89e7292c83ca984bb0 binary
- .git/objects/df/0eddb596d9d9aff78156e3cae6300250de9155 binary
- .git/objects/e0/bec6bc6198a44edb82561a2cfcafa703694828 binary
- .git/objects/e4/e796e5dca1f617ad8ac77adbdfa8fc38a1f4d7 binary
- .git/objects/e5/afddd93fed2971b278890973cea1740b8011a2 binary
- .git/objects/e5/dc6abf9873d9eaf80c4e5d308832b23e5b18cd binary
- .git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 binary
- .git/objects/e8/1ac2e44e625bbd33673dc01092b64e2ca8679f binary
- .git/objects/e8/7a4422a7db2bee721ce1a88d5286ca1570d36a binary
- .git/objects/e8/a9b100db71a644cc6cf513f26b5f44a42d17ab binary
- .git/objects/e9/73b1dbbeec389cd09e15e3e2e5bf48df82b0aa binary
- .git/objects/ea/395fce07d46082dadd0432b33875394c27e62d +0/−3
- .git/objects/eb/218fa1ac0207d8e1eecff6a59b9789e1bc7df4 binary
- .git/objects/eb/a023660b513baa6686d113b0d5108a83448e4a binary
- .git/objects/ec/a1b33fcd1c0373e31d108a81dca8be042fd89c binary
- .git/objects/ed/eeef90bd35a9192643cb4fd5f6e108171fadb4 binary
- .git/objects/ed/f08a80f0a001b76e1fd26def6ae46c7d2d0cad binary
- .git/objects/f2/3c5d037a1343dfb0fa58676c399164dc58f7ee binary
- .git/objects/f2/6ab906a9c670c4cf1c0d85fb9e2ba66049cd5b binary
- .git/objects/f3/073c846e4efaa3a1997750b01c078c36a14718 binary
- .git/objects/f4/3a124452e69b4f2ef92bc8388796f2af9d88f3 binary
- .git/objects/f6/1d5b2caadecbdcf54d2d0ad7b131ca2adcdc28 binary
- .git/objects/f6/2e75a62487a4b516a960e045e193098208502c binary
- .git/objects/f6/e848cb8cee1bc156a72f65022e443a068cae23 binary
- .git/objects/f8/b79cfde7e99e07a48a906d6b0f43517cdee2b3 binary
- .git/objects/fb/f8eefabf8c61b21569f198ed873cc8558acd68 +0/−3
- .git/objects/fe/46fa3927ab0bca60de756912a6d427b030a784 binary
- .git/objects/fe/f7206a98cfe55dcb825c24d91f8179fa26d8ab binary
- .git/objects/ff/6a9f5d733cd98051951968bb686e9766cf0a44 binary
- .git/objects/pack/pack-8d5add9960807749627b85586af48b5f93746c56.idx binary
- .git/objects/pack/pack-8d5add9960807749627b85586af48b5f93746c56.pack binary
- .git/packed-refs +3/−0
- .git/refs/heads/master +1/−1
- .git/refs/remotes/origin/HEAD +1/−0
- .git/refs/remotes/origin/gh-pages +0/−1
- .git/refs/remotes/origin/master +1/−1
- .gitignore~ +0/−6
- Ketchup.cabal +4/−4
- Ketchup.cabal~ +0/−62
- Ketchup/Auth.hi binary
- Ketchup/Auth.o binary
- Ketchup/Chunked.hi binary
- Ketchup/Chunked.o binary
- Ketchup/Httpd.hi binary
- Ketchup/Httpd.hs +5/−16
- Ketchup/Httpd.o binary
- Ketchup/Routing.hi binary
- Ketchup/Routing.hs +2/−6
- Ketchup/Routing.o binary
- Ketchup/Static.hi binary
- Ketchup/Static.hs +14/−14
- Ketchup/Static.o binary
- Ketchup/Utils.hi binary
- Ketchup/Utils.hs +30/−35
- Ketchup/Utils.o binary
- docs/.git/COMMIT_EDITMSG +0/−221
- docs/.git/HEAD +0/−1
- docs/.git/config +0/−11
- docs/.git/config~ +0/−11
- docs/.git/description +0/−1
- docs/.git/hooks/applypatch-msg.sample +0/−15
- docs/.git/hooks/commit-msg.sample +0/−24
- docs/.git/hooks/post-update.sample +0/−8
- docs/.git/hooks/pre-applypatch.sample +0/−14
- docs/.git/hooks/pre-commit.sample +0/−49
- docs/.git/hooks/pre-push.sample +0/−54
- docs/.git/hooks/pre-rebase.sample +0/−169
- docs/.git/hooks/prepare-commit-msg.sample +0/−36
- docs/.git/hooks/update.sample +0/−128
- docs/.git/index binary
- docs/.git/info/exclude +0/−6
- docs/.git/logs/HEAD +0/−3
- docs/.git/logs/refs/heads/gh-pages +0/−3
- docs/.git/logs/refs/remotes/origin/HEAD +0/−1
- docs/.git/logs/refs/remotes/origin/gh-pages +0/−2
- docs/.git/objects/04/27491eaa020186e459934ed69cdb7d808501cd +0/−4
- docs/.git/objects/0e/f0bb4acb2a054328faea81aaa1b6ef08ab4324 binary
- docs/.git/objects/31/0e7b443f14a92b46059c540620e2e3ec9eeecf binary
- docs/.git/objects/33/d1dadf72d9a1c6217c5a6c7992dcdaaa343742 binary
- docs/.git/objects/4c/2353910734c89633d869f0ffccf8f565c93221 +0/−2
- docs/.git/objects/5c/7dd6782bd7103baeb041d69fd3e17410ab46dd binary
- docs/.git/objects/63/50f4f119a8325852c5279f96ae5b0c34cce55f binary
- docs/.git/objects/70/15cd0af9b0fc60257cff8d057cee6a475f44d8 binary
- docs/.git/objects/87/66065959fca5de5327f875dbb67559f69b52b6 +0/−3
- docs/.git/objects/a3/3f00a997926762956b66487bc763c7500b5912 binary
- docs/.git/objects/ad/296ab5c62662ad2f55c20cd75483c7014e3a9e binary
- docs/.git/objects/c8/298c807614715a3dd52fe3fddcd74b42d8dd51 binary
- docs/.git/objects/ca/7171c6a9384a3af595c1110538b011803b834c binary
- docs/.git/objects/cc/746e214c400d625c17bb704964d2490009dcd6 binary
- docs/.git/objects/da/b38cfd353bbdc462641543658ea8acd3eac19d binary
- docs/.git/objects/e5/dc6abf9873d9eaf80c4e5d308832b23e5b18cd binary
- docs/.git/objects/e8/a9b100db71a644cc6cf513f26b5f44a42d17ab binary
- docs/.git/objects/ec/a1b33fcd1c0373e31d108a81dca8be042fd89c binary
- docs/.git/objects/f8/b79cfde7e99e07a48a906d6b0f43517cdee2b3 binary
- docs/.git/objects/ff/6a9f5d733cd98051951968bb686e9766cf0a44 binary
- docs/.git/objects/pack/pack-91a33bcc9daf02ed2b87eb63c5967322fb125afb.idx binary
- docs/.git/objects/pack/pack-91a33bcc9daf02ed2b87eb63c5967322fb125afb.pack binary
- docs/.git/packed-refs +0/−3
- docs/.git/refs/heads/gh-pages +0/−1
- docs/.git/refs/remotes/origin/HEAD +0/−1
- docs/.git/refs/remotes/origin/gh-pages +0/−1
- docs/Ketchup-Auth.html +0/−8
- docs/Ketchup-Chunked.html +0/−13
- docs/Ketchup-Httpd.html +0/−15
- docs/Ketchup-Routing.html +0/−9
- docs/Ketchup-Static.html +0/−7
- docs/Ketchup-Utils.html +0/−19
- docs/doc-index.html +0/−4
- docs/frames.html +0/−30
- docs/haddock-util.js +0/−344
- docs/hslogo-16.png binary
- docs/index-frames.html +0/−4
- docs/index.html +0/−4
- docs/main.txt +0/−87
- docs/mini_Ketchup-Auth.html +0/−4
- docs/mini_Ketchup-Chunked.html +0/−4
- docs/mini_Ketchup-Httpd.html +0/−4
- docs/mini_Ketchup-Routing.html +0/−4
- docs/mini_Ketchup-Static.html +0/−4
- docs/mini_Ketchup-Utils.html +0/−4
- docs/minus.gif binary
- docs/ocean.css +0/−546
- docs/plus.gif binary
- docs/synopsis.png binary
- example too large to diff
- example.core too large to diff
- example.hi binary
- example.o binary
- gendocs.sh~ +0/−1
@@ -1,1 +0,0 @@-Fix URL parsing to work with empty sections
@@ -1,2 +1,2 @@-85b4c8d2256c11c570cacf64895353c0b9bd374f branch 'master' of github.com:Hamcha/ketchup-4c2353910734c89633d869f0ffccf8f565c93221 not-for-merge branch 'gh-pages' of github.com:Hamcha/ketchup+26aa433ce02a16e4f0887189d56ca66cc0fab283 branch 'master' of github.com:hamcha/ketchup+4c2353910734c89633d869f0ffccf8f565c93221 not-for-merge branch 'gh-pages' of github.com:hamcha/ketchup
@@ -1,1 +1,1 @@-2382296bb15427910f85a9a4a5be39677a6d9005+fcf776ea249603cba21a7e735ac877482693b3e1
@@ -4,7 +4,7 @@ bare = false logallrefupdates = true [remote "origin"]- url = git@github.com:Hamcha/ketchup.git+ url = git@github.com:hamcha/ketchup.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin
@@ -45,7 +45,7 @@ commit=`git rev-list -n 1 --grep '^WIP' "$range"` if [ -n "$commit" ] then- echo "Found WIP commit in $local_ref, not pushing"+ echo >&2 "Found WIP commit in $local_ref, not pushing" exit 1 fi fi
binary file changed (1136 → 1136 bytes)
@@ -1,39 +1,2 @@-0000000000000000000000000000000000000000 c1ef5202b4e0351ba9c95229c0edf7dfbfb9bb33 Hamcha <zikyky@gmail.com> 1400868061 +0200 commit (initial): Base commit (most code from httpd)-c1ef5202b4e0351ba9c95229c0edf7dfbfb9bb33 b197449e22aa6e00dcbb765294c13b957ad35207 Hamcha <zikyky@gmail.com> 1400868225 +0200 commit: Took some useless stuff out-b197449e22aa6e00dcbb765294c13b957ad35207 622888f76a4bd37398710e1590463719c2129297 Hamcha <zikyky@gmail.com> 1400868258 +0200 commit: .gitignore to avoid commiting binaries or object files-622888f76a4bd37398710e1590463719c2129297 d752cbde2090cf51b382e0060e0d13a90ef9dfa8 Hamcha <zikyky@gmail.com> 1400871180 +0200 commit: Basic routing should work-d752cbde2090cf51b382e0060e0d13a90ef9dfa8 708b4d9119f776f28cc85a2a0f58b4bf1c1e7b43 Hamcha <zikyky@gmail.com> 1400871591 +0200 commit: Added types-708b4d9119f776f28cc85a2a0f58b4bf1c1e7b43 722f61d1774f7fbd456a5ab611c54408e61f2cc6 Hamcha <zikyky@gmail.com> 1400872235 +0200 commit: Replaced incorrect 400 errors with 404 ones-722f61d1774f7fbd456a5ab611c54408e61f2cc6 1093f2858a4572a7a141c96f251f273da4d55c89 Hamcha <zikyky@gmail.com> 1400884141 +0200 commit: Removed some oleg sauce-1093f2858a4572a7a141c96f251f273da4d55c89 cf34a7265591f7c3f2d241bd7a554e96c85c68d5 Hamcha <zikyky@gmail.com> 1400935032 +0200 commit: Hackage stuff-cf34a7265591f7c3f2d241bd7a554e96c85c68d5 6dd1040ce0fbc93348725498c912f0e19175d433 Hamcha <zikyky@gmail.com> 1400936077 +0200 commit: README-6dd1040ce0fbc93348725498c912f0e19175d433 691816444999b3c2b424bdcef7eeb977fa8b18a5 Hamcha <zikyky@gmail.com> 1400953254 +0200 commit: Chunked encoding-691816444999b3c2b424bdcef7eeb977fa8b18a5 ab41fa19ef0fbeb0088d8f325b1dc4280cbe9817 Hamcha <zikyky@gmail.com> 1400953623 +0200 commit: Forgot to make it visible-ab41fa19ef0fbeb0088d8f325b1dc4280cbe9817 2e95147d7a2c86bb224527a5624c118b53f9c736 Hamcha <zikyky@gmail.com> 1400960297 +0200 commit: Removed SERVER header and set to 0.1.1-2e95147d7a2c86bb224527a5624c118b53f9c736 718178fa1b3fc34b7d7d961792c09b4b7b531b3e Hamcha <zikyky@gmail.com> 1401303609 +0200 pull: Fast-forward-718178fa1b3fc34b7d7d961792c09b4b7b531b3e b473be4e130f0ee35eb42d4037b2c99ee5003326 Hamcha <zikyky@gmail.com> 1401319907 +0200 commit: Ketchup has been Haddock'ed-b473be4e130f0ee35eb42d4037b2c99ee5003326 c09136db3f6d1b79503253d341373405dd2f0e13 Hamcha <zikyky@gmail.com> 1401541834 +0200 commit: Switch to PCRE regexps-c09136db3f6d1b79503253d341373405dd2f0e13 a06d1fbe75dfe3b2ebe7e03bed4f97c8b05468e3 Hamcha <zikyky@gmail.com> 1401998815 +0200 pull: Fast-forward-a06d1fbe75dfe3b2ebe7e03bed4f97c8b05468e3 a8f041ca842f9d4b30406cf727910b74b3cc92d6 Hamcha <zikyky@gmail.com> 1402149852 +0200 commit: 0.2.2 - POST DATA-a8f041ca842f9d4b30406cf727910b74b3cc92d6 464d078f996682b5330d9821891c67f6e58c303f Hamcha <zikyky@gmail.com> 1402151933 +0200 commit: Prettier docs-464d078f996682b5330d9821891c67f6e58c303f a71ae79e4cf33baeecab2eeecf21ae31d35dd99f Hamcha <zikyky@gmail.com> 1402152719 +0200 commit: Tree shaking depenencies-a71ae79e4cf33baeecab2eeecf21ae31d35dd99f 0ef1467fc037c2b698808c4f8670b06f437a44c5 Hamcha <zikyky@gmail.com> 1402152846 +0200 commit: Updated readme-0ef1467fc037c2b698808c4f8670b06f437a44c5 b83c2375bba608232746064adfdb067cf57e5d80 Hamcha <zikyky@gmail.com> 1402175260 +0200 commit: Static doesn't depend on Routing anymore-b83c2375bba608232746064adfdb067cf57e5d80 4ad51f9dc87b6aa48cb614030521d957b8498622 Hamcha <zikyky@gmail.com> 1403296411 +0200 commit: Fixed chunked encoding not working-4ad51f9dc87b6aa48cb614030521d957b8498622 f61d5b2caadecbdcf54d2d0ad7b131ca2adcdc28 Hamcha <zikyky@gmail.com> 1404003509 +0200 commit: Version bump + GenDoc script-f61d5b2caadecbdcf54d2d0ad7b131ca2adcdc28 139041d9f25f891c340cc0b858838f94306c9b93 Hamcha <zikyky@gmail.com> 1404078079 +0200 commit: So long Data.Map (and "containers" dependency)-139041d9f25f891c340cc0b858838f94306c9b93 0f03ed98a2eba1beb8db11eb86edb34b2321a261 Hamcha <zikyky@gmail.com> 1404079631 +0200 commit: Basic auth is in!-0f03ed98a2eba1beb8db11eb86edb34b2321a261 0fd36c65d057f7ce244a4e9a335d698f075530e6 Hamcha <zikyky@gmail.com> 1404079677 +0200 commit: Version bump-0fd36c65d057f7ce244a4e9a335d698f075530e6 694dea2e0fc5c15b1ef710cee6f953b1afb623bd Hamcha <zikyky@gmail.com> 1404079963 +0200 commit: Promote Auth :D-694dea2e0fc5c15b1ef710cee6f953b1afb623bd 695dee0b1313795711418347aedd65f5bcbca02f Hamcha <zikyky@gmail.com> 1407086956 +0200 commit: Version bump for cabal-695dee0b1313795711418347aedd65f5bcbca02f 83ac9915be5493cf66f1f96de88b5edce6c39929 Hamcha <zikyky@gmail.com> 1407714950 +0200 commit: Doesn't work, but it's a start, will work on it tomorrow-83ac9915be5493cf66f1f96de88b5edce6c39929 85b4c8d2256c11c570cacf64895353c0b9bd374f Hamcha <zikyky@gmail.com> 1407715002 +0200 commit: Remove unneded comments-85b4c8d2256c11c570cacf64895353c0b9bd374f 9c007b2a800ccd64ea6589e3aaf436dd386c5879 Hamcha <zikyky@gmail.com> 1411050080 +0200 commit: Routing rewritten, now Regexp(tm) free-9c007b2a800ccd64ea6589e3aaf436dd386c5879 c91a524dd7612f6b6b1a10132e0315ee38c4e7ac Hamcha <zikyky@gmail.com> 1411050528 +0200 commit: Take "Regexp" out of docs-c91a524dd7612f6b6b1a10132e0315ee38c4e7ac 2382296bb15427910f85a9a4a5be39677a6d9005 Hamcha <zikyky@gmail.com> 1411050630 +0200 commit: Ehm-2382296bb15427910f85a9a4a5be39677a6d9005 2382296bb15427910f85a9a4a5be39677a6d9005 Hamcha <zikyky@gmail.com> 1411050635 +0200 rebase -i (start): checkout refs/remotes/origin/master-2382296bb15427910f85a9a4a5be39677a6d9005 2382296bb15427910f85a9a4a5be39677a6d9005 Hamcha <zikyky@gmail.com> 1411050635 +0200 rebase -i (finish): returning to refs/heads/master-2382296bb15427910f85a9a4a5be39677a6d9005 c91a524dd7612f6b6b1a10132e0315ee38c4e7ac Hamcha <zikyky@gmail.com> 1411050647 +0200 rebase -i (start): checkout HEAD~2-c91a524dd7612f6b6b1a10132e0315ee38c4e7ac 2ba3de09ad5a0b0b58d543705380a9a44a31ae2b Hamcha <zikyky@gmail.com> 1411050648 +0200 rebase -i (squash): Take "Regexp" out of docs-2ba3de09ad5a0b0b58d543705380a9a44a31ae2b 2ba3de09ad5a0b0b58d543705380a9a44a31ae2b Hamcha <zikyky@gmail.com> 1411050651 +0200 rebase -i (finish): returning to refs/heads/master-2ba3de09ad5a0b0b58d543705380a9a44a31ae2b cec17859d0a08acd01b9297297b32881bc4f7104 Hamcha <zikyky@gmail.com> 1411488463 +0200 commit: Fix URL parsing to work with empty sections+0000000000000000000000000000000000000000 fcf776ea249603cba21a7e735ac877482693b3e1 Hamcha <zikyky@gmail.com> 1424005085 +0100 clone: from git@github.com:hamcha/ketchup.git+fcf776ea249603cba21a7e735ac877482693b3e1 26aa433ce02a16e4f0887189d56ca66cc0fab283 Hamcha <zikyky@gmail.com> 1424005457 +0100 pull: Fast-forward
@@ -1,35 +1,2 @@-0000000000000000000000000000000000000000 c1ef5202b4e0351ba9c95229c0edf7dfbfb9bb33 Hamcha <zikyky@gmail.com> 1400868061 +0200 commit (initial): Base commit (most code from httpd)-c1ef5202b4e0351ba9c95229c0edf7dfbfb9bb33 b197449e22aa6e00dcbb765294c13b957ad35207 Hamcha <zikyky@gmail.com> 1400868225 +0200 commit: Took some useless stuff out-b197449e22aa6e00dcbb765294c13b957ad35207 622888f76a4bd37398710e1590463719c2129297 Hamcha <zikyky@gmail.com> 1400868258 +0200 commit: .gitignore to avoid commiting binaries or object files-622888f76a4bd37398710e1590463719c2129297 d752cbde2090cf51b382e0060e0d13a90ef9dfa8 Hamcha <zikyky@gmail.com> 1400871180 +0200 commit: Basic routing should work-d752cbde2090cf51b382e0060e0d13a90ef9dfa8 708b4d9119f776f28cc85a2a0f58b4bf1c1e7b43 Hamcha <zikyky@gmail.com> 1400871591 +0200 commit: Added types-708b4d9119f776f28cc85a2a0f58b4bf1c1e7b43 722f61d1774f7fbd456a5ab611c54408e61f2cc6 Hamcha <zikyky@gmail.com> 1400872235 +0200 commit: Replaced incorrect 400 errors with 404 ones-722f61d1774f7fbd456a5ab611c54408e61f2cc6 1093f2858a4572a7a141c96f251f273da4d55c89 Hamcha <zikyky@gmail.com> 1400884141 +0200 commit: Removed some oleg sauce-1093f2858a4572a7a141c96f251f273da4d55c89 cf34a7265591f7c3f2d241bd7a554e96c85c68d5 Hamcha <zikyky@gmail.com> 1400935032 +0200 commit: Hackage stuff-cf34a7265591f7c3f2d241bd7a554e96c85c68d5 6dd1040ce0fbc93348725498c912f0e19175d433 Hamcha <zikyky@gmail.com> 1400936077 +0200 commit: README-6dd1040ce0fbc93348725498c912f0e19175d433 691816444999b3c2b424bdcef7eeb977fa8b18a5 Hamcha <zikyky@gmail.com> 1400953254 +0200 commit: Chunked encoding-691816444999b3c2b424bdcef7eeb977fa8b18a5 ab41fa19ef0fbeb0088d8f325b1dc4280cbe9817 Hamcha <zikyky@gmail.com> 1400953623 +0200 commit: Forgot to make it visible-ab41fa19ef0fbeb0088d8f325b1dc4280cbe9817 2e95147d7a2c86bb224527a5624c118b53f9c736 Hamcha <zikyky@gmail.com> 1400960297 +0200 commit: Removed SERVER header and set to 0.1.1-2e95147d7a2c86bb224527a5624c118b53f9c736 718178fa1b3fc34b7d7d961792c09b4b7b531b3e Hamcha <zikyky@gmail.com> 1401303609 +0200 pull: Fast-forward-718178fa1b3fc34b7d7d961792c09b4b7b531b3e b473be4e130f0ee35eb42d4037b2c99ee5003326 Hamcha <zikyky@gmail.com> 1401319907 +0200 commit: Ketchup has been Haddock'ed-b473be4e130f0ee35eb42d4037b2c99ee5003326 c09136db3f6d1b79503253d341373405dd2f0e13 Hamcha <zikyky@gmail.com> 1401541834 +0200 commit: Switch to PCRE regexps-c09136db3f6d1b79503253d341373405dd2f0e13 a06d1fbe75dfe3b2ebe7e03bed4f97c8b05468e3 Hamcha <zikyky@gmail.com> 1401998815 +0200 pull: Fast-forward-a06d1fbe75dfe3b2ebe7e03bed4f97c8b05468e3 a8f041ca842f9d4b30406cf727910b74b3cc92d6 Hamcha <zikyky@gmail.com> 1402149852 +0200 commit: 0.2.2 - POST DATA-a8f041ca842f9d4b30406cf727910b74b3cc92d6 464d078f996682b5330d9821891c67f6e58c303f Hamcha <zikyky@gmail.com> 1402151933 +0200 commit: Prettier docs-464d078f996682b5330d9821891c67f6e58c303f a71ae79e4cf33baeecab2eeecf21ae31d35dd99f Hamcha <zikyky@gmail.com> 1402152719 +0200 commit: Tree shaking depenencies-a71ae79e4cf33baeecab2eeecf21ae31d35dd99f 0ef1467fc037c2b698808c4f8670b06f437a44c5 Hamcha <zikyky@gmail.com> 1402152846 +0200 commit: Updated readme-0ef1467fc037c2b698808c4f8670b06f437a44c5 b83c2375bba608232746064adfdb067cf57e5d80 Hamcha <zikyky@gmail.com> 1402175260 +0200 commit: Static doesn't depend on Routing anymore-b83c2375bba608232746064adfdb067cf57e5d80 4ad51f9dc87b6aa48cb614030521d957b8498622 Hamcha <zikyky@gmail.com> 1403296411 +0200 commit: Fixed chunked encoding not working-4ad51f9dc87b6aa48cb614030521d957b8498622 f61d5b2caadecbdcf54d2d0ad7b131ca2adcdc28 Hamcha <zikyky@gmail.com> 1404003509 +0200 commit: Version bump + GenDoc script-f61d5b2caadecbdcf54d2d0ad7b131ca2adcdc28 139041d9f25f891c340cc0b858838f94306c9b93 Hamcha <zikyky@gmail.com> 1404078079 +0200 commit: So long Data.Map (and "containers" dependency)-139041d9f25f891c340cc0b858838f94306c9b93 0f03ed98a2eba1beb8db11eb86edb34b2321a261 Hamcha <zikyky@gmail.com> 1404079631 +0200 commit: Basic auth is in!-0f03ed98a2eba1beb8db11eb86edb34b2321a261 0fd36c65d057f7ce244a4e9a335d698f075530e6 Hamcha <zikyky@gmail.com> 1404079677 +0200 commit: Version bump-0fd36c65d057f7ce244a4e9a335d698f075530e6 694dea2e0fc5c15b1ef710cee6f953b1afb623bd Hamcha <zikyky@gmail.com> 1404079963 +0200 commit: Promote Auth :D-694dea2e0fc5c15b1ef710cee6f953b1afb623bd 695dee0b1313795711418347aedd65f5bcbca02f Hamcha <zikyky@gmail.com> 1407086956 +0200 commit: Version bump for cabal-695dee0b1313795711418347aedd65f5bcbca02f 83ac9915be5493cf66f1f96de88b5edce6c39929 Hamcha <zikyky@gmail.com> 1407714950 +0200 commit: Doesn't work, but it's a start, will work on it tomorrow-83ac9915be5493cf66f1f96de88b5edce6c39929 85b4c8d2256c11c570cacf64895353c0b9bd374f Hamcha <zikyky@gmail.com> 1407715002 +0200 commit: Remove unneded comments-85b4c8d2256c11c570cacf64895353c0b9bd374f 9c007b2a800ccd64ea6589e3aaf436dd386c5879 Hamcha <zikyky@gmail.com> 1411050080 +0200 commit: Routing rewritten, now Regexp(tm) free-9c007b2a800ccd64ea6589e3aaf436dd386c5879 c91a524dd7612f6b6b1a10132e0315ee38c4e7ac Hamcha <zikyky@gmail.com> 1411050528 +0200 commit: Take "Regexp" out of docs-c91a524dd7612f6b6b1a10132e0315ee38c4e7ac 2382296bb15427910f85a9a4a5be39677a6d9005 Hamcha <zikyky@gmail.com> 1411050630 +0200 commit: Ehm-2382296bb15427910f85a9a4a5be39677a6d9005 2ba3de09ad5a0b0b58d543705380a9a44a31ae2b Hamcha <zikyky@gmail.com> 1411050651 +0200 rebase -i (finish): refs/heads/master onto c91a524dd7612f6b6b1a10132e0315ee38c4e7ac-2ba3de09ad5a0b0b58d543705380a9a44a31ae2b cec17859d0a08acd01b9297297b32881bc4f7104 Hamcha <zikyky@gmail.com> 1411488463 +0200 commit: Fix URL parsing to work with empty sections+0000000000000000000000000000000000000000 fcf776ea249603cba21a7e735ac877482693b3e1 Hamcha <zikyky@gmail.com> 1424005085 +0100 clone: from git@github.com:hamcha/ketchup.git+fcf776ea249603cba21a7e735ac877482693b3e1 26aa433ce02a16e4f0887189d56ca66cc0fab283 Hamcha <zikyky@gmail.com> 1424005457 +0100 pull: Fast-forward
@@ -0,0 +1,1 @@+0000000000000000000000000000000000000000 fcf776ea249603cba21a7e735ac877482693b3e1 Hamcha <zikyky@gmail.com> 1424005085 +0100 clone: from git@github.com:hamcha/ketchup.git
@@ -1,2 +0,0 @@-0000000000000000000000000000000000000000 4ac44b6241517d43310da25b086e175b3b9c0b49 Hamcha <zikyky@gmail.com> 1402364070 +0200 pull: storing head-4ac44b6241517d43310da25b086e175b3b9c0b49 4c2353910734c89633d869f0ffccf8f565c93221 Hamcha <zikyky@gmail.com> 1411044679 +0200 pull: fast-forward
@@ -1,31 +1,1 @@-0000000000000000000000000000000000000000 c1ef5202b4e0351ba9c95229c0edf7dfbfb9bb33 Hamcha <zikyky@gmail.com> 1400868072 +0200 update by push-c1ef5202b4e0351ba9c95229c0edf7dfbfb9bb33 622888f76a4bd37398710e1590463719c2129297 Hamcha <zikyky@gmail.com> 1400868261 +0200 update by push-622888f76a4bd37398710e1590463719c2129297 d752cbde2090cf51b382e0060e0d13a90ef9dfa8 Hamcha <zikyky@gmail.com> 1400871184 +0200 update by push-d752cbde2090cf51b382e0060e0d13a90ef9dfa8 708b4d9119f776f28cc85a2a0f58b4bf1c1e7b43 Hamcha <zikyky@gmail.com> 1400871595 +0200 update by push-708b4d9119f776f28cc85a2a0f58b4bf1c1e7b43 722f61d1774f7fbd456a5ab611c54408e61f2cc6 Hamcha <zikyky@gmail.com> 1400872238 +0200 update by push-722f61d1774f7fbd456a5ab611c54408e61f2cc6 1093f2858a4572a7a141c96f251f273da4d55c89 Hamcha <zikyky@gmail.com> 1400884145 +0200 update by push-1093f2858a4572a7a141c96f251f273da4d55c89 cf34a7265591f7c3f2d241bd7a554e96c85c68d5 Hamcha <zikyky@gmail.com> 1400935037 +0200 update by push-cf34a7265591f7c3f2d241bd7a554e96c85c68d5 6dd1040ce0fbc93348725498c912f0e19175d433 Hamcha <zikyky@gmail.com> 1400936080 +0200 update by push-6dd1040ce0fbc93348725498c912f0e19175d433 691816444999b3c2b424bdcef7eeb977fa8b18a5 Hamcha <zikyky@gmail.com> 1400953258 +0200 update by push-691816444999b3c2b424bdcef7eeb977fa8b18a5 ab41fa19ef0fbeb0088d8f325b1dc4280cbe9817 Hamcha <zikyky@gmail.com> 1400953627 +0200 update by push-ab41fa19ef0fbeb0088d8f325b1dc4280cbe9817 2e95147d7a2c86bb224527a5624c118b53f9c736 Hamcha <zikyky@gmail.com> 1400960301 +0200 update by push-2e95147d7a2c86bb224527a5624c118b53f9c736 718178fa1b3fc34b7d7d961792c09b4b7b531b3e Hamcha <zikyky@gmail.com> 1401303609 +0200 pull: fast-forward-718178fa1b3fc34b7d7d961792c09b4b7b531b3e b473be4e130f0ee35eb42d4037b2c99ee5003326 Hamcha <zikyky@gmail.com> 1401319911 +0200 update by push-b473be4e130f0ee35eb42d4037b2c99ee5003326 c09136db3f6d1b79503253d341373405dd2f0e13 Hamcha <zikyky@gmail.com> 1401541838 +0200 update by push-c09136db3f6d1b79503253d341373405dd2f0e13 a06d1fbe75dfe3b2ebe7e03bed4f97c8b05468e3 Hamcha <zikyky@gmail.com> 1401998815 +0200 pull: fast-forward-a06d1fbe75dfe3b2ebe7e03bed4f97c8b05468e3 a8f041ca842f9d4b30406cf727910b74b3cc92d6 Hamcha <zikyky@gmail.com> 1402149856 +0200 update by push-a8f041ca842f9d4b30406cf727910b74b3cc92d6 464d078f996682b5330d9821891c67f6e58c303f Hamcha <zikyky@gmail.com> 1402151936 +0200 update by push-464d078f996682b5330d9821891c67f6e58c303f a71ae79e4cf33baeecab2eeecf21ae31d35dd99f Hamcha <zikyky@gmail.com> 1402152722 +0200 update by push-a71ae79e4cf33baeecab2eeecf21ae31d35dd99f 0ef1467fc037c2b698808c4f8670b06f437a44c5 Hamcha <zikyky@gmail.com> 1402152850 +0200 update by push-0ef1467fc037c2b698808c4f8670b06f437a44c5 b83c2375bba608232746064adfdb067cf57e5d80 Hamcha <zikyky@gmail.com> 1402175263 +0200 update by push-b83c2375bba608232746064adfdb067cf57e5d80 4ad51f9dc87b6aa48cb614030521d957b8498622 Hamcha <zikyky@gmail.com> 1403296415 +0200 update by push-4ad51f9dc87b6aa48cb614030521d957b8498622 f61d5b2caadecbdcf54d2d0ad7b131ca2adcdc28 Hamcha <zikyky@gmail.com> 1404003524 +0200 update by push-f61d5b2caadecbdcf54d2d0ad7b131ca2adcdc28 0fd36c65d057f7ce244a4e9a335d698f075530e6 Hamcha <zikyky@gmail.com> 1404079685 +0200 update by push-0fd36c65d057f7ce244a4e9a335d698f075530e6 694dea2e0fc5c15b1ef710cee6f953b1afb623bd Hamcha <zikyky@gmail.com> 1404079969 +0200 update by push-694dea2e0fc5c15b1ef710cee6f953b1afb623bd 695dee0b1313795711418347aedd65f5bcbca02f Hamcha <zikyky@gmail.com> 1407086961 +0200 update by push-695dee0b1313795711418347aedd65f5bcbca02f 83ac9915be5493cf66f1f96de88b5edce6c39929 Hamcha <zikyky@gmail.com> 1407714965 +0200 update by push-83ac9915be5493cf66f1f96de88b5edce6c39929 85b4c8d2256c11c570cacf64895353c0b9bd374f Hamcha <zikyky@gmail.com> 1407715015 +0200 update by push-85b4c8d2256c11c570cacf64895353c0b9bd374f 9c007b2a800ccd64ea6589e3aaf436dd386c5879 Hamcha <zikyky@gmail.com> 1411050084 +0200 update by push-9c007b2a800ccd64ea6589e3aaf436dd386c5879 c91a524dd7612f6b6b1a10132e0315ee38c4e7ac Hamcha <zikyky@gmail.com> 1411050533 +0200 update by push-c91a524dd7612f6b6b1a10132e0315ee38c4e7ac 2ba3de09ad5a0b0b58d543705380a9a44a31ae2b Hamcha <zikyky@gmail.com> 1411050656 +0200 update by push-2ba3de09ad5a0b0b58d543705380a9a44a31ae2b cec17859d0a08acd01b9297297b32881bc4f7104 Hamcha <zikyky@gmail.com> 1411488467 +0200 update by push+fcf776ea249603cba21a7e735ac877482693b3e1 26aa433ce02a16e4f0887189d56ca66cc0fab283 Hamcha <zikyky@gmail.com> 1424005457 +0100 pull: fast-forward
binary file changed (282 → absent bytes)
binary file changed (587 → absent bytes)
binary file changed (884 → absent bytes)
binary file changed (34 → absent bytes)
@@ -1,4 +0,0 @@-xßOÛ0Ç÷Ì_aü0à!ñJ 4ÖÄ+L Á@´M×1M¨k{±Óö¿ïl(Ý&M}jz¾ûÜÝ×çI=B½þlûørX|¿:AJtuûñülpBÈ×þãâ};-.ÎQ/})[»Z+& 9ù®3Ïçé¼êfLk²ð¬î>·®Ä4ùS©lþJïðð0{WÁJM cP¥3øÑÖ³µrB¹¤XÿrìÄÂO ^±Æ-ß÷¹ÚIA3ÒýÊZMPÕk.J¹µ5BæØº¥¶Âaä C!:Ç>$`-ojãm84ÃÊRóIÒºZ¦[~d3}¡-¿hÖEÿÃlûnx|TÝmÍkUêyªÔ¬D9zh÷÷v÷ÐOÃÆâì»{_-BîïéÖKUérI³²¡ºÌ±a|Q? ÔÔJÄ%³p'^(>zËT¨dM3¸ #©Óî2lFtæ½V=AdÕûÌG¾¸VÒÌ<eæÌÄÔ¸%¦oÕÈAFp¡î⻢Úê²"µu`]bzΡF`ù¾Dk-]z\£eªÒLS!a¶¤dÆBH+.k>iÐã±7"è¿»Q;{~WÙäôÚèõ-m+=ïô%¼ÊO"wÄä¨uU§ugJ½)³=Ëþ_ÀaÕª(×usì)¼Ðuh°m¼ÖðÔxÒκ9öÆ1Wó5j4n½ Wo×Áö2}¸²øfûõ?hí³4ôªÙå¢D£%zí[1;RÜm éiÜE>7ÆúU±öúéþÊ{"q'Ióø
binary file changed (874 → absent bytes)
binary file changed (147 → absent bytes)
binary file changed (488 → absent bytes)
binary file changed (321 → absent bytes)
binary file changed (178 → absent bytes)
binary file changed (1258 → absent bytes)
binary file changed (1451 → absent bytes)
@@ -1,2 +0,0 @@-xA-Â0E]çÙ$m".½d&¶hl qQOo®àêÃ{<øi-eiÁZÑ<ôY¬]Íàc&bJnBAïPmTåÝ4@2q)[I$QDé±l=sYѧÍkÕ7*i&}þ.Ïý¹_ ×)å¢ÁôÑ 1ªÓ~É_ºoLMXW!.¢~ÛD
binary file changed (160 → absent bytes)
@@ -1,3 +0,0 @@-xA-Â0E]÷Ù$ÀýL2µ¥¦)5]ÔÓ+¸úðßðcÉyª-NuQÆOäZh"jG{ÖFú1¡À0$qдÉRJ} &`á ÄÆ2¶§½eSÊq$uýNó1÷W¦é}%ßXmµï÷ê¬Q뮵íZ¿¤î)Ûg*â=¯Ý÷¥BÆ
binary file changed (1705 → absent bytes)
binary file changed (167 → absent bytes)
binary file changed (1791 → absent bytes)
binary file changed (1047 → absent bytes)
@@ -1,2 +0,0 @@-xÎANÃ0FaÖ>Ũ+Re'v¤-±`Á'ø=3i£ÖvÌ"^í>éq+eéäÃðÐ7UÉÈhÙØ \ÌyÎP9ç¦1ÖNóèdÈQÎÂóÄ Äì^ÃCXØ'~i} ðtú]®ûu;,·#·òJ.Ø`c²q¢gë5÷z_ëú/d¾ÝZ=Ó;:XéUèÀv,U·ï®ZE+ïOæøP
binary file changed (321 → absent bytes)
binary file changed (931 → absent bytes)
binary file changed (179 → absent bytes)
binary file changed (499 → absent bytes)
binary file changed (1761 → absent bytes)
binary file changed (70 → absent bytes)
binary file changed (1535 → absent bytes)
binary file changed (478 → absent bytes)
binary file changed (321 → absent bytes)
binary file changed (918 → absent bytes)
binary file changed (151 → absent bytes)
binary file changed (1770 → absent bytes)
binary file changed (147 → absent bytes)
binary file changed (115 → absent bytes)
binary file changed (178 → absent bytes)
@@ -0,0 +1,1 @@+xÎMjÃ0@á¬uÙZi4Öe×¹ÁXIL¬¸XJÁ9}} n|ðÊRëÔ1ú*J (!¤(q,ɧsPdÍ×Ô^åÙAÆr°¾£D?pI1RÂýèÅ~õû²Â7×rg8½§ÇöØÎ·ÊÓüQú¬2³Öìu_ëò/d.R_WYZmý³=¯PxùÝGÈ
binary file changed (319 → absent bytes)
binary file changed (884 → absent bytes)
binary file changed (1184 → absent bytes)
binary file changed (918 → absent bytes)
binary file changed (1391 → absent bytes)
@@ -1,1 +0,0 @@-xλj1 a×zÁÁ®+ .]¼Àh4k/kYËF8OmÒ»=ðq~nµNq»¾@0Æ£u£ËÖjYsJ6RL ©ð0¨ VytH8dC¹'|LbFgC)c¤èÙom U¾~§ù5¿Î×JÓýÈ~vÛGo"Ð ªmÝÒº¼ûGêfý§\ågÙC{vh#Æßê¡ZE_
binary file changed (1072 → absent bytes)
binary file changed (178 → absent bytes)
binary file changed (116 → absent bytes)
@@ -1,1 +0,0 @@-xKÊÉOR0µdp÷t³°LädàdÈÀðïß¿¦¦&&&& r200ôô/àÞ¶iNÓ©ÎêèÂóçJ8¬^<W
binary file changed (980 → absent bytes)
binary file changed (40 → absent bytes)
binary file changed (180 → absent bytes)
binary file changed (918 → absent bytes)
@@ -1,1 +0,0 @@-xÅRÁn1Í:»í¡AÑ Ò(¨)4"ôPE²«zmÇ7 (ÿÞ1¹¥×ø`Ù~3OïÍóJÛ\|ÎO{§ð}4»ù9º¹Ñk+ª{òÙ8í½´[íVmUÔSYx*Ñcz¬jg=Ácºú]¡¯d¼#lºA¿U6.áÓW^×-Òº®?!rê?øÜFbIJ)b}¥Qàñô²ðm·o@£æèôn_ò)ÏááL\YCh¨·Ø9]x[ÊJªµXvL5&ët<Ì?î¯YKâæbÍ\è¿lL"â«!SG¯» l5,²CX6¼1OôUjJV6Þ×Iùq8©uof²F0¼±EÆÐQù<ûÁ¶Ã6¶§#2³Tr@ÀkvµA45ß§}míè@Ä^Ksð.z.ÙR^+jît¯ûIeûFÖæÖá©òoMß4 ºâÌd±¸q.`òÏÿ°mé
binary file changed (682 → absent bytes)
binary file changed (208 → absent bytes)
binary file changed (161 → absent bytes)
binary file changed (1159 → absent bytes)
binary file changed (67 → absent bytes)
binary file changed (918 → absent bytes)
binary file changed (592 → absent bytes)
@@ -1,2 +0,0 @@-x¥TÁn@íxr"$¶RUU¨¸MR5vªÄU³.(K%¶[÷ß;kÔHå`Ïî̼y3oà^È{¼~óêíÃ\M/¿]~ÄÍWB²wZEÉ÷'Ã_¶e[±rÁñëe§ÞÌ5¹mË"ÛuȶũT9Ñ*â>0ͼóæ¨7zaÜ<aiáÔ~Ô¡p¥uñO¹^KõP)©a4ÂÜ7êàÜÉå×¾ÇÕlöå?æ<+ÎÄ+j7Ã[·ÈùtÇuÝ m¬è¦°5\æº%MTíkûÈxL¥¾y ò4GÊ^2wï0ibFºÀÉUd<.µ¤\øp2B$ë ä)R¦XÏ3ÐR®ë(ã5ó?_©_ýføåÚ¼HÖ@i`çs)mY+ÍãT0ÍáW<hX8Å(ýéKu¤AÇiiTÁûM,xÈ ¶¯¸ÜaßǶ°ÛÊiÍíRa>ö\lD»´6êY+tì KØýQß`Pè_ 3mÖÍùT6KE¤ÑÙ/z®ø ¿é7+Æ¿×÷óÿÇÚ×PÇ´x+%ãëÖí«Hh®à$RÃ3óò@»è6T>/üé9-Ö¡vãôz^ÏmªØ- }4Jq7®½§×©ÿ*ý¡X,
binary file changed (320 → absent bytes)
binary file changed (682 → absent bytes)
binary file changed (208 → absent bytes)
binary file changed (589 → absent bytes)
@@ -1,2 +0,0 @@-x=Í-à Çwà;ä\¥Çõmgk Õ¡+ìñ·õÿÇ/$`y.7Y°_<Þ¬±FïÕ»GBÓÆûYþVWèdyi°w4»G!\¬jrªÅZÔó0©Sx Ü<Þ_Òä2Ls.r[#VXóS'9
binary file changed (660 → absent bytes)
binary file changed (46 → absent bytes)
binary file changed (98 → absent bytes)
@@ -1,3 +0,0 @@-x¥T[oÓ0æ¹RÿÃQ7©´xAP)H[Ù±nS×iH^s²XsâÌvh- ßÎq2gM×Â$ò'çâïrì[!oáí»o^ýìÀéþÙñÕþñ!G%$0º4gwv¿ºn'Q!¾ %ELda(Üíx hÝó-ºæRx(à1Ç>1à Áºi0JzLÃh[òå6>nâÐ<Â1yôøáBo¡KußD`N±4Áï°.FC`bù°´QA\d3ÃeVý²{ÔÀ@pm@Ƶô#S235 ésÐS¥$ ð¡ÀBn§C¸öF+íw)g÷h`ðN¦Ó°ðÆUjµ°õáÛêÏçàù¾ÄãTDHV[=Õ:×7MUB,i*Ä>Yt&Í,~ueV,µÿpe5%¤¦-¼BqñÁ©ò©³§©#Ö¶Ü]áÐÀÚ¼Èb©Þ¼Ã É!5ç7´kkÁm Õé¨-'Hûõï)¦*½P¦¹ A°Æagg~ðü+7 ÌdJÐ(Þ¦)Í«Eüxà,`YÂâI%°xÎ(©*謺Èh2¯GAV=]Êÿ ÝJ ²ÚRïþ°ïzPêzÓ&Aøû9çÛÔomßÈ@n ÿºoÕ©8uÉjÜilz8õÕ´Úäâ8LOíµ°1öæð2i pÊ@ãíÃÊ;ÏÒÅKÄLoR×\ßî¥×ëíõzþªñÛݤûÈ0^ÍCÙ*ÙnV«ÿÛõ¸ã
binary file changed (absent → 891 bytes)
binary file changed (161 → absent bytes)
binary file changed (320 → absent bytes)
binary file changed (2871 → absent bytes)
binary file changed (122 → absent bytes)
binary file changed (156 → absent bytes)
binary file changed (157 → absent bytes)
binary file changed (505 → absent bytes)
binary file changed (502 → absent bytes)
binary file changed (320 → absent bytes)
binary file changed (433 → absent bytes)
binary file changed (159 → absent bytes)
@@ -1,2 +0,0 @@-xAj!E³öµei« CÈjÈ5´¬drúx ¬þçñ|îµdÌË8E@Lb8ZRÊÆ8o2£Æ³Bó릾â)m@-Éø9òÖ¡³1o9¡ó¼-^PÅÇØû ±òáú[çñ|¿×X>_¹×7Ð Îj $D5é¼6ä_ºÉÀû£3¥qϥݡõßý<fWcJ
binary file changed (15 → absent bytes)
binary file changed (158 → absent bytes)
binary file changed (586 → absent bytes)
binary file changed (281 → absent bytes)
@@ -1,2 +0,0 @@-xÎA-1@Q×=Eö$MǶ âÒxT´vëBOï\Áí_[cOiÕçR@%R$ÝJæå2äANg$JÈçÄAÝ$syv`62±Kôeq¢²Õ³75áÀ1x'ï~k3¥êM`÷ïûçp2>6Úê(`À#zX£GtK]Özù¹ÓdÒ5}Aov?¹C$
binary file changed (1466 → absent bytes)
binary file changed (281 → absent bytes)
binary file changed (absent → 208 bytes)
binary file changed (1078 → absent bytes)
binary file changed (519 → absent bytes)
binary file changed (116 → absent bytes)
binary file changed (1050 → absent bytes)
binary file changed (156 → absent bytes)
@@ -1,3 +0,0 @@-xuRQoÚ@Þs~ E'$ÑiUUJ´M®9§9qäÂÓmûïó](¡ñBÎþ>Ûßg?ió½/~Çgðx3¹ßÜàûZmD9%«ggñß(ZYi¯Hi^É©4j«?:ð£Å(RëÒXM%´ÊJ¸$á°.ÜæÂ^p0|ÇÂþ°3|£dT¤Fr÷SÌûD¥üzNJ»ÓôéÕØUòMñ4;Ý:Âur§,¦dìÚÒ +£7å¨EqjíqrQHÖÇgb È=s`*[ø¸5aTûWW0l¸Ìÿ?å@ÚÜ9Ú8ȬYG{ Àîó®`f´Dyh¹>Hð J_·Ï SS¤`Q»PYÅn{¤2Òÿ¥9¦«@=dÉ}©ª(E3ï-&Áu̽®±@eRá¼/ߣ¶9³9L,-épTå` <0ò'zøÜëÁ¢Ýº5aAñl[b«»XóÊZëQúrBþáñÞGÌD¥ÉÌ£1«ªãëÄ9e/éÂÌÖÂ+µ"8ÿt~°ÔÆB³!¬Ô+Íá-FÑa 'ÇÂÆ£Êjè)¼·au.<Úê ´( e[»v£ð#cñÌ÷Òæû&¾¨v¿$iu T¢ëÀ5\ÚõMu<Iôx°QG
binary file changed (641 → absent bytes)
binary file changed (1552 → absent bytes)
binary file changed (116 → absent bytes)
binary file changed (696 → absent bytes)
binary file changed (282 → absent bytes)
binary file changed (1432 → absent bytes)
binary file changed (533 → absent bytes)
binary file changed (321 → absent bytes)
@@ -1,2 +0,0 @@-xMJ1F]çµêt~AĥרTjzÊt$ ñô6x·ï}<îéë×§9DÏR} ¸HäÂB³çàmMÁ§ÕÍù¤!û²äè\k V.%óìxYKöêê-FC_óÒ¼SãÁË^×ÇÛÖHo'îíB²>Á3ZDsÐ#mÊ¿$sÚtê¶÷!0;Ðw×-OºoPt§¡r#¥á g½ÉÝü|7Q,
binary file changed (1874 → absent bytes)
binary file changed (1142 → absent bytes)
binary file changed (159 → absent bytes)
binary file changed (1473 → absent bytes)
@@ -1,2 +0,0 @@-x+)JMU041c040031QÐKÏ,ÉLÏË/Je`ú¿ >sÂwßõ7NËí_<³ìê PðN-IÎ(-`¼Æò¡EóÃÕ%óËz+¹³EHÚBÍñMÌNMËÌIeh|oz}³³»Èª¥%·øW~˪IHÌ-ÈIÕË(f0òe_%£Ï,<?)9ñâ-#ÑÍ:
binary file changed (160 → absent bytes)
binary file changed (1759 → absent bytes)
binary file changed (161 → absent bytes)
binary file changed (164 → absent bytes)
@@ -1,2 +0,0 @@-xußOã0Çï¹ 5h¥µÇN: !Äøy:mO¡qi´¬)L§ûßÏIµG_Û_;ö'~ÖæoÒ=¸=»»]_ÂýZmD9!«ª{éß(ZÙhßHyÙÔÙ©<ÁµÞK´EjYKðÚ- .l´"lËe祰G ¾ÐEíÃãu6_(5ÅÊ.«ÜHnî³fÝà Q-¿ÏHi÷9|ônìâË@6VKü¬á2»Ps2v±4è®ÆËå(¢4 ì RTR£Zzp|£#HOabò?ÝL§øÚ #6,|$gÖNj×H¼è×=ÄÉú¢ÂhÊJÅW¨ KC&TÖ|c-¨dÏ(ËMyÓÆ*ô´Q:Q!+ý//1_ÔmìúTSÕ¢÷t8Iùî*Þ§ÊäÂ!0)û;úAÒÀAáqLmà'e ôÔwªlñéôÆJ>bWÃÃCǽsSVNW5öúó%¿óSÒκS ]ó7¼ÞsÄB4üܳhjØgï*Ψ8¢,Ût¾©Òú ¿ñ>âj¾lzñÐLGõ#ܺ2 Óá×¢í+ügFÆè¢±{ mxºáñ\0·ÓµNÍyIL°[Ç5V/¼11ï5ñjÅÃ!ô²¬@0GÀ BíÖæîxÜJô¤ä\
binary file changed (603 → absent bytes)
binary file changed (433 → absent bytes)
binary file changed (706 → absent bytes)
binary file changed (158 → absent bytes)
binary file changed (456 → absent bytes)
binary file changed (280 → absent bytes)
@@ -1,2 +0,0 @@-xÎM-Â0@a×9Åìü5Ñ×&[jl©qQOo¯àöÁ/͵ ÆC[EÀùÂÎX":¨±=u¸d)ø²S¯òj7©Ïb0¯{ v(µeB)GÅ6Ì+ܹ¦áü§mÚ®ÊãóæzícÐ4Ñ ª½îkMþBê³dhÛ"oõÌP@Ú
binary file changed (185 → absent bytes)
binary file changed (1015 → absent bytes)
binary file changed (181 → absent bytes)
@@ -1,2 +0,0 @@-xK-Â0@]ç³dL>î=Ádm°i¥ÄE=½½ÛÇ{ðdiv0z8ôµ²ø ÃàlÈä÷(^t&ëÁ\0zóZæ¤SÒbÁfd·èáG6£M9*þôqYáÆMFó·¾¶×v}6®ÓIvM¨v°pD¨vº¯õòW¤î{xÔ©ÀÈsêüT?<`D
binary file changed (682 → absent bytes)
binary file changed (584 → absent bytes)
binary file changed (931 → absent bytes)
binary file changed (179 → absent bytes)
binary file changed (906 → absent bytes)
binary file changed (1063 → absent bytes)
binary file changed (1333 → absent bytes)
binary file changed (581 → absent bytes)
binary file changed (178 → absent bytes)
binary file changed (82 → absent bytes)
@@ -1,1 +0,0 @@-x}RQkÛ0Þ³ÁÿáP÷®P¶QÚBÜm ¬l¡MÈCæb]f,9Ò¹]Öî¿O²;×-cz:ÝÝ÷Ý÷´QfïÞ¿ºOàjúår9½ü_oÑ*òRÿppþ£8ªhÂg¤¢lêÉ´¡2F°áNÝew%ZͲª%Ø5\ÉD8ñI¶'ìX'%·ï;ÈúfèÏß3¢Zü§¾$©\¦ð0G»5¶r0[,æYÐéê%ÂÉ ¬GÙ@GÃÛ8Ïô®¤#0[-ZÍ+L`λ3V㨠éù3øS¡Zº 5É4®«êÍk¡Ðö¸AKsÓ:ï¯ëý7C=¹-LS+t`Ã@pðRÙÁÓqÔþ ^CþÙmèßuZ\cö@ÇoüöØjµJ%°æÞá'JäÏö3tØ Ñä÷.öub?é°¤J±|ýì´<:³:1VþBqzè¬<~ºéuxwÙ¤0Ú¯Ö¬ûíξ1´QÂ|ÿ Ú
binary file changed (673 → absent bytes)
@@ -1,1 +0,0 @@-xMjÃ0F»Ö)fEBýE6ÒE½4aË*ò¾"7Èö{¼ÇGµÌ ¬ýà#`N«4çm*iJh6ÒB@-þ|+Ãy´SÝÒR»Ñ:)t·ã4m²ùþηÚà׺yøzæù1?~®ÅçåjùiÐ9iFpD (úÚ¯q|K·õÀ°×6 Ü26ð°±o|=/ËB];®¥¶VwñIQu
binary file changed (905 → absent bytes)
@@ -1,1 +0,0 @@-x ±jÃ0;ü?dIi H!vKv¡³b"m9'¹¥¾{%7vª¶Ó}Ü}ÿ[Ärµºù3<mwíî/oÄWô>²ëO3ñUeÑy=¶Gy® e1G¢º²XàÝS]7x8ªuÆÆ½JV~&BTÿc²¶o3\_a\ß43»°TC¼[d1±o¢ó=çɰKQ¢2þ¥Së5ªßâîO}¡600eU¦ÌécZ2¥ËJÍZjöëué\¹okßsð
@@ -1,2 +0,0 @@-xÍjÃ0{ÖSì=¤Õ%¥Çûëõ§Ä¤²«Ò§¯ó¹Ì0º¶6wbæ·¾TrÈ:fܨ.&¸¦h²-ØoÙ°tÊ^´GÄP¼Öª«%MÈyI})\ÜûuÝè,M¯B§¿ùö¸=>.M毣®í\°ÃࢵLËÖîk/IæmýÝ&zFöÏóíFË
binary file changed (281 → absent bytes)
binary file changed (248 → absent bytes)
binary file changed (11349 → absent bytes)
@@ -1,4 +0,0 @@-x¥S]o0Ý3ÿáæ$`ëZ¤L-]ÕTëÚJÉB\|Äf¶I2Mûï³ ¡4Ûf ùã^{Î奿/p}ýñÝÏèfwßfw·ð´GQsB.(ÙVÂEôËu\gÇi[#|Amß-«ºzϪ9ê;BºNØí͵1× àP @Sî.|oI]nJ¤ð(§?vjd"®HHÿüPJeÌ<äÀ0Q¸¨þiw(ÊÜÐ$Ï+T}{f§X °o×ÁÚ¦>aQTDµNå®c(Jʬ®¡ÏË9SÈt&Ödý¹¾Æz+o¾\>¿¿/Áû¾Êm¿-ÁËDƲÉ@dÚÍääÙyø3¹*9K Bl"íÈMÞ2üq)Ñ-Ë9Õítn#µàæêº#`Æì'°# øÙÑ÷ZÓF[yÔÜSÓp<±ÞÆ¥ÖFÈF¨ÃL@2-ÇupÒÕ8ÙëÿÖÄÎ,i[øÜ©ô{R·Óÿ¶%W\Ás<_#Ûªìx^øj1f<¬ÄºtÛ{h4tÓßó¶°û®å`ßFÓó¾ò>üP.
@@ -1,3 +0,0 @@-x]oÓ0¹î¯ð|µ]$^5!QêD*éÐÝF*@Ó.\Ûk¼:vOVÿmPѾïsìsÎJÛÏß¾¡'óÛ,ÿ~w-(5º[~X|Êùz2ÏçèÛU~½@ãøå53N²iB.o0Â@õ¶mãö"¶õä÷dXã`¼rÆNioWjã¿PÆÉ¤7©d"¥¥æ_ U$4jàÌ¢|_Ix¿K0È@"^°ÚIHùÇèF$¥ @ËaÖÊlPQ˧[.¹sÕR'ØÁ^KWH 0;AçNðm°tXÇkUr5÷aBX¾P:~ö¸Wîg¶e½Öô«îè¡'Ù|ÏF2¶±5Ú2ôÔêNÏÐÏåÂMMG<>¦£ ¤ÏâÊ=R"Á¥2Ê?B¨m¿µ¢Ñ2ÒÊ?×ÌùÊpV>N¯»{GIÒF§T«?²»ñ&_.%𢩢YE-áSÀ굯.ò¬A%ÌgB«ÿ"fEc6R£¸W¾«S;ÅQÌ{ëÀ¬¾uÐÅý?í%GQ¾YÝAh§xaÐÄwCOù):ý æ{.
binary file changed (931 → absent bytes)
binary file changed (280 → absent bytes)
@@ -1,1 +0,0 @@-xKÊÉOR0·`HÌɱRHHÌ-ÈIååâå2x¹8Ó3a2zÅ ÉäÔÄ<TQ®^¾>ÔËÈ332Ißå
binary file changed (604 → absent bytes)
binary file changed (321 → absent bytes)
binary file changed (321 → absent bytes)
binary file changed (616 → absent bytes)
binary file changed (116 → absent bytes)
binary file changed (445 → absent bytes)
binary file changed (955 → absent bytes)
binary file changed (178 → absent bytes)
binary file changed (762 → absent bytes)
binary file changed (3015 → absent bytes)
@@ -1,4 +0,0 @@-xQÑnÓ0å¹_áí!1Õ$ ki¤CC6¡L¦=¸ömãÕµC|Ó´Bü;v´2Ƽù^ßsνç,´]ÉËWÏ£ÙU^|½¾ %n4¹¾y31öù4glVÌÈËâÃ㤨¹q-5\3vñZ"Vgµm·§±W¬øÄvkÀÃ3Âd,QÒ,éôvm\úËx2ôà0-\fÉû-±à[£¶)ÍA0û-(}R²À>%¢äµLo·ÑkJX B Ù{@Q6UYLXßN´2kRÖ°L©ÀM,£¤R{ ®@JÐ:Ý@NéUt*NÔªBâjáoãRZ±T:¾÷tè{¾åý¬¿õ¯,Ðc,9ºÍgçÅùí¨UFÚ6¶F[.IJ!r|B¾W|sß?>þ»»ËF"¬7uaå(Ò2Ê/!Õ¶/l4Daj߯ÐÜù¨¯ýÓÃÊàáÊÇS/¹w`@[z|éíldâãóíOˬ/»e¼^ùTé+¿Èá_¸ßâ·MþUõI¹ÿ«FvG<úÕ¤Ö»ÌBtþØàPöKX
binary file changed (181 → absent bytes)
@@ -1,1 +0,0 @@-xeMoÛ0w.ÐÿÀ5¥Aw@±a½µÝ!Ãz(ú1`T¶Z,i]7ÿ~¯ä$ 0")òá+×Ö×ôñìËçwZùAoç$Iç;KÓöáýñÑñÑnÍ^9n)uÊZZ=<ÜRâ.XîØãÝ>F¼Ù-ý²ò*Gçggtã¯I¼(û{Úª2oKã+Ý´§ÿf§NiFÕL*QçuoU$å4qW³Öª¶e'øÖs2kÚúå7ªVv±Ì´RiÃ(\ 0§> Ú yë~_IÝÖ%Y£B/dð¸l¢áFJ½×N÷ß!~0Ò^d|ºRÉ4ÛÕ´î])kdKÓo·?ÎÉ;pZûHΧ9àñîî|/Æ=<TTÇDSÃKzªz¯.¬ÕS¹ÏèR<¶¶ÊèÆåÉSF«K ë»ì¥¥)ƨ@ésÃ>ÏVIßSd¼Áîß¶<>L&ô;Í®1²í¡ej|ȯ÷Z"cÖFD@ÏÀ5§2ÚÆöÜv«+ÏyoycÑ6A,GQ ¿ ¤6?ø]·½Û°>]Åäãö¢?½yª(&#»öÖú!Ã.òâ´ÛþàÚ) $Í:ÓñB¶ÓlVøíýF;¯?/êpäÅydvI:³TtØûç9_ë»Àb$WééÞ©@4Úl°þÉÉküã®.çtŹ 4Ï W¦ÜÔÒû È+ò6e&5Ayn)pN¹W·ªBÚñ]£4såoÁ=îÃ_FKs
binary file changed (178 → absent bytes)
binary file changed (489 → absent bytes)
binary file changed (953 → absent bytes)
binary file changed (775 → absent bytes)
binary file changed (169 → absent bytes)
binary file changed (529 → absent bytes)
binary file changed (493 → absent bytes)
binary file changed (627 → absent bytes)
@@ -1,1 +0,0 @@-xEÐAKÃ0`Ïþ좲vUAv¨ UeÎÒæÓ²¤K¿¨Cüï&ÛÔBÞäÉÔÊÔpv~rðávz7{ήáþ2\ x"+õ[Ãø;DN!,¸ÔðѢŰ(W±ÿã©i]Ì:ñ¯WòU¢+N<)6;xEZ® ×[-Àâ.@hصxÄNm¶ÙiByÈ.&Ô/7²QÉ?iÜÒJ±ê¨ò@ßÝûØw ÓßÀóEÒÝpe§Ðæ/Æ »öäfuÎFÎªËÆu÷XµS}âge8²ýð/¡6(é=_.3¤vÏû}«q1
binary file changed (711 → absent bytes)
binary file changed (168 → absent bytes)
@@ -1,3 +0,0 @@-xA-Â0E]ç³ËdÒ¤ XpáNA/¤[j¬¸¨§·Wp÷y¼?N9HM!$î¬ÓÔɱQ!¢´]QªFZÆPdñö3¿-x4«¸Ñ]b×ɨwurM´um,+á?¥f8û{ûï0.ãr|d?<«8åÈIÖÎj-¢Xézð_À*\/·;Ú{+~rB4
binary file changed (281 → absent bytes)
@@ -1,4 +0,0 @@-xK-Â0Ego.Hþq$nã%}iC ºzëî{R«µtRïúBYªd®-¥Õ#Ïh¼u6©ÕC2>;"öÀ îl~ÃZ¢J2j©ãè·Á¹>-á«Om+Ö4!?e^çõ<V,·CjõBs²RÁKÎÙF·kþØ¥-cëÐT ¶¶wyx#ö"F¼
binary file changed (580 → absent bytes)
@@ -1,1 +0,0 @@-xuQßoÓ0æ¹ÅͼlÉQíuM"vDad4íÁµÝÆkøÚ´BüïØIÄ*ow§ïÇÝ}KãðúüâEv2¿ßo¯¡¢Û»7÷3` â×óâ¼Ã·wåÇÓWP6ÜzMÚYn¯?1`Q}ضmÚ§®Ycù÷QkÉCÐ3$Yu~û±>ÿÊx2ôäU\ÙF[R¨[½ËÙÌYRòP+¢ïrFjOÕ§ *ÞxEù]ù6¹`EF*>(Õ¶N¿'-2ì§Ñö ªFræâ6Þ3hɧQ¾RPðl:@ÇÎÙM¤t&^4º&ð§q)xJ¶¤MúäØ|Ç{l8ûªÈöpÙÉýl~U^ÝZm¥kSgãrXméÀéü¬ùZ-Âüôlúk:B|x(FÏ&Øÿtéä´ÌÙF[z×·NnJ"H5a^0ܤ¯£ûë u¸ °%t§Yq¡ÙA\}¬~Úk÷õ!¤Ï%!¾Ü]ú.¥ð9Þ¬ClÃuX fÈñó~g q俳5ü
binary file changed (616 → absent bytes)
binary file changed (56 → absent bytes)
binary file changed (1002 → absent bytes)
binary file changed (280 → absent bytes)
binary file changed (614 → absent bytes)
binary file changed (281 → absent bytes)
@@ -1,3 +0,0 @@-xÎM-Â0@a×9ÅìN~ÚKà&ÉDK&]èéõ-n|ðb-eî@äv}cuH^Grì ÆÑ&g\¢,iBë4zñ*Ïql )AmÀ>zKä#JÊcÊ!Ö·~¯+\¸Ä;Ãñ3/ïå}¾XË 8¹È QýêoË_H]k] Õ"°5yHkÐú3Ô«/THg
binary file changed (615 → absent bytes)
@@ -1,1 +0,0 @@-xAnÃ0sÖ+xË¡@AJ®eAc¾"©Øp®rH^_}¡ÇÝÁbV¶ZÞ¶Á¼1¤Í,y0%> é(fV÷àÝî "M§ÂC0ä¨QÓH1yÁ{Î_¡3süló¶Ã «Ì§÷²¾Ö×ùZy¹}ÊV¿¤@)aô®·ýZ³Ü5ù²Ù½U7Y¦în¸Gõ
binary file changed (1550 → absent bytes)
binary file changed (156 → absent bytes)
binary file changed (988 → absent bytes)
binary file changed (180 → absent bytes)
binary file changed (605 → absent bytes)
binary file changed (978 → absent bytes)
binary file changed (958 → absent bytes)
binary file changed (511 → absent bytes)
binary file changed (455 → absent bytes)
binary file changed (542 → absent bytes)
binary file changed (281 → absent bytes)
binary file changed (169 → absent bytes)
binary file changed (319 → absent bytes)
@@ -1,2 +0,0 @@-xA-Â0E]ç³T1i¸òcÚRH;.êé xïÃã¿TDFÍFç¡·lÎg{fËÔ¶!4xGJb²Éß:n,i`8}ÆiÖËCx|R3C>¢'ØãÑÔµ^iþK2W^2üTØJY´BW;ç"0¨¾ºù¢;U
binary file changed (60 → absent bytes)
binary file changed (915 → absent bytes)
binary file changed (984 → absent bytes)
binary file changed (557 → absent bytes)
binary file changed (1169 → absent bytes)
binary file changed (498 → absent bytes)
binary file changed (169 → absent bytes)
binary file changed (727 → absent bytes)
binary file changed (1010 → absent bytes)
binary file changed (281 → absent bytes)
binary file changed (554 → absent bytes)
binary file changed (179 → absent bytes)
binary file changed (185 → absent bytes)
binary file changed (158 → absent bytes)
@@ -1,1 +0,0 @@-x+)JMU041c040031QÐKÏ,ÉLÏË/Je`ú¿ >sÂwßõ7NËí_<³ìê PðN-IÎ(-`xûîý½¦+%ÕOû_ýöC\~í¨9¾Ù©i9©ïM¯ÏcvvYµ´DàÿÊïryP5©¹9©zÅK:ú¬5/Åë{³=þxêáÝ]\w]>¿
binary file changed (178 → absent bytes)
binary file changed (148 → absent bytes)
binary file changed (208 → absent bytes)
binary file changed (1040 → absent bytes)
binary file changed (207 → absent bytes)
binary file changed (281 → absent bytes)
@@ -1,1 +0,0 @@-xÎMjÃ0@á®uÙÊh¬èB Yõãñ(¢¢Èôôõº}ðÁVk@äÞFWïOyfÔ *Âya&ÒÉQÎ$sÖH.oîúàb9xvó2 )Å`Qí)¡óS°IÈR¢ïcm¾¸ÊÊpþ-Ûk{]nËýCZýël#Â;¢9ê±6ô_È\ùYzÛGyÜ๶ý¾ÀOëù:©F¤
binary file changed (1403 → absent bytes)
binary file changed (320 → absent bytes)
binary file changed (896 → absent bytes)
binary file changed (928 → absent bytes)
binary file changed (208 → absent bytes)
binary file changed (912 → absent bytes)
binary file changed (424 → absent bytes)
binary file changed (1323 → absent bytes)
binary file changed (675 → absent bytes)
binary file changed (147 → absent bytes)
binary file changed (1759 → absent bytes)
binary file changed (207 → absent bytes)
binary file changed (1028 → absent bytes)
binary file changed (15 → absent bytes)
binary file changed (281 → absent bytes)
binary file changed (560 → absent bytes)
binary file changed (972 → absent bytes)
binary file changed (absent → 1358 bytes)
@@ -1,3 +0,0 @@-x}SMÓ0å)ÿaN6îP±U»¢BWl÷°]àl;ÓĪcGöDmøõ8in9)RôÞyó¡Ow7O¼À)\H2¯Ê8ú Î+kznÈÆlGK.¸N.äýFlG_*¥Óä¥.»l[UãèQI4þb±yxéÁäÒ-óø°\=mWq´¨(·®÷ Fï¹I ïHÅÑ+CáÅNõGíë}ý9+¸ÒLÚ"Ö¶Àg½eNTúé`)Ê+Ñhk^Èú^0³®>ÿFq=»-½ògv¾*Ñ/¸Öp@;¦x°n;ë ´à¹ Ô·ZíÊ 4;nd Ò¦(¸GGÍ4ã®#Õ±±i²±iZ6+a˼2{L¯ÁuhïèÙV¤LvÛ'%¯±¤t[Ài_±D}-/Ñ~ÍçØ»ÛSQzrÁ©ÝÏìnn`6d£Q§¶Û¿Ò;ݤ¥Ê¡¤° ^0±÷]¨-÷uÉÒ¸;Ú µx³1ûØÑ3<&¥tp©a<mòaGéudó¢Íz¶¶rg«Qm}9òvâM5ç£×ÕLE[Æ|úmô¿³cmÈ_±:ù÷
binary file changed (282 → absent bytes)
binary file changed (207 → absent bytes)
binary file changed (672 → absent bytes)
binary file changed (116 → absent bytes)
binary file changed (1457 → absent bytes)
binary file changed (281 → absent bytes)
binary file changed (1387 → absent bytes)
binary file changed (122 → absent bytes)
binary file changed (absent → 321 bytes)
binary file changed (172 → absent bytes)
binary file changed (626 → absent bytes)
binary file changed (321 → absent bytes)
binary file changed (507 → absent bytes)
@@ -1,3 +0,0 @@-x¥SMOÜ0í9RþÃÓ´ié©BÊÒJe[ Zõ8ìm,9qðìÒíg¬Ó %R¥ú<oß¼±o¾ÁÑÑÛ7¯~îáüäËÙ÷³øz/Ò~é¬Zìþ£8ª4÷Jà³p·¥o²í¥ã(¡PÄQR-âHV6w)¹ã=s,;];ÑfEÉÌ;0b-¼`M_y+Høä\ÃÛã:¸º%«9i5âÎëÃ2~±Ýèó¡01ÇM1.£qQÏH¼2E²$bwbkÞFãZì£aUöåº@yö ´ÿ òÞÙþkñw#éty£àDÕ(æòú'²ù!][]BÒßY¸ªé¼[{p@®°îsíæ+ä9Öm<^9¾O»h«"«½RX`®É¦LÙ´ÈJÁ8Ñ÷üx8úéI#Ò¡¹µó×ó¶ç^_èøwóÁ¹ÖÏíÀ^2t-®Î% }K©0Hjí &3ÐHw\7¸ÿÛè3ß§ÝLf³Ù,ݵ~ÚϤÈÝDV£©ÛGzÿ?} ¹Cn
binary file changed (179 → absent bytes)
binary file changed (593 → absent bytes)
binary file changed (960 → absent bytes)
binary file changed (absent → 8632 bytes)
binary file changed (absent → 63400 bytes)
@@ -0,0 +1,3 @@+# pack-refs with: peeled fully-peeled +4c2353910734c89633d869f0ffccf8f565c93221 refs/remotes/origin/gh-pages+fcf776ea249603cba21a7e735ac877482693b3e1 refs/remotes/origin/master
@@ -1,1 +1,1 @@-cec17859d0a08acd01b9297297b32881bc4f7104+26aa433ce02a16e4f0887189d56ca66cc0fab283
@@ -0,0 +1,1 @@+ref: refs/remotes/origin/master
@@ -1,1 +0,0 @@-4c2353910734c89633d869f0ffccf8f565c93221
@@ -1,1 +1,1 @@-cec17859d0a08acd01b9297297b32881bc4f7104+26aa433ce02a16e4f0887189d56ca66cc0fab283
@@ -1,6 +0,0 @@-*.hi -*.o -example -dist -docs -gendocs.sh
@@ -1,5 +1,5 @@ Name: Ketchup -Version: 0.4.1 +Version: 0.4.2 Cabal-Version: >= 1.6 Build-Type: Simple License: MIT @@ -10,7 +10,7 @@ Category: Web, Ketchup Synopsis: A super small web framework for those who don't like big and fancy codebases Description: - Ketchup is a very small HTTP server implementation, currently under 400 LoC total! + Ketchup is a very small HTTP server implementation, currently under 400 LoC (for the whole thing)! . Ketchup is also made to be as modular and embeddable as possible, if you want a cabal-free Haskell app, just take those two/three files you need and put it in your project! . @@ -18,9 +18,9 @@ . * Basic httpd functionality (IPV4 only for now) . - * URL Routing with parameters (ie. \`/user/:name/\`) + * URL Routing with parameters (ie. \/user\/:name\/) . - * Static file handler (ie. \`static \".\"\` as route/handler) + * Static file handler (ie. static \".\" as route/handler) . * Basic Auth (please use it over a HTTPS reverse proxy) .
@@ -1,62 +0,0 @@-Name: Ketchup -Version: 0.4.0 -Cabal-Version: >= 1.6 -Build-Type: Simple -License: MIT -License-File: LICENSE -Author: Alessandro Gatti -Maintainer: zikyky@gmail.com -Homepage: https://github.com/Hamcha/Ketchup -Category: Web, Ketchup -Synopsis: A super small web framework for those who don't like big and fancy codebases -Description: - Ketchup is a very small HTTP server implementation, currently under 400 LoC total! - . - Ketchup is also made to be as modular and embeddable as possible, if you want a cabal-free Haskell app, just take those two/three files you need and put it in your project! - . - Currently Ketchup comes with: - . - * Basic httpd functionality (IPV4 only for now) - . - * URL Routing with parameters (ie. \`/user/:name/\`) - . - * Static file handler (ie. \`static \".\"\` as route/handler) - . - * Basic Auth (please use it over a HTTPS reverse proxy) - . - Dependencies - . - The core parts of Ketchup are all depedency free, that includes Ketchup.Httpd and Ketchup.Utils (and to a certain extent, Ketchup.Chunked). - The dependencies required are for the following modules: - . - * Ketchup.Static (uses mime-types) - . - * Ketchup.Auth (uses base64-bytestring) - . - -Extra-Source-Files: - example.hs, - LICENSE, - README.md - -Library - Exposed-Modules: - Ketchup.Auth - Ketchup.Chunked - Ketchup.Httpd - Ketchup.Routing - Ketchup.Static - Ketchup.Utils - - Build-Depends: - base ==4.*, - base64-bytestring <1.1.0.0, - bytestring >=0.9 && <0.11, - directory <1.3, - mime-types <0.2, - network <2.5, - text <2.0 - -Source-Repository head - type: git - location: git://github.com/Hamcha/Ketchup.git
binary file changed (1502 → absent bytes)
binary file changed (12392 → absent bytes)
binary file changed (1681 → absent bytes)
binary file changed (13656 → absent bytes)
binary file changed (2571 → absent bytes)
@@ -36,14 +36,6 @@ values = B.split ',' $ (trim . last) items items = B.split ':' line --- Parses request body -parseRequestBody :: B.ByteString -> [(B.ByteString, B.ByteString)] -parseRequestBody body = - map sep items - where - sep = breakBS "=" - items = B.split '&' body - -- Gets all request lines getRequest :: Socket -> IO ([B.ByteString], B.ByteString) getRequest client = do @@ -58,8 +50,7 @@ where [met, ur, ver] = B.words $ head headers -- First line is METHOD URI VERSION heads = map parseRequestLine $ tail headers - body = snd reqlines - headers = fst reqlines + (body, headers) = reqlines -- Handles each client request handleRequest :: Socket -> Handler -> IO () @@ -79,12 +70,10 @@ -- Creates Acceptor pools createAcceptorPool :: Socket -> Int -> Handler -> IO () -createAcceptorPool sock max cback = - case max of - 0 -> acceptAll sock cback - x -> do - forkIO $ acceptAll sock cback - createAcceptorPool sock (x-1) cback +createAcceptorPool sock 0 cback = acceptAll sock cback +createAcceptorPool sock max cback = do + forkIO (acceptAll sock cback) + createAcceptorPool sock (max-1) cback -- Gets host from hostname string getHostaddr :: String -> IO NS.HostAddress
binary file changed (42304 → absent bytes)
binary file changed (2332 → absent bytes)
@@ -27,9 +27,7 @@ | isMatch = (snd r) handle request (get params) | otherwise = route routes handle request where - isMatch = fst matched - params = snd matched - matched = (fst r) (uri request) + (isMatch, params) = (fst r) (uri request) -- |Wrap a handler in a route -- Lets you use a handler (no parameters) as a route @@ -41,9 +39,7 @@ match template url = (isMatch, Parameters params) where - isMatch = fst parsed - params = snd parsed - parsed = parse urlparts temparts [] + (isMatch, params) = parse urlparts temparts [] urlparts = B.split '/' url temparts = B.split '/' template
binary file changed (20128 → absent bytes)
binary file changed (1990 → absent bytes)
@@ -15,23 +15,23 @@ -- Takes a directory and returns a route static :: B.ByteString -- ^ Path to serve static files from -> Handler-static folder hnd req = do- let path = B.concat [folder, uri req]- let sane = sanecheck path- let strPath = B.unpack path- doesExist <- doesFileExist strPath- case and [sane, doesExist] of- True -> B.readFile strPath- >>= sendReply hnd 200 [("Content-Type",[mime])]- where- mime = defaultMimeLookup $ decodeUtf8 fname- fname = last $ B.split '/' path- False -> sendNotFound hnd+static folder hnd req =+ doesFileExist strPath+ >>= \exists ->+ case and [sanecheck path, exists] of+ False -> sendNotFound hnd+ True -> B.readFile strPath+ >>= sendReply hnd 200 [("Content-Type",[mime])]+ where+ mime = defaultMimeLookup $ decodeUtf8 fname+ fname = last $ B.split '/' path+ where+ strPath = B.unpack path+ path = B.concat [folder, uri req] sanecheck :: B.ByteString -> Bool sanecheck url =- and checks+ and [parentcheck] where- checks = [parentcheck] parentcheck = length (filter (== "..") pieces) < 1 pieces = B.split '/' url
binary file changed (11208 → absent bytes)
binary file changed (2218 → absent bytes)
@@ -22,37 +22,34 @@ -- Returns status message from a given status id statusMsg :: Int -- ^ Status code (ex. 404) -> B.ByteString -- ^ Status message (ex. "404 Not Found") -statusMsg stat - -- 200 Success - | stat == 200 = "200 OK" - | stat == 201 = "201 Created" - | stat == 204 = "204 No Content" - -- 400 Client Errors - | stat == 400 = "400 Bad Request" - | stat == 401 = "401 Unauthorized" - | stat == 402 = "402 Payment Required" - | stat == 403 = "403 Forbidden" - | stat == 404 = "404 Not Found" - | stat == 405 = "405 Method Not Allowed" - | stat == 410 = "410 Gone" - -- 500 Server Errors - | stat == 500 = "500 Internal Server Error" - | stat == 501 = "501 Not Implemented" - | stat == 502 = "502 Bad Gateway" - | stat == 503 = "503 Service Unavailable" - | otherwise = "500 Internal Server Error" - --- Premade HTTP replies +-- 200 Success +statusMsg 200 = "200 OK" +statusMsg 201 = "201 Created" +statusMsg 204 = "204 No Content" +-- 400 Client Errors +statusMsg 400 = "400 Bad Request" +statusMsg 401 = "401 Unauthorized" +statusMsg 402 = "402 Payment Required" +statusMsg 403 = "403 Forbidden" +statusMsg 404 = "404 Not Found" +statusMsg 405 = "405 Method Not Allowed" +statusMsg 410 = "410 Gone" +-- 500 Server Errors +statusMsg 500 = "500 Internal Server Error" +statusMsg 501 = "501 Not Implemented" +statusMsg 502 = "502 Bad Gateway" +statusMsg 503 = "503 Service Unavailable" +statusMsg x = "500 Internal Server Error" -- |Send 400 Bad Request error sendBadRequest :: Socket -> IO () sendBadRequest client = - sendReply client 400 [("Content-Type",["text/plain"])] "400 Bad Request!\n" + sendReply client 400 [("Content-Type",["text/plain"])] "400 Bad Request\n" -- |Send 404 Not Found error sendNotFound :: Socket -> IO () sendNotFound client = - sendReply client 404 [("Content-Type",["text/plain"])] "404 Not Found!\n" + sendReply client 404 [("Content-Type",["text/plain"])] "404 Not Found\n" -- |Send a HTTP reply -- Sends a reply with the given parameters @@ -64,20 +61,18 @@ sendReply client status headers body = sendAll client reply where - reply = B.concat - [ "HTTP/1.1 ", statusMsg status,"\r\n" - , "Content-Length: ", B.pack $ show $ B.length body, "\r\n" - , "Connection: close\r\n", heads, "\r\n", body] + reply = B.concat [ "HTTP/1.1 ", statusMsg status,"\r\n" + , "Content-Length: ", B.pack $ show $ B.length body, "\r\n" + , "Connection: close\r\n", heads, "\r\n", body] -- Turn ("a", ["b", "c"]) headers into "a: b,c" - heads = B.concat $ map toHeader headers - toHeader x = B.concat [fst x, ": " - ,B.concat $ List.intersperse "," $ snd x - ,"\r\n"] + heads = B.concat $ map toHeader headers + toHeader x = B.concat [ fst x, ": " + , B.concat $ List.intersperse "," $ snd x + , "\r\n"] -- |Trim whitespace from headers trim :: B.ByteString -> B.ByteString -trim = f . f - where f = B.reverse . B.dropWhile isSpace +trim = f . f where f = B.reverse . B.dropWhile isSpace -- |ByteString breakSubstring wrapper that drops delimiters breakBS :: B.ByteString -> B.ByteString -> (B.ByteString, B.ByteString) @@ -98,5 +93,5 @@ -- |Maybe a -> a with fallback (if Nothing) fallback :: Maybe a -> a -> a -fallback (Just value) fallback = value -fallback Nothing fallback = fallback+fallback (Just x) fallback = x +fallback Nothing fallback = fallback
binary file changed (36072 → absent bytes)
@@ -1,221 +0,0 @@-Updated docs to 0.3-# Please enter the commit message for your changes. Lines starting-# with '#' will be ignored, and an empty message aborts the commit.-# On branch gh-pages-# Your branch is up-to-date with 'origin/gh-pages'.-#-# Changes to be committed:-# new file: Ketchup-Auth.html-# modified: Ketchup-Httpd.html-# modified: Ketchup-Routing.html-# modified: Ketchup-Utils.html-# modified: doc-index.html-# modified: index-frames.html-# modified: index.html-# modified: main.txt-# new file: mini_Ketchup-Auth.html-# modified: mini_Ketchup-Routing.html-# modified: mini_Ketchup-Utils.html-#-# ------------------------ >8 -------------------------# Do not touch the line above.-# Everything below will be removed.-diff --git a/Ketchup-Auth.html b/Ketchup-Auth.html-new file mode 100644-index 0000000..ff6a9f5---- /dev/null-+++ b/Ketchup-Auth.html-@@ -0,0 +1,8 @@-+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Auth</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-+window.onload = function () {pageLoad();setSynopsis("mini_Ketchup-Auth.html");};-+//]]>-+</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Ketchup.Auth</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:basicAuth">basicAuth</a> ∷ [(ByteString, ByteString)] → ByteString → <a href="Ketchup-Httpd.html#t:Handler">Handler</a> → <a href="Ketchup-Httpd.html#t:Handler">Handler</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:basicAuth" class="def">basicAuth</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">∷ [(ByteString, ByteString)]</td><td class="doc"><p>List of (Username, Password)-+</p></td></tr><tr><td class="src">→ ByteString</td><td class="doc"><p>Authentication Realm-+</p></td></tr><tr><td class="src">→ <a href="Ketchup-Httpd.html#t:Handler">Handler</a></td><td class="doc"><p>Success Handler-+</p></td></tr><tr><td class="src">→ <a href="Ketchup-Httpd.html#t:Handler">Handler</a></td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Performs HTTP Basic Auth-+</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>-\ No newline at end of file-diff --git a/Ketchup-Httpd.html b/Ketchup-Httpd.html-index b5c49f7..5c7dd67 100644---- a/Ketchup-Httpd.html-+++ b/Ketchup-Httpd.html-@@ -1,14 +1,14 @@- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Httpd</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[- window.onload = function () {pageLoad();setSynopsis("mini_Ketchup-Httpd.html");};- //]]>--</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Ketchup.Httpd</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:HTTPRequest">HTTPRequest</a> = <a href="#v:HTTPRequest">HTTPRequest</a> {<ul class="subs"><li><a href="#v:method">method</a> ∷ ByteString</li><li><a href="#v:uri">uri</a> ∷ ByteString</li><li><a href="#v:httpver">httpver</a> ∷ ByteString</li><li><a href="#v:headers">headers</a> ∷ <a href="Ketchup-Httpd.html#t:Headers">Headers</a></li><li><a href="#v:body">body</a> ∷ ByteString</li></ul>}</li><li class="src short"><span class="keyword">type</span> <a href="#t:Headers">Headers</a> = Map ByteString [ByteString]</li><li class="src short"><span class="keyword">type</span> <a href="#t:Handler">Handler</a> = Socket → <a href="Ketchup-Httpd.html#t:HTTPRequest">HTTPRequest</a> → IO ()</li><li class="src short"><a href="#v:listenHTTP">listenHTTP</a> ∷ String → PortNumber → <a href="Ketchup-Httpd.html#t:Handler">Handler</a> → IO ()</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:HTTPRequest" class="def">HTTPRequest</a> </p><div class="doc"><p>HTTP Request type-+</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Ketchup.Httpd</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:HTTPRequest">HTTPRequest</a> = <a href="#v:HTTPRequest">HTTPRequest</a> {<ul class="subs"><li><a href="#v:method">method</a> ∷ ByteString</li><li><a href="#v:uri">uri</a> ∷ ByteString</li><li><a href="#v:httpver">httpver</a> ∷ ByteString</li><li><a href="#v:headers">headers</a> ∷ <a href="Ketchup-Httpd.html#t:Headers">Headers</a></li><li><a href="#v:body">body</a> ∷ ByteString</li></ul>}</li><li class="src short"><span class="keyword">type</span> <a href="#t:Headers">Headers</a> = [(ByteString, [ByteString])]</li><li class="src short"><span class="keyword">type</span> <a href="#t:Handler">Handler</a> = Socket → <a href="Ketchup-Httpd.html#t:HTTPRequest">HTTPRequest</a> → IO ()</li><li class="src short"><a href="#v:listenHTTP">listenHTTP</a> ∷ String → PortNumber → <a href="Ketchup-Httpd.html#t:Handler">Handler</a> → IO ()</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:HTTPRequest" class="def">HTTPRequest</a> </p><div class="doc"><p>HTTP Request type- This holds a complete HTTP request- </p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:HTTPRequest" class="def">HTTPRequest</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:method" class="def">method</a> ∷ ByteString</dt><dd class="doc"><p>Get HTTP Request Method (GET, POST etc.)- </p></dd><dt class="src"><a name="v:uri" class="def">uri</a> ∷ ByteString</dt><dd class="doc"><p>Get Request URI- </p></dd><dt class="src"><a name="v:httpver" class="def">httpver</a> ∷ ByteString</dt><dd class="doc"><p>Get HTTP Version- </p></dd><dt class="src"><a name="v:headers" class="def">headers</a> ∷ <a href="Ketchup-Httpd.html#t:Headers">Headers</a></dt><dd class="doc"><p>Get HTTP Headers (header, [values])- </p></dd><dt class="src"><a name="v:body" class="def">body</a> ∷ ByteString</dt><dd class="doc"><p>Get HTTP Post body (raw string)--</p></dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:HTTPRequest" class="caption collapser" onclick="toggleSection('i:HTTPRequest')">Instances</p><div id="section.i:HTTPRequest" class="show"><table><tr><td class="src">Show <a href="Ketchup-Httpd.html#t:HTTPRequest">HTTPRequest</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Headers" class="def">Headers</a> = Map ByteString [ByteString]</p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Handler" class="def">Handler</a> = Socket → <a href="Ketchup-Httpd.html#t:HTTPRequest">HTTPRequest</a> → IO ()</p></div><div class="top"><p class="src"><a name="v:listenHTTP" class="def">listenHTTP</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">∷ String</td><td class="doc"><p>Address to bind (ie. <a href="*.html">*</a>)-+</p></dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:HTTPRequest" class="caption collapser" onclick="toggleSection('i:HTTPRequest')">Instances</p><div id="section.i:HTTPRequest" class="show"><table><tr><td class="src">Show <a href="Ketchup-Httpd.html#t:HTTPRequest">HTTPRequest</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Headers" class="def">Headers</a> = [(ByteString, [ByteString])]</p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Handler" class="def">Handler</a> = Socket → <a href="Ketchup-Httpd.html#t:HTTPRequest">HTTPRequest</a> → IO ()</p></div><div class="top"><p class="src"><a name="v:listenHTTP" class="def">listenHTTP</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">∷ String</td><td class="doc"><p>Address to bind (ie. <a href="*.html">*</a>)- </p></td></tr><tr><td class="src">→ PortNumber</td><td class="doc"><p>Port to listen on- </p></td></tr><tr><td class="src">→ <a href="Ketchup-Httpd.html#t:Handler">Handler</a></td><td class="doc"><p>Route function to call- </p></td></tr><tr><td class="src">→ IO ()</td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Listens for incoming HTTP request-diff --git a/Ketchup-Routing.html b/Ketchup-Routing.html-index c8298c8..6350f4f 100644---- a/Ketchup-Routing.html-+++ b/Ketchup-Routing.html-@@ -1,7 +1,7 @@- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Routing</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[- window.onload = function () {pageLoad();setSynopsis("mini_Ketchup-Routing.html");};- //]]>--</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Ketchup.Routing</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">type</span> <a href="#t:Route">Route</a> = Socket → <a href="Ketchup-Httpd.html#t:HTTPRequest">HTTPRequest</a> → <a href="Ketchup-Routing.html#t:Parameters">Parameters</a> → IO ()</li><li class="src short"><span class="keyword">type</span> <a href="#t:Parameters">Parameters</a> = Map ByteString ByteString</li><li class="src short"><a href="#v:route">route</a> ∷ [(ByteString, <a href="Ketchup-Routing.html#t:Route">Route</a>)] → <a href="Ketchup-Httpd.html#t:Handler">Handler</a></li><li class="src short"><a href="#v:useHandler">useHandler</a> ∷ <a href="Ketchup-Httpd.html#t:Handler">Handler</a> → <a href="Ketchup-Routing.html#t:Route">Route</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Route" class="def">Route</a> = Socket → <a href="Ketchup-Httpd.html#t:HTTPRequest">HTTPRequest</a> → <a href="Ketchup-Routing.html#t:Parameters">Parameters</a> → IO ()</p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Parameters" class="def">Parameters</a> = Map ByteString ByteString</p></div><div class="top"><p class="src"><a name="v:route" class="def">route</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">∷ [(ByteString, <a href="Ketchup-Routing.html#t:Route">Route</a>)]</td><td class="doc"><p>Routes-+</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Ketchup.Routing</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">type</span> <a href="#t:Route">Route</a> = Socket → <a href="Ketchup-Httpd.html#t:HTTPRequest">HTTPRequest</a> → (ByteString → Maybe ByteString) → IO ()</li><li class="src short"><a href="#v:route">route</a> ∷ [(ByteString, <a href="Ketchup-Routing.html#t:Route">Route</a>)] → <a href="Ketchup-Httpd.html#t:Handler">Handler</a></li><li class="src short"><a href="#v:useHandler">useHandler</a> ∷ <a href="Ketchup-Httpd.html#t:Handler">Handler</a> → <a href="Ketchup-Routing.html#t:Route">Route</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Route" class="def">Route</a> = Socket → <a href="Ketchup-Httpd.html#t:HTTPRequest">HTTPRequest</a> → (ByteString → Maybe ByteString) → IO ()</p></div><div class="top"><p class="src"><a name="v:route" class="def">route</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">∷ [(ByteString, <a href="Ketchup-Routing.html#t:Route">Route</a>)]</td><td class="doc"><p>Routes- </p></td></tr><tr><td class="src">→ <a href="Ketchup-Httpd.html#t:Handler">Handler</a></td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Router function- Takes a list of routes and iterates through them for every requeust- </p></div></div><div class="top"><p class="src"><a name="v:useHandler" class="def">useHandler</a> ∷ <a href="Ketchup-Httpd.html#t:Handler">Handler</a> → <a href="Ketchup-Routing.html#t:Route">Route</a></p><div class="doc"><p>Wrap a handler in a route-diff --git a/Ketchup-Utils.html b/Ketchup-Utils.html-index d7b0897..0ef0bb4 100644---- a/Ketchup-Utils.html-+++ b/Ketchup-Utils.html-@@ -1,9 +1,9 @@- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Utils</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[- window.onload = function () {pageLoad();setSynopsis("mini_Ketchup-Utils.html");};- //]]>--</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Ketchup.Utils</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:trim">trim</a> ∷ ByteString → ByteString</li><li class="src short"><a href="#v:breakBS">breakBS</a> ∷ ByteString → ByteString → (ByteString, ByteString)</li><li class="src short"><a href="#v:parseBody">parseBody</a> ∷ ByteString → Map ByteString ByteString</li><li class="src short"><a href="#v:sendReply">sendReply</a> ∷ Socket → Int → [(ByteString, [ByteString])] → ByteString → IO ()</li><li class="src short"><a href="#v:sendBadRequest">sendBadRequest</a> ∷ Socket → IO ()</li><li class="src short"><a href="#v:sendNotFound">sendNotFound</a> ∷ Socket → IO ()</li><li class="src short"><a href="#v:statusMsg">statusMsg</a> ∷ Int → ByteString</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:trim" class="def">trim</a> ∷ ByteString → ByteString</p><div class="doc"><p>Trim whitespace from headers-+</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Ketchup.Utils</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:trim">trim</a> ∷ ByteString → ByteString</li><li class="src short"><a href="#v:breakBS">breakBS</a> ∷ ByteString → ByteString → (ByteString, ByteString)</li><li class="src short"><a href="#v:fallback">fallback</a> ∷ Maybe a → a → a</li><li class="src short"><a href="#v:parseBody">parseBody</a> ∷ ByteString → [(ByteString, ByteString)]</li><li class="src short"><a href="#v:sendReply">sendReply</a> ∷ Socket → Int → [(ByteString, [ByteString])] → ByteString → IO ()</li><li class="src short"><a href="#v:sendBadRequest">sendBadRequest</a> ∷ Socket → IO ()</li><li class="src short"><a href="#v:sendNotFound">sendNotFound</a> ∷ Socket → IO ()</li><li class="src short"><a href="#v:statusMsg">statusMsg</a> ∷ Int → ByteString</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:trim" class="def">trim</a> ∷ ByteString → ByteString</p><div class="doc"><p>Trim whitespace from headers- </p></div></div><div class="top"><p class="src"><a name="v:breakBS" class="def">breakBS</a> ∷ ByteString → ByteString → (ByteString, ByteString)</p><div class="doc"><p>ByteString breakSubstring wrapper that drops delimiters--</p></div></div><div class="top"><p class="src"><a name="v:parseBody" class="def">parseBody</a> ∷ ByteString → Map ByteString ByteString</p><div class="doc"><p>Parse a URL-encoded Request-+</p></div></div><div class="top"><p class="src"><a name="v:fallback" class="def">fallback</a> ∷ Maybe a → a → a</p></div><div class="top"><p class="src"><a name="v:parseBody" class="def">parseBody</a> ∷ ByteString → [(ByteString, ByteString)]</p><div class="doc"><p>Parse a URL-encoded Request- </p></div></div><div class="top"><p class="src"><a name="v:sendReply" class="def">sendReply</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">∷ Socket</td><td class="doc"><p>Socket to write to- </p></td></tr><tr><td class="src">→ Int</td><td class="doc"><p>Status Code to send- </p></td></tr><tr><td class="src">→ [(ByteString, [ByteString])]</td><td class="doc"><p>HTTP headers (<a href="Header.html">Header</a>,[<a href="value1.html">value1</a>, <a href="value2.html">value2</a>])-diff --git a/doc-index.html b/doc-index.html-index ad296ab..e5dc6ab 100644---- a/doc-index.html-+++ b/doc-index.html-@@ -1,4 +1,4 @@- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title> (Index)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[- window.onload = function () {pageLoad();};- //]]>--</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="index"><p class="caption">Index</p><table><tr><td class="src">body</td><td class="module"><a href="Ketchup-Httpd.html#v:body">Ketchup.Httpd</a></td></tr><tr><td class="src">breakBS</td><td class="module"><a href="Ketchup-Utils.html#v:breakBS">Ketchup.Utils</a></td></tr><tr><td class="src">chunk</td><td class="module"><a href="Ketchup-Chunked.html#v:chunk">Ketchup.Chunked</a></td></tr><tr><td class="src">chunkHeaders</td><td class="module"><a href="Ketchup-Chunked.html#v:chunkHeaders">Ketchup.Chunked</a></td></tr><tr><td class="src">endchunk</td><td class="module"><a href="Ketchup-Chunked.html#v:endchunk">Ketchup.Chunked</a></td></tr><tr><td class="src">Handler</td><td class="module"><a href="Ketchup-Httpd.html#t:Handler">Ketchup.Httpd</a></td></tr><tr><td class="src">Headers</td><td class="module"><a href="Ketchup-Httpd.html#t:Headers">Ketchup.Httpd</a></td></tr><tr><td class="src">headers</td><td class="module"><a href="Ketchup-Httpd.html#v:headers">Ketchup.Httpd</a></td></tr><tr><td class="src">HTTPRequest</td><td> </td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="Ketchup-Httpd.html#t:HTTPRequest">Ketchup.Httpd</a></td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="Ketchup-Httpd.html#v:HTTPRequest">Ketchup.Httpd</a></td></tr><tr><td class="src">httpver</td><td class="module"><a href="Ketchup-Httpd.html#v:httpver">Ketchup.Httpd</a></td></tr><tr><td class="src">listenHTTP</td><td class="module"><a href="Ketchup-Httpd.html#v:listenHTTP">Ketchup.Httpd</a></td></tr><tr><td class="src">method</td><td class="module"><a href="Ketchup-Httpd.html#v:method">Ketchup.Httpd</a></td></tr><tr><td class="src">Parameters</td><td class="module"><a href="Ketchup-Routing.html#t:Parameters">Ketchup.Routing</a></td></tr><tr><td class="src">parseBody</td><td class="module"><a href="Ketchup-Utils.html#v:parseBody">Ketchup.Utils</a></td></tr><tr><td class="src">Route</td><td class="module"><a href="Ketchup-Routing.html#t:Route">Ketchup.Routing</a></td></tr><tr><td class="src">route</td><td class="module"><a href="Ketchup-Routing.html#v:route">Ketchup.Routing</a></td></tr><tr><td class="src">sendBadRequest</td><td class="module"><a href="Ketchup-Utils.html#v:sendBadRequest">Ketchup.Utils</a></td></tr><tr><td class="src">sendNotFound</td><td class="module"><a href="Ketchup-Utils.html#v:sendNotFound">Ketchup.Utils</a></td></tr><tr><td class="src">sendReply</td><td class="module"><a href="Ketchup-Utils.html#v:sendReply">Ketchup.Utils</a></td></tr><tr><td class="src">static</td><td class="module"><a href="Ketchup-Static.html#v:static">Ketchup.Static</a></td></tr><tr><td class="src">statusMsg</td><td class="module"><a href="Ketchup-Utils.html#v:statusMsg">Ketchup.Utils</a></td></tr><tr><td class="src">trim</td><td class="module"><a href="Ketchup-Utils.html#v:trim">Ketchup.Utils</a></td></tr><tr><td class="src">uri</td><td class="module"><a href="Ketchup-Httpd.html#v:uri">Ketchup.Httpd</a></td></tr><tr><td class="src">useHandler</td><td class="module"><a href="Ketchup-Routing.html#v:useHandler">Ketchup.Routing</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>-\ No newline at end of file-+</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="index"><p class="caption">Index</p><table><tr><td class="src">basicAuth</td><td class="module"><a href="Ketchup-Auth.html#v:basicAuth">Ketchup.Auth</a></td></tr><tr><td class="src">body</td><td class="module"><a href="Ketchup-Httpd.html#v:body">Ketchup.Httpd</a></td></tr><tr><td class="src">breakBS</td><td class="module"><a href="Ketchup-Utils.html#v:breakBS">Ketchup.Utils</a></td></tr><tr><td class="src">chunk</td><td class="module"><a href="Ketchup-Chunked.html#v:chunk">Ketchup.Chunked</a></td></tr><tr><td class="src">chunkHeaders</td><td class="module"><a href="Ketchup-Chunked.html#v:chunkHeaders">Ketchup.Chunked</a></td></tr><tr><td class="src">endchunk</td><td class="module"><a href="Ketchup-Chunked.html#v:endchunk">Ketchup.Chunked</a></td></tr><tr><td class="src">fallback</td><td class="module"><a href="Ketchup-Utils.html#v:fallback">Ketchup.Utils</a></td></tr><tr><td class="src">Handler</td><td class="module"><a href="Ketchup-Httpd.html#t:Handler">Ketchup.Httpd</a></td></tr><tr><td class="src">Headers</td><td class="module"><a href="Ketchup-Httpd.html#t:Headers">Ketchup.Httpd</a></td></tr><tr><td class="src">headers</td><td class="module"><a href="Ketchup-Httpd.html#v:headers">Ketchup.Httpd</a></td></tr><tr><td class="src">HTTPRequest</td><td> </td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="Ketchup-Httpd.html#t:HTTPRequest">Ketchup.Httpd</a></td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="Ketchup-Httpd.html#v:HTTPRequest">Ketchup.Httpd</a></td></tr><tr><td class="src">httpver</td><td class="module"><a href="Ketchup-Httpd.html#v:httpver">Ketchup.Httpd</a></td></tr><tr><td class="src">listenHTTP</td><td class="module"><a href="Ketchup-Httpd.html#v:listenHTTP">Ketchup.Httpd</a></td></tr><tr><td class="src">method</td><td class="module"><a href="Ketchup-Httpd.html#v:method">Ketchup.Httpd</a></td></tr><tr><td class="src">parseBody</td><td class="module"><a href="Ketchup-Utils.html#v:parseBody">Ketchup.Utils</a></td></tr><tr><td class="src">Route</td><td class="module"><a href="Ketchup-Routing.html#t:Route">Ketchup.Routing</a></td></tr><tr><td class="src">route</td><td class="module"><a href="Ketchup-Routing.html#v:route">Ketchup.Routing</a></td></tr><tr><td class="src">sendBadRequest</td><td class="module"><a href="Ketchup-Utils.html#v:sendBadRequest">Ketchup.Utils</a></td></tr><tr><td class="src">sendNotFound</td><td class="module"><a href="Ketchup-Utils.html#v:sendNotFound">Ketchup.Utils</a></td></tr><tr><td class="src">sendReply</td><td class="module"><a href="Ketchup-Utils.html#v:sendReply">Ketchup.Utils</a></td></tr><tr><td class="src">static</td><td class="module"><a href="Ketchup-Static.html#v:static">Ketchup.Static</a></td></tr><tr><td class="src">statusMsg</td><td class="module"><a href="Ketchup-Utils.html#v:statusMsg">Ketchup.Utils</a></td></tr><tr><td class="src">trim</td><td class="module"><a href="Ketchup-Utils.html#v:trim">Ketchup.Utils</a></td></tr><tr><td class="src">uri</td><td class="module"><a href="Ketchup-Httpd.html#v:uri">Ketchup.Httpd</a></td></tr><tr><td class="src">useHandler</td><td class="module"><a href="Ketchup-Routing.html#v:useHandler">Ketchup.Routing</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>-\ No newline at end of file-diff --git a/index-frames.html b/index-frames.html-index 9de2c9d..8766065 100644---- a/index-frames.html-+++ b/index-frames.html-@@ -1,4 +1,4 @@- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[- window.onload = function () {pageLoad();};- //]]>--</script></head><body id="mini"><div id="module-list"><p class="caption">Modules</p><ul><li class="module"><a href="Ketchup-Chunked.html" target="main">Ketchup.Chunked</a></li><li class="module"><a href="Ketchup-Httpd.html" target="main">Ketchup.Httpd</a></li><li class="module"><a href="Ketchup-Routing.html" target="main">Ketchup.Routing</a></li><li class="module"><a href="Ketchup-Static.html" target="main">Ketchup.Static</a></li><li class="module"><a href="Ketchup-Utils.html" target="main">Ketchup.Utils</a></li></ul></div></body></html>-\ No newline at end of file-+</script></head><body id="mini"><div id="module-list"><p class="caption">Modules</p><ul><li class="module"><a href="Ketchup-Auth.html" target="main">Ketchup.Auth</a></li><li class="module"><a href="Ketchup-Chunked.html" target="main">Ketchup.Chunked</a></li><li class="module"><a href="Ketchup-Httpd.html" target="main">Ketchup.Httpd</a></li><li class="module"><a href="Ketchup-Routing.html" target="main">Ketchup.Routing</a></li><li class="module"><a href="Ketchup-Static.html" target="main">Ketchup.Static</a></li><li class="module"><a href="Ketchup-Utils.html" target="main">Ketchup.Utils</a></li></ul></div></body></html>-\ No newline at end of file-diff --git a/index.html b/index.html-index 75be0ea..0427491 100644---- a/index.html-+++ b/index.html-@@ -1,4 +1,4 @@- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[- window.onload = function () {pageLoad();};- //]]>--</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-list"><p class="caption">Modules</p><ul><li><span id="control.n.1" class="module collapser" onclick="toggleSection('n.1')">Ketchup</span><ul id="section.n.1" class="show"><li><span class="module"><a href="Ketchup-Chunked.html">Ketchup.Chunked</a></span></li><li><span class="module"><a href="Ketchup-Httpd.html">Ketchup.Httpd</a></span></li><li><span class="module"><a href="Ketchup-Routing.html">Ketchup.Routing</a></span></li><li><span class="module"><a href="Ketchup-Static.html">Ketchup.Static</a></span></li><li><span class="module"><a href="Ketchup-Utils.html">Ketchup.Utils</a></span></li></ul></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>-\ No newline at end of file-+</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-list"><p class="caption">Modules</p><ul><li><span id="control.n.1" class="module collapser" onclick="toggleSection('n.1')">Ketchup</span><ul id="section.n.1" class="show"><li><span class="module"><a href="Ketchup-Auth.html">Ketchup.Auth</a></span></li><li><span class="module"><a href="Ketchup-Chunked.html">Ketchup.Chunked</a></span></li><li><span class="module"><a href="Ketchup-Httpd.html">Ketchup.Httpd</a></span></li><li><span class="module"><a href="Ketchup-Routing.html">Ketchup.Routing</a></span></li><li><span class="module"><a href="Ketchup-Static.html">Ketchup.Static</a></span></li><li><span class="module"><a href="Ketchup-Utils.html">Ketchup.Utils</a></span></li></ul></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>-\ No newline at end of file-diff --git a/main.txt b/main.txt-index dab38cf..e8a9b10 100644---- a/main.txt-+++ b/main.txt-@@ -10,9 +10,10 @@ trim :: ByteString -> ByteString- - -- | ByteString breakSubstring wrapper that drops delimiters- breakBS :: ByteString -> ByteString -> (ByteString, ByteString)-+fallback :: Maybe a -> a -> a- - -- | Parse a URL-encoded Request--parseBody :: ByteString -> Map ByteString ByteString-+parseBody :: ByteString -> [(ByteString, ByteString)]- - -- | Send a HTTP reply Sends a reply with the given parameters- sendReply :: Socket -> Int -> [(ByteString, [ByteString])] -> ByteString -> IO ()-@@ -46,16 +47,26 @@ headers :: HTTPRequest -> Headers- - -- | Get HTTP Post body (raw string)- body :: HTTPRequest -> ByteString--type Headers = Map ByteString [ByteString]-+type Headers = [(ByteString, [ByteString])]- type Handler = Socket -> HTTPRequest -> IO ()- - -- | Listens for incoming HTTP request- listenHTTP :: String -> PortNumber -> Handler -> IO ()- instance Show HTTPRequest- -+module Ketchup.Chunked-+-+-- | Send HTTP reply headers and begin a Chunked transmission-+chunkHeaders :: Socket -> Int -> [(ByteString, [ByteString])] -> IO ()-+-+-- | Sends a chunk-+chunk :: Socket -> ByteString -> IO ()-+-+-- | Send the final/closing chunk-+endchunk :: Socket -> IO ()-+- module Ketchup.Routing--type Route = Socket -> HTTPRequest -> Parameters -> IO ()--type Parameters = Map ByteString ByteString-+type Route = Socket -> HTTPRequest -> (ByteString -> Maybe ByteString) -> IO ()- - -- | Router function Takes a list of routes and iterates through them for- -- every requeust-@@ -70,13 +81,7 @@ module Ketchup.Static- -- | Static file handler Takes a directory and returns a route- static :: ByteString -> Handler- --module Ketchup.Chunked------ | Send HTTP reply headers and begin a Chunked transmission--chunkHeaders :: Socket -> Int -> [(ByteString, [ByteString])] -> IO ()------ | Sends a chunk--chunk :: Socket -> ByteString -> IO ()-+module Ketchup.Auth- ---- | Send the final/closing chunk--endchunk :: Socket -> IO ()-+-- | Performs HTTP Basic Auth-+basicAuth :: [(ByteString, ByteString)] -> ByteString -> Handler -> Handler-diff --git a/mini_Ketchup-Auth.html b/mini_Ketchup-Auth.html-new file mode 100644-index 0000000..7015cd0---- /dev/null-+++ b/mini_Ketchup-Auth.html-@@ -0,0 +1,4 @@-+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Auth</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-+window.onload = function () {pageLoad();};-+//]]>-+</script></head><body id="mini"><div id="module-header"><p class="caption">Ketchup.Auth</p></div><div id="interface"><div class="top"><p class="src"><a href="Ketchup-Auth.html#v:basicAuth" target="main">basicAuth</a></p></div></div></body></html>-\ No newline at end of file-diff --git a/mini_Ketchup-Routing.html b/mini_Ketchup-Routing.html-index a33f00a..f8b79cf 100644---- a/mini_Ketchup-Routing.html-+++ b/mini_Ketchup-Routing.html-@@ -1,4 +1,4 @@- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Routing</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[- window.onload = function () {pageLoad();};- //]]>--</script></head><body id="mini"><div id="module-header"><p class="caption">Ketchup.Routing</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">type</span> <a href="Ketchup-Routing.html#t:Route" target="main">Route</a> </p></div><div class="top"><p class="src"><span class="keyword">type</span> <a href="Ketchup-Routing.html#t:Parameters" target="main">Parameters</a> </p></div><div class="top"><p class="src"><a href="Ketchup-Routing.html#v:route" target="main">route</a></p></div><div class="top"><p class="src"><a href="Ketchup-Routing.html#v:useHandler" target="main">useHandler</a></p></div></div></body></html>-\ No newline at end of file-+</script></head><body id="mini"><div id="module-header"><p class="caption">Ketchup.Routing</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">type</span> <a href="Ketchup-Routing.html#t:Route" target="main">Route</a> </p></div><div class="top"><p class="src"><a href="Ketchup-Routing.html#v:route" target="main">route</a></p></div><div class="top"><p class="src"><a href="Ketchup-Routing.html#v:useHandler" target="main">useHandler</a></p></div></div></body></html>-\ No newline at end of file-diff --git a/mini_Ketchup-Utils.html b/mini_Ketchup-Utils.html-index bfbd19d..cc746e2 100644---- a/mini_Ketchup-Utils.html-+++ b/mini_Ketchup-Utils.html-@@ -1,4 +1,4 @@- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Utils</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[- window.onload = function () {pageLoad();};- //]]>--</script></head><body id="mini"><div id="module-header"><p class="caption">Ketchup.Utils</p></div><div id="interface"><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:trim" target="main">trim</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:breakBS" target="main">breakBS</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:parseBody" target="main">parseBody</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:sendReply" target="main">sendReply</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:sendBadRequest" target="main">sendBadRequest</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:sendNotFound" target="main">sendNotFound</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:statusMsg" target="main">statusMsg</a></p></div></div></body></html>-\ No newline at end of file-+</script></head><body id="mini"><div id="module-header"><p class="caption">Ketchup.Utils</p></div><div id="interface"><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:trim" target="main">trim</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:breakBS" target="main">breakBS</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:fallback" target="main">fallback</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:parseBody" target="main">parseBody</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:sendReply" target="main">sendReply</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:sendBadRequest" target="main">sendBadRequest</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:sendNotFound" target="main">sendNotFound</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:statusMsg" target="main">statusMsg</a></p></div></div></body></html>-\ No newline at end of file
@@ -1,1 +0,0 @@-ref: refs/heads/gh-pages
@@ -1,11 +0,0 @@-[core]- repositoryformatversion = 0- filemode = true- bare = false- logallrefupdates = true-[remote "origin"]- url = ssh://git@github.com/Hamcha/ketchup- fetch = +refs/heads/*:refs/remotes/origin/*-[branch "gh-pages"]- remote = origin- merge = refs/heads/gh-pages
@@ -1,11 +0,0 @@-[core]- repositoryformatversion = 0- filemode = true- bare = false- logallrefupdates = true-[remote "origin"]- url = https://github.com/Hamcha/ketchup- fetch = +refs/heads/*:refs/remotes/origin/*-[branch "gh-pages"]- remote = origin- merge = refs/heads/gh-pages
@@ -1,1 +0,0 @@-Unnamed repository; edit this file 'description' to name the repository.
@@ -1,15 +0,0 @@-#!/bin/sh-#-# An example hook script to check the commit log message taken by-# applypatch from an e-mail message.-#-# The hook should exit with non-zero status after issuing an-# appropriate message if it wants to stop the commit. The hook is-# allowed to edit the commit message file.-#-# To enable this hook, rename this file to "applypatch-msg".--. git-sh-setup-test -x "$GIT_DIR/hooks/commit-msg" &&- exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"}-:
@@ -1,24 +0,0 @@-#!/bin/sh-#-# An example hook script to check the commit log message.-# Called by "git commit" with one argument, the name of the file-# that has the commit message. The hook should exit with non-zero-# status after issuing an appropriate message if it wants to stop the-# commit. The hook is allowed to edit the commit message file.-#-# To enable this hook, rename this file to "commit-msg".--# Uncomment the below to add a Signed-off-by line to the message.-# Doing this in a hook is a bad idea in general, but the prepare-commit-msg-# hook is more suited to it.-#-# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')-# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"--# This example catches duplicate Signed-off-by lines.--test "" = "$(grep '^Signed-off-by: ' "$1" |- sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {- echo >&2 Duplicate Signed-off-by lines.- exit 1-}
@@ -1,8 +0,0 @@-#!/bin/sh-#-# An example hook script to prepare a packed repository for use over-# dumb transports.-#-# To enable this hook, rename this file to "post-update".--exec git update-server-info
@@ -1,14 +0,0 @@-#!/bin/sh-#-# An example hook script to verify what is about to be committed-# by applypatch from an e-mail message.-#-# The hook should exit with non-zero status after issuing an-# appropriate message if it wants to stop the commit.-#-# To enable this hook, rename this file to "pre-applypatch".--. git-sh-setup-test -x "$GIT_DIR/hooks/pre-commit" &&- exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"}-:
@@ -1,49 +0,0 @@-#!/bin/sh-#-# An example hook script to verify what is about to be committed.-# Called by "git commit" with no arguments. The hook should-# exit with non-zero status after issuing an appropriate message if-# it wants to stop the commit.-#-# To enable this hook, rename this file to "pre-commit".--if git rev-parse --verify HEAD >/dev/null 2>&1-then- against=HEAD-else- # Initial commit: diff against an empty tree object- against=4b825dc642cb6eb9a060e54bf8d69288fbee4904-fi--# If you want to allow non-ASCII filenames set this variable to true.-allownonascii=$(git config --bool hooks.allownonascii)--# Redirect output to stderr.-exec 1>&2--# Cross platform projects tend to avoid non-ASCII filenames; prevent-# them from being added to the repository. We exploit the fact that the-# printable range starts at the space character and ends with tilde.-if [ "$allownonascii" != "true" ] &&- # Note that the use of brackets around a tr range is ok here, (it's- # even required, for portability to Solaris 10's /usr/bin/tr), since- # the square bracket bytes happen to fall in the designated range.- test $(git diff --cached --name-only --diff-filter=A -z $against |- LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0-then- cat <<\EOF-Error: Attempt to add a non-ASCII file name.--This can cause problems if you want to work with people on other platforms.--To be portable it is advisable to rename the file.--If you know what you are doing you can disable this check using:-- git config hooks.allownonascii true-EOF- exit 1-fi--# If there are whitespace errors, print the offending file names and fail.-exec git diff-index --check --cached $against --
@@ -1,54 +0,0 @@-#!/bin/sh--# An example hook script to verify what is about to be pushed. Called by "git-# push" after it has checked the remote status, but before anything has been-# pushed. If this script exits with a non-zero status nothing will be pushed.-#-# This hook is called with the following parameters:-#-# $1 -- Name of the remote to which the push is being done-# $2 -- URL to which the push is being done-#-# If pushing without using a named remote those arguments will be equal.-#-# Information about the commits which are being pushed is supplied as lines to-# the standard input in the form:-#-# <local ref> <local sha1> <remote ref> <remote sha1>-#-# This sample shows how to prevent push of commits where the log message starts-# with "WIP" (work in progress).--remote="$1"-url="$2"--z40=0000000000000000000000000000000000000000--IFS=' '-while read local_ref local_sha remote_ref remote_sha-do- if [ "$local_sha" = $z40 ]- then- # Handle delete- :- else- if [ "$remote_sha" = $z40 ]- then- # New branch, examine all commits- range="$local_sha"- else- # Update to existing branch, examine new commits- range="$remote_sha..$local_sha"- fi-- # Check for WIP commit- commit=`git rev-list -n 1 --grep '^WIP' "$range"`- if [ -n "$commit" ]- then- echo "Found WIP commit in $local_ref, not pushing"- exit 1- fi- fi-done--exit 0
@@ -1,169 +0,0 @@-#!/bin/sh-#-# Copyright (c) 2006, 2008 Junio C Hamano-#-# The "pre-rebase" hook is run just before "git rebase" starts doing-# its job, and can prevent the command from running by exiting with-# non-zero status.-#-# The hook is called with the following parameters:-#-# $1 -- the upstream the series was forked from.-# $2 -- the branch being rebased (or empty when rebasing the current branch).-#-# This sample shows how to prevent topic branches that are already-# merged to 'next' branch from getting rebased, because allowing it-# would result in rebasing already published history.--publish=next-basebranch="$1"-if test "$#" = 2-then- topic="refs/heads/$2"-else- topic=`git symbolic-ref HEAD` ||- exit 0 ;# we do not interrupt rebasing detached HEAD-fi--case "$topic" in-refs/heads/??/*)- ;;-*)- exit 0 ;# we do not interrupt others.- ;;-esac--# Now we are dealing with a topic branch being rebased-# on top of master. Is it OK to rebase it?--# Does the topic really exist?-git show-ref -q "$topic" || {- echo >&2 "No such branch $topic"- exit 1-}--# Is topic fully merged to master?-not_in_master=`git rev-list --pretty=oneline ^master "$topic"`-if test -z "$not_in_master"-then- echo >&2 "$topic is fully merged to master; better remove it."- exit 1 ;# we could allow it, but there is no point.-fi--# Is topic ever merged to next? If so you should not be rebasing it.-only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`-only_next_2=`git rev-list ^master ${publish} | sort`-if test "$only_next_1" = "$only_next_2"-then- not_in_topic=`git rev-list "^$topic" master`- if test -z "$not_in_topic"- then- echo >&2 "$topic is already up-to-date with master"- exit 1 ;# we could allow it, but there is no point.- else- exit 0- fi-else- not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`- /usr/local/bin/perl -e '- my $topic = $ARGV[0];- my $msg = "* $topic has commits already merged to public branch:\n";- my (%not_in_next) = map {- /^([0-9a-f]+) /;- ($1 => 1);- } split(/\n/, $ARGV[1]);- for my $elem (map {- /^([0-9a-f]+) (.*)$/;- [$1 => $2];- } split(/\n/, $ARGV[2])) {- if (!exists $not_in_next{$elem->[0]}) {- if ($msg) {- print STDERR $msg;- undef $msg;- }- print STDERR " $elem->[1]\n";- }- }- ' "$topic" "$not_in_next" "$not_in_master"- exit 1-fi--exit 0--################################################################--This sample hook safeguards topic branches that have been-published from being rewound.--The workflow assumed here is:-- * Once a topic branch forks from "master", "master" is never- merged into it again (either directly or indirectly).-- * Once a topic branch is fully cooked and merged into "master",- it is deleted. If you need to build on top of it to correct- earlier mistakes, a new topic branch is created by forking at- the tip of the "master". This is not strictly necessary, but- it makes it easier to keep your history simple.-- * Whenever you need to test or publish your changes to topic- branches, merge them into "next" branch.--The script, being an example, hardcodes the publish branch name-to be "next", but it is trivial to make it configurable via-$GIT_DIR/config mechanism.--With this workflow, you would want to know:--(1) ... if a topic branch has ever been merged to "next". Young- topic branches can have stupid mistakes you would rather- clean up before publishing, and things that have not been- merged into other branches can be easily rebased without- affecting other people. But once it is published, you would- not want to rewind it.--(2) ... if a topic branch has been fully merged to "master".- Then you can delete it. More importantly, you should not- build on top of it -- other people may already want to- change things related to the topic as patches against your- "master", so if you need further changes, it is better to- fork the topic (perhaps with the same name) afresh from the- tip of "master".--Let's look at this example:-- o---o---o---o---o---o---o---o---o---o "next"- / / / /- / a---a---b A / /- / / / /- / / c---c---c---c B /- / / / \ /- / / / b---b C \ /- / / / / \ /- ---o---o---o---o---o---o---o---o---o---o---o "master"---A, B and C are topic branches.-- * A has one fix since it was merged up to "next".-- * B has finished. It has been fully merged up to "master" and "next",- and is ready to be deleted.-- * C has not merged to "next" at all.--We would want to allow C to be rebased, refuse A, and encourage-B to be deleted.--To compute (1):-- git rev-list ^master ^topic next- git rev-list ^master next-- if these match, topic has not merged in next at all.--To compute (2):-- git rev-list master..topic-- if this is empty, it is fully merged to "master".
@@ -1,36 +0,0 @@-#!/bin/sh-#-# An example hook script to prepare the commit log message.-# Called by "git commit" with the name of the file that has the-# commit message, followed by the description of the commit-# message's source. The hook's purpose is to edit the commit-# message file. If the hook fails with a non-zero status,-# the commit is aborted.-#-# To enable this hook, rename this file to "prepare-commit-msg".--# This hook includes three examples. The first comments out the-# "Conflicts:" part of a merge commit.-#-# The second includes the output of "git diff --name-status -r"-# into the message, just before the "git status" output. It is-# commented because it doesn't cope with --amend or with squashed-# commits.-#-# The third example adds a Signed-off-by line to the message, that can-# still be edited. This is rarely a good idea.--case "$2,$3" in- merge,)- /usr/local/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;;--# ,|template,)-# /usr/local/bin/perl -i.bak -pe '-# print "\n" . `git diff --cached --name-status -r`-# if /^#/ && $first++ == 0' "$1" ;;-- *) ;;-esac--# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')-# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
@@ -1,128 +0,0 @@-#!/bin/sh-#-# An example hook script to blocks unannotated tags from entering.-# Called by "git receive-pack" with arguments: refname sha1-old sha1-new-#-# To enable this hook, rename this file to "update".-#-# Config-# -------# hooks.allowunannotated-# This boolean sets whether unannotated tags will be allowed into the-# repository. By default they won't be.-# hooks.allowdeletetag-# This boolean sets whether deleting tags will be allowed in the-# repository. By default they won't be.-# hooks.allowmodifytag-# This boolean sets whether a tag may be modified after creation. By default-# it won't be.-# hooks.allowdeletebranch-# This boolean sets whether deleting branches will be allowed in the-# repository. By default they won't be.-# hooks.denycreatebranch-# This boolean sets whether remotely creating branches will be denied-# in the repository. By default this is allowed.-#--# --- Command line-refname="$1"-oldrev="$2"-newrev="$3"--# --- Safety check-if [ -z "$GIT_DIR" ]; then- echo "Don't run this script from the command line." >&2- echo " (if you want, you could supply GIT_DIR then run" >&2- echo " $0 <ref> <oldrev> <newrev>)" >&2- exit 1-fi--if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then- echo "usage: $0 <ref> <oldrev> <newrev>" >&2- exit 1-fi--# --- Config-allowunannotated=$(git config --bool hooks.allowunannotated)-allowdeletebranch=$(git config --bool hooks.allowdeletebranch)-denycreatebranch=$(git config --bool hooks.denycreatebranch)-allowdeletetag=$(git config --bool hooks.allowdeletetag)-allowmodifytag=$(git config --bool hooks.allowmodifytag)--# check for no description-projectdesc=$(sed -e '1q' "$GIT_DIR/description")-case "$projectdesc" in-"Unnamed repository"* | "")- echo "*** Project description file hasn't been set" >&2- exit 1- ;;-esac--# --- Check types-# if $newrev is 0000...0000, it's a commit to delete a ref.-zero="0000000000000000000000000000000000000000"-if [ "$newrev" = "$zero" ]; then- newrev_type=delete-else- newrev_type=$(git cat-file -t $newrev)-fi--case "$refname","$newrev_type" in- refs/tags/*,commit)- # un-annotated tag- short_refname=${refname##refs/tags/}- if [ "$allowunannotated" != "true" ]; then- echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2- echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2- exit 1- fi- ;;- refs/tags/*,delete)- # delete tag- if [ "$allowdeletetag" != "true" ]; then- echo "*** Deleting a tag is not allowed in this repository" >&2- exit 1- fi- ;;- refs/tags/*,tag)- # annotated tag- if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1- then- echo "*** Tag '$refname' already exists." >&2- echo "*** Modifying a tag is not allowed in this repository." >&2- exit 1- fi- ;;- refs/heads/*,commit)- # branch- if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then- echo "*** Creating a branch is not allowed in this repository" >&2- exit 1- fi- ;;- refs/heads/*,delete)- # delete branch- if [ "$allowdeletebranch" != "true" ]; then- echo "*** Deleting a branch is not allowed in this repository" >&2- exit 1- fi- ;;- refs/remotes/*,commit)- # tracking branch- ;;- refs/remotes/*,delete)- # delete tracking branch- if [ "$allowdeletebranch" != "true" ]; then- echo "*** Deleting a tracking branch is not allowed in this repository" >&2- exit 1- fi- ;;- *)- # Anything else (is there anything else?)- echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2- exit 1- ;;-esac--# --- Finished-exit 0
binary file changed (1928 → absent bytes)
@@ -1,6 +0,0 @@-# git ls-files --others --exclude-from=.git/info/exclude-# Lines that start with '#' are comments.-# For a project mostly in C, the following would be a good set of-# exclude patterns (uncomment them if you want to use them):-# *.[oa]-# *~
@@ -1,3 +0,0 @@-0000000000000000000000000000000000000000 4ac44b6241517d43310da25b086e175b3b9c0b49 Hamcha <zikyky@gmail.com> 1404003477 +0200 clone: from https://github.com/Hamcha/ketchup-4ac44b6241517d43310da25b086e175b3b9c0b49 33d1dadf72d9a1c6217c5a6c7992dcdaaa343742 Hamcha <zikyky@gmail.com> 1404003595 +0200 commit: Updated docs-33d1dadf72d9a1c6217c5a6c7992dcdaaa343742 4c2353910734c89633d869f0ffccf8f565c93221 Hamcha <zikyky@gmail.com> 1404079702 +0200 commit: Updated docs to 0.3
@@ -1,3 +0,0 @@-0000000000000000000000000000000000000000 4ac44b6241517d43310da25b086e175b3b9c0b49 Hamcha <zikyky@gmail.com> 1404003477 +0200 clone: from https://github.com/Hamcha/ketchup-4ac44b6241517d43310da25b086e175b3b9c0b49 33d1dadf72d9a1c6217c5a6c7992dcdaaa343742 Hamcha <zikyky@gmail.com> 1404003595 +0200 commit: Updated docs-33d1dadf72d9a1c6217c5a6c7992dcdaaa343742 4c2353910734c89633d869f0ffccf8f565c93221 Hamcha <zikyky@gmail.com> 1404079702 +0200 commit: Updated docs to 0.3
@@ -1,1 +0,0 @@-0000000000000000000000000000000000000000 4ad51f9dc87b6aa48cb614030521d957b8498622 Hamcha <zikyky@gmail.com> 1404003477 +0200 clone: from https://github.com/Hamcha/ketchup
@@ -1,2 +0,0 @@-4ac44b6241517d43310da25b086e175b3b9c0b49 33d1dadf72d9a1c6217c5a6c7992dcdaaa343742 Hamcha <zikyky@gmail.com> 1404003933 +0200 update by push-33d1dadf72d9a1c6217c5a6c7992dcdaaa343742 4c2353910734c89633d869f0ffccf8f565c93221 Hamcha <zikyky@gmail.com> 1404079711 +0200 update by push
@@ -1,4 +0,0 @@-xßOÛ0Ç÷Ì_aü0à!ñJ 4ÖÄ+L Á@´M×1M¨k{±Óö¿ïl(Ý&M}jz¾ûÜÝ×çI=B½þlûørX|¿:AJtuûñülpBÈ×þãâ};-.ÎQ/})[»Z+& 9ù®3Ïçé¼êfLk²ð¬î>·®Ä4ùS©lþJïðð0{WÁJM cP¥3øÑÖ³µrB¹¤XÿrìÄÂO ^±Æ-ß÷¹ÚIA3ÒýÊZMPÕk.J¹µ5BæØº¥¶Âaä C!:Ç>$`-ojãm84ÃÊRóIÒºZ¦[~d3}¡-¿hÖEÿÃlûnx|TÝmÍkUêyªÔ¬D9zh÷÷v÷ÐOÃÆâì»{_-BîïéÖKUérI³²¡ºÌ±a|Q? ÔÔJÄ%³p'^(>zËT¨dM3¸ #©Óî2lFtæ½V=AdÕûÌG¾¸VÒÌ<eæÌÄÔ¸%¦oÕÈAFp¡î⻢Úê²"µu`]bzΡF`ù¾Dk-]z\£eªÒLS!a¶¤dÆBH+.k>iÐã±7"è¿»Q;{~WÙäôÚèõ-m+=ïô%¼ÊO"wÄä¨uU§ugJ½)³=Ëþ_ÀaÕª(×usì)¼Ðuh°m¼ÖðÔxÒκ9öÆ1Wó5j4n½ Wo×Áö2}¸²øfûõ?hí³4ôªÙå¢D£%zí[1;RÜm éiÜE>7ÆúU±öúéþÊ{"q'Ióø
binary file changed (1451 → absent bytes)
binary file changed (918 → absent bytes)
binary file changed (161 → absent bytes)
@@ -1,2 +0,0 @@-xÎA-1@Q×=Eö$MǶ âÒxT´vëBOï\Áí_[cOiÕçR@%R$ÝJæå2äANg$JÈçÄAÝ$syv`62±Kôeq¢²Õ³75áÀ1x'ï~k3¥êM`÷ïûçp2>6Úê(`À#zX£GtK]Özù¹ÓdÒ5}Aov?¹C$
binary file changed (1552 → absent bytes)
binary file changed (1142 → absent bytes)
binary file changed (456 → absent bytes)
@@ -1,3 +0,0 @@-x]oÓ0¹î¯ð|µ]$^5!QêD*éÐÝF*@Ó.\Ûk¼:vOVÿmPѾïsìsÎJÛÏß¾¡'óÛ,ÿ~w-(5º[~X|Êùz2ÏçèÛU~½@ãøå53N²iB.o0Â@õ¶mãö"¶õä÷dXã`¼rÆNioWjã¿PÆÉ¤7©d"¥¥æ_ U$4jàÌ¢|_Ix¿K0È@"^°ÚIHùÇèF$¥ @ËaÖÊlPQ˧[.¹sÕR'ØÁ^KWH 0;AçNðm°tXÇkUr5÷aBX¾P:~ö¸Wîg¶e½Öô«îè¡'Ù|ÏF2¶±5Ú2ôÔêNÏÐÏåÂMMG<>¦£ ¤ÏâÊ=R"Á¥2Ê?B¨m¿µ¢Ñ2ÒÊ?×ÌùÊpV>N¯»{GIÒF§T«?²»ñ&_.%𢩢YE-áSÀ굯.ò¬A%ÌgB«ÿ"fEc6R£¸W¾«S;ÅQÌ{ëÀ¬¾uÐÅý?í%GQ¾YÝAh§xaÐÄwCOù):ý æ{.
binary file changed (529 → absent bytes)
binary file changed (1002 → absent bytes)
binary file changed (1169 → absent bytes)
binary file changed (727 → absent bytes)
binary file changed (554 → absent bytes)
binary file changed (928 → absent bytes)
binary file changed (1028 → absent bytes)
binary file changed (972 → absent bytes)
binary file changed (672 → absent bytes)
binary file changed (507 → absent bytes)
binary file changed (960 → absent bytes)
binary file changed (5776 → absent bytes)
binary file changed (49903 → absent bytes)
@@ -1,3 +0,0 @@-# pack-refs with: peeled fully-peeled -4ac44b6241517d43310da25b086e175b3b9c0b49 refs/remotes/origin/gh-pages-4ad51f9dc87b6aa48cb614030521d957b8498622 refs/remotes/origin/master
@@ -1,1 +0,0 @@-4c2353910734c89633d869f0ffccf8f565c93221
@@ -1,1 +0,0 @@-ref: refs/remotes/origin/master
@@ -1,1 +0,0 @@-4c2353910734c89633d869f0ffccf8f565c93221
@@ -1,8 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Auth</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-window.onload = function () {pageLoad();setSynopsis("mini_Ketchup-Auth.html");};-//]]>-</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Ketchup.Auth</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:basicAuth">basicAuth</a> ∷ [(ByteString, ByteString)] → ByteString → <a href="Ketchup-Httpd.html#t:Handler">Handler</a> → <a href="Ketchup-Httpd.html#t:Handler">Handler</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:basicAuth" class="def">basicAuth</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">∷ [(ByteString, ByteString)]</td><td class="doc"><p>List of (Username, Password)-</p></td></tr><tr><td class="src">→ ByteString</td><td class="doc"><p>Authentication Realm-</p></td></tr><tr><td class="src">→ <a href="Ketchup-Httpd.html#t:Handler">Handler</a></td><td class="doc"><p>Success Handler-</p></td></tr><tr><td class="src">→ <a href="Ketchup-Httpd.html#t:Handler">Handler</a></td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Performs HTTP Basic Auth-</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>
@@ -1,13 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Chunked</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-window.onload = function () {pageLoad();setSynopsis("mini_Ketchup-Chunked.html");};-//]]>-</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Ketchup.Chunked</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:chunkHeaders">chunkHeaders</a> ∷ Socket → Int → [(ByteString, [ByteString])] → IO ()</li><li class="src short"><a href="#v:chunk">chunk</a> ∷ Socket → ByteString → IO ()</li><li class="src short"><a href="#v:endchunk">endchunk</a> ∷ Socket → IO ()</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:chunkHeaders" class="def">chunkHeaders</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">∷ Socket</td><td class="doc"><p>Socket to write to-</p></td></tr><tr><td class="src">→ Int</td><td class="doc"><p>Status code-</p></td></tr><tr><td class="src">→ [(ByteString, [ByteString])]</td><td class="doc"><p>Headers-</p></td></tr><tr><td class="src">→ IO ()</td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Send HTTP reply headers and begin a Chunked transmission-</p></div></div><div class="top"><p class="src"><a name="v:chunk" class="def">chunk</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">∷ Socket</td><td class="doc"><p>Socket to write to-</p></td></tr><tr><td class="src">→ ByteString</td><td class="doc"><p>Content to write-</p></td></tr><tr><td class="src">→ IO ()</td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Sends a chunk-</p></div></div><div class="top"><p class="src"><a name="v:endchunk" class="def">endchunk</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">∷ Socket</td><td class="doc"><p>Socket to write to-</p></td></tr><tr><td class="src">→ IO ()</td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Send the final/closing chunk-</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>
@@ -1,15 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Httpd</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-window.onload = function () {pageLoad();setSynopsis("mini_Ketchup-Httpd.html");};-//]]>-</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Ketchup.Httpd</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:HTTPRequest">HTTPRequest</a> = <a href="#v:HTTPRequest">HTTPRequest</a> {<ul class="subs"><li><a href="#v:method">method</a> ∷ ByteString</li><li><a href="#v:uri">uri</a> ∷ ByteString</li><li><a href="#v:httpver">httpver</a> ∷ ByteString</li><li><a href="#v:headers">headers</a> ∷ <a href="Ketchup-Httpd.html#t:Headers">Headers</a></li><li><a href="#v:body">body</a> ∷ ByteString</li></ul>}</li><li class="src short"><span class="keyword">type</span> <a href="#t:Headers">Headers</a> = [(ByteString, [ByteString])]</li><li class="src short"><span class="keyword">type</span> <a href="#t:Handler">Handler</a> = Socket → <a href="Ketchup-Httpd.html#t:HTTPRequest">HTTPRequest</a> → IO ()</li><li class="src short"><a href="#v:listenHTTP">listenHTTP</a> ∷ String → PortNumber → <a href="Ketchup-Httpd.html#t:Handler">Handler</a> → IO ()</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:HTTPRequest" class="def">HTTPRequest</a> </p><div class="doc"><p>HTTP Request type- This holds a complete HTTP request-</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:HTTPRequest" class="def">HTTPRequest</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:method" class="def">method</a> ∷ ByteString</dt><dd class="doc"><p>Get HTTP Request Method (GET, POST etc.)-</p></dd><dt class="src"><a name="v:uri" class="def">uri</a> ∷ ByteString</dt><dd class="doc"><p>Get Request URI-</p></dd><dt class="src"><a name="v:httpver" class="def">httpver</a> ∷ ByteString</dt><dd class="doc"><p>Get HTTP Version-</p></dd><dt class="src"><a name="v:headers" class="def">headers</a> ∷ <a href="Ketchup-Httpd.html#t:Headers">Headers</a></dt><dd class="doc"><p>Get HTTP Headers (header, [values])-</p></dd><dt class="src"><a name="v:body" class="def">body</a> ∷ ByteString</dt><dd class="doc"><p>Get HTTP Post body (raw string)-</p></dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:HTTPRequest" class="caption collapser" onclick="toggleSection('i:HTTPRequest')">Instances</p><div id="section.i:HTTPRequest" class="show"><table><tr><td class="src">Show <a href="Ketchup-Httpd.html#t:HTTPRequest">HTTPRequest</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Headers" class="def">Headers</a> = [(ByteString, [ByteString])]</p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Handler" class="def">Handler</a> = Socket → <a href="Ketchup-Httpd.html#t:HTTPRequest">HTTPRequest</a> → IO ()</p></div><div class="top"><p class="src"><a name="v:listenHTTP" class="def">listenHTTP</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">∷ String</td><td class="doc"><p>Address to bind (ie. <a href="*.html">*</a>)-</p></td></tr><tr><td class="src">→ PortNumber</td><td class="doc"><p>Port to listen on-</p></td></tr><tr><td class="src">→ <a href="Ketchup-Httpd.html#t:Handler">Handler</a></td><td class="doc"><p>Route function to call-</p></td></tr><tr><td class="src">→ IO ()</td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Listens for incoming HTTP request-</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>
@@ -1,9 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Routing</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-window.onload = function () {pageLoad();setSynopsis("mini_Ketchup-Routing.html");};-//]]>-</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Ketchup.Routing</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">type</span> <a href="#t:Route">Route</a> = Socket → <a href="Ketchup-Httpd.html#t:HTTPRequest">HTTPRequest</a> → (ByteString → Maybe ByteString) → IO ()</li><li class="src short"><a href="#v:route">route</a> ∷ [(ByteString, <a href="Ketchup-Routing.html#t:Route">Route</a>)] → <a href="Ketchup-Httpd.html#t:Handler">Handler</a></li><li class="src short"><a href="#v:useHandler">useHandler</a> ∷ <a href="Ketchup-Httpd.html#t:Handler">Handler</a> → <a href="Ketchup-Routing.html#t:Route">Route</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Route" class="def">Route</a> = Socket → <a href="Ketchup-Httpd.html#t:HTTPRequest">HTTPRequest</a> → (ByteString → Maybe ByteString) → IO ()</p></div><div class="top"><p class="src"><a name="v:route" class="def">route</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">∷ [(ByteString, <a href="Ketchup-Routing.html#t:Route">Route</a>)]</td><td class="doc"><p>Routes-</p></td></tr><tr><td class="src">→ <a href="Ketchup-Httpd.html#t:Handler">Handler</a></td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Router function- Takes a list of routes and iterates through them for every requeust-</p></div></div><div class="top"><p class="src"><a name="v:useHandler" class="def">useHandler</a> ∷ <a href="Ketchup-Httpd.html#t:Handler">Handler</a> → <a href="Ketchup-Routing.html#t:Route">Route</a></p><div class="doc"><p>Wrap a handler in a route- Lets you use a handler (no parameters) as a route-</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>
@@ -1,7 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Static</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-window.onload = function () {pageLoad();setSynopsis("mini_Ketchup-Static.html");};-//]]>-</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Ketchup.Static</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:static">static</a> ∷ ByteString → <a href="Ketchup-Httpd.html#t:Handler">Handler</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:static" class="def">static</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">∷ ByteString</td><td class="doc"><p>Path to serve static files from-</p></td></tr><tr><td class="src">→ <a href="Ketchup-Httpd.html#t:Handler">Handler</a></td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Static file handler- Takes a directory and returns a route-</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>
@@ -1,19 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Utils</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-window.onload = function () {pageLoad();setSynopsis("mini_Ketchup-Utils.html");};-//]]>-</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Ketchup.Utils</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:trim">trim</a> ∷ ByteString → ByteString</li><li class="src short"><a href="#v:breakBS">breakBS</a> ∷ ByteString → ByteString → (ByteString, ByteString)</li><li class="src short"><a href="#v:fallback">fallback</a> ∷ Maybe a → a → a</li><li class="src short"><a href="#v:parseBody">parseBody</a> ∷ ByteString → [(ByteString, ByteString)]</li><li class="src short"><a href="#v:sendReply">sendReply</a> ∷ Socket → Int → [(ByteString, [ByteString])] → ByteString → IO ()</li><li class="src short"><a href="#v:sendBadRequest">sendBadRequest</a> ∷ Socket → IO ()</li><li class="src short"><a href="#v:sendNotFound">sendNotFound</a> ∷ Socket → IO ()</li><li class="src short"><a href="#v:statusMsg">statusMsg</a> ∷ Int → ByteString</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:trim" class="def">trim</a> ∷ ByteString → ByteString</p><div class="doc"><p>Trim whitespace from headers-</p></div></div><div class="top"><p class="src"><a name="v:breakBS" class="def">breakBS</a> ∷ ByteString → ByteString → (ByteString, ByteString)</p><div class="doc"><p>ByteString breakSubstring wrapper that drops delimiters-</p></div></div><div class="top"><p class="src"><a name="v:fallback" class="def">fallback</a> ∷ Maybe a → a → a</p></div><div class="top"><p class="src"><a name="v:parseBody" class="def">parseBody</a> ∷ ByteString → [(ByteString, ByteString)]</p><div class="doc"><p>Parse a URL-encoded Request-</p></div></div><div class="top"><p class="src"><a name="v:sendReply" class="def">sendReply</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">∷ Socket</td><td class="doc"><p>Socket to write to-</p></td></tr><tr><td class="src">→ Int</td><td class="doc"><p>Status Code to send-</p></td></tr><tr><td class="src">→ [(ByteString, [ByteString])]</td><td class="doc"><p>HTTP headers (<a href="Header.html">Header</a>,[<a href="value1.html">value1</a>, <a href="value2.html">value2</a>])-</p></td></tr><tr><td class="src">→ ByteString</td><td class="doc"><p>Body-</p></td></tr><tr><td class="src">→ IO ()</td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Send a HTTP reply- Sends a reply with the given parameters-</p></div></div><div class="top"><p class="src"><a name="v:sendBadRequest" class="def">sendBadRequest</a> ∷ Socket → IO ()</p><div class="doc"><p>Send 400 Bad Request error-</p></div></div><div class="top"><p class="src"><a name="v:sendNotFound" class="def">sendNotFound</a> ∷ Socket → IO ()</p><div class="doc"><p>Send 404 Not Found error-</p></div></div><div class="top"><p class="src"><a name="v:statusMsg" class="def">statusMsg</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">∷ Int</td><td class="doc"><p>Status code (ex. 404)-</p></td></tr><tr><td class="src">→ ByteString</td><td class="doc"><p>Status message (ex. <a href="404 Not Found.html">404 Not Found</a>)-</p></td></tr></table></div><div class="doc"><p>Status Messages- Returns status message from a given status id-</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>
@@ -1,4 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title> (Index)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-window.onload = function () {pageLoad();};-//]]>-</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="index"><p class="caption">Index</p><table><tr><td class="src">basicAuth</td><td class="module"><a href="Ketchup-Auth.html#v:basicAuth">Ketchup.Auth</a></td></tr><tr><td class="src">body</td><td class="module"><a href="Ketchup-Httpd.html#v:body">Ketchup.Httpd</a></td></tr><tr><td class="src">breakBS</td><td class="module"><a href="Ketchup-Utils.html#v:breakBS">Ketchup.Utils</a></td></tr><tr><td class="src">chunk</td><td class="module"><a href="Ketchup-Chunked.html#v:chunk">Ketchup.Chunked</a></td></tr><tr><td class="src">chunkHeaders</td><td class="module"><a href="Ketchup-Chunked.html#v:chunkHeaders">Ketchup.Chunked</a></td></tr><tr><td class="src">endchunk</td><td class="module"><a href="Ketchup-Chunked.html#v:endchunk">Ketchup.Chunked</a></td></tr><tr><td class="src">fallback</td><td class="module"><a href="Ketchup-Utils.html#v:fallback">Ketchup.Utils</a></td></tr><tr><td class="src">Handler</td><td class="module"><a href="Ketchup-Httpd.html#t:Handler">Ketchup.Httpd</a></td></tr><tr><td class="src">Headers</td><td class="module"><a href="Ketchup-Httpd.html#t:Headers">Ketchup.Httpd</a></td></tr><tr><td class="src">headers</td><td class="module"><a href="Ketchup-Httpd.html#v:headers">Ketchup.Httpd</a></td></tr><tr><td class="src">HTTPRequest</td><td> </td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="Ketchup-Httpd.html#t:HTTPRequest">Ketchup.Httpd</a></td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="Ketchup-Httpd.html#v:HTTPRequest">Ketchup.Httpd</a></td></tr><tr><td class="src">httpver</td><td class="module"><a href="Ketchup-Httpd.html#v:httpver">Ketchup.Httpd</a></td></tr><tr><td class="src">listenHTTP</td><td class="module"><a href="Ketchup-Httpd.html#v:listenHTTP">Ketchup.Httpd</a></td></tr><tr><td class="src">method</td><td class="module"><a href="Ketchup-Httpd.html#v:method">Ketchup.Httpd</a></td></tr><tr><td class="src">parseBody</td><td class="module"><a href="Ketchup-Utils.html#v:parseBody">Ketchup.Utils</a></td></tr><tr><td class="src">Route</td><td class="module"><a href="Ketchup-Routing.html#t:Route">Ketchup.Routing</a></td></tr><tr><td class="src">route</td><td class="module"><a href="Ketchup-Routing.html#v:route">Ketchup.Routing</a></td></tr><tr><td class="src">sendBadRequest</td><td class="module"><a href="Ketchup-Utils.html#v:sendBadRequest">Ketchup.Utils</a></td></tr><tr><td class="src">sendNotFound</td><td class="module"><a href="Ketchup-Utils.html#v:sendNotFound">Ketchup.Utils</a></td></tr><tr><td class="src">sendReply</td><td class="module"><a href="Ketchup-Utils.html#v:sendReply">Ketchup.Utils</a></td></tr><tr><td class="src">static</td><td class="module"><a href="Ketchup-Static.html#v:static">Ketchup.Static</a></td></tr><tr><td class="src">statusMsg</td><td class="module"><a href="Ketchup-Utils.html#v:statusMsg">Ketchup.Utils</a></td></tr><tr><td class="src">trim</td><td class="module"><a href="Ketchup-Utils.html#v:trim">Ketchup.Utils</a></td></tr><tr><td class="src">uri</td><td class="module"><a href="Ketchup-Httpd.html#v:uri">Ketchup.Httpd</a></td></tr><tr><td class="src">useHandler</td><td class="module"><a href="Ketchup-Routing.html#v:useHandler">Ketchup.Routing</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>
@@ -1,30 +0,0 @@-<!DOCTYPE html - PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">-<head>-<title></title>-<script src="haddock-util.js" type="text/javascript"></script>-<script type="text/javascript"><!---/*-- The synopsis frame needs to be updated using javascript, so we hide- it by default and only show it if javascript is enabled.-- TODO: provide some means to disable it.-*/-function load() {- var d = document.getElementById("inner-fs");- d.rows = "50%,50%";- postReframe();-}---></script>-</head>-<frameset id="outer-fs" cols="25%,75%" onload="load()">- <frameset id="inner-fs" rows="100%,0%">- <frame src="index-frames.html" name="modules" />- <frame src="" name="synopsis" />- </frameset>- <frame src="index.html" name="main" />-</frameset>-</html>
@@ -1,344 +0,0 @@-// Haddock JavaScript utilities--var rspace = /\s\s+/g,- rtrim = /^\s+|\s+$/g;--function spaced(s) { return (" " + s + " ").replace(rspace, " "); }-function trim(s) { return s.replace(rtrim, ""); }--function hasClass(elem, value) {- var className = spaced(elem.className || "");- return className.indexOf( " " + value + " " ) >= 0;-}--function addClass(elem, value) {- var className = spaced(elem.className || "");- if ( className.indexOf( " " + value + " " ) < 0 ) {- elem.className = trim(className + " " + value);- }-}--function removeClass(elem, value) {- var className = spaced(elem.className || "");- className = className.replace(" " + value + " ", " ");- elem.className = trim(className);-}--function toggleClass(elem, valueOn, valueOff, bool) {- if (bool == null) { bool = ! hasClass(elem, valueOn); }- if (bool) {- removeClass(elem, valueOff);- addClass(elem, valueOn);- }- else {- removeClass(elem, valueOn);- addClass(elem, valueOff);- }- return bool;-}---function makeClassToggle(valueOn, valueOff)-{- return function(elem, bool) {- return toggleClass(elem, valueOn, valueOff, bool);- }-}--toggleShow = makeClassToggle("show", "hide");-toggleCollapser = makeClassToggle("collapser", "expander");--function toggleSection(id)-{- var b = toggleShow(document.getElementById("section." + id));- toggleCollapser(document.getElementById("control." + id), b);- rememberCollapsed(id, b);- return b;-}--var collapsed = {};-function rememberCollapsed(id, b)-{- if(b)- delete collapsed[id]- else- collapsed[id] = null;-- var sections = [];- for(var i in collapsed)- {- if(collapsed.hasOwnProperty(i))- sections.push(i);- }- // cookie specific to this page; don't use setCookie which sets path=/- document.cookie = "collapsed=" + escape(sections.join('+'));-}--function restoreCollapsed()-{- var cookie = getCookie("collapsed");- if(!cookie)- return;-- var ids = cookie.split('+');- for(var i in ids)- {- if(document.getElementById("section." + ids[i]))- toggleSection(ids[i]);- }-}--function setCookie(name, value) {- document.cookie = name + "=" + escape(value) + ";path=/;";-}--function clearCookie(name) {- document.cookie = name + "=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT;";-}--function getCookie(name) {- var nameEQ = name + "=";- var ca = document.cookie.split(';');- for(var i=0;i < ca.length;i++) {- var c = ca[i];- while (c.charAt(0)==' ') c = c.substring(1,c.length);- if (c.indexOf(nameEQ) == 0) {- return unescape(c.substring(nameEQ.length,c.length));- }- }- return null;-}----var max_results = 75; // 50 is not enough to search for map in the base libraries-var shown_range = null;-var last_search = null;--function quick_search()-{- perform_search(false);-}--function full_search()-{- perform_search(true);-}---function perform_search(full)-{- var text = document.getElementById("searchbox").value.toLowerCase();- if (text == last_search && !full) return;- last_search = text;- - var table = document.getElementById("indexlist");- var status = document.getElementById("searchmsg");- var children = table.firstChild.childNodes;- - // first figure out the first node with the prefix- var first = bisect(-1);- var last = (first == -1 ? -1 : bisect(1));-- if (first == -1)- {- table.className = "";- status.innerHTML = "No results found, displaying all";- }- else if (first == 0 && last == children.length - 1)- {- table.className = "";- status.innerHTML = "";- }- else if (last - first >= max_results && !full)- {- table.className = "";- status.innerHTML = "More than " + max_results + ", press Search to display";- }- else- {- // decide what you need to clear/show- if (shown_range)- setclass(shown_range[0], shown_range[1], "indexrow");- setclass(first, last, "indexshow");- shown_range = [first, last];- table.className = "indexsearch";- status.innerHTML = "";- }-- - function setclass(first, last, status)- {- for (var i = first; i <= last; i++)- {- children[i].className = status;- }- }- - - // do a binary search, treating 0 as ...- // return either -1 (no 0's found) or location of most far match- function bisect(dir)- {- var first = 0, finish = children.length - 1;- var mid, success = false;-- while (finish - first > 3)- {- mid = Math.floor((finish + first) / 2);-- var i = checkitem(mid);- if (i == 0) i = dir;- if (i == -1)- finish = mid;- else- first = mid;- }- var a = (dir == 1 ? first : finish);- var b = (dir == 1 ? finish : first);- for (var i = b; i != a - dir; i -= dir)- {- if (checkitem(i) == 0) return i;- }- return -1;- } - - - // from an index, decide what the result is- // 0 = match, -1 is lower, 1 is higher- function checkitem(i)- {- var s = getitem(i).toLowerCase().substr(0, text.length);- if (s == text) return 0;- else return (s > text ? -1 : 1);- }- - - // from an index, get its string- // this abstracts over alternates- function getitem(i)- {- for ( ; i >= 0; i--)- {- var s = children[i].firstChild.firstChild.data;- if (s.indexOf(' ') == -1)- return s;- }- return ""; // should never be reached- }-}--function setSynopsis(filename) {- if (parent.window.synopsis) {- if (parent.window.synopsis.location.replace) {- // In Firefox this avoids adding the change to the history.- parent.window.synopsis.location.replace(filename);- } else {- parent.window.synopsis.location = filename;- }- }-}--function addMenuItem(html) {- var menu = document.getElementById("page-menu");- if (menu) {- var btn = menu.firstChild.cloneNode(false);- btn.innerHTML = html;- menu.appendChild(btn);- }-}--function adjustForFrames() {- var bodyCls;- - if (parent.location.href == window.location.href) {- // not in frames, so add Frames button- addMenuItem("<a href='#' onclick='reframe();return true;'>Frames</a>");- bodyCls = "no-frame";- }- else {- bodyCls = "in-frame";- }- addClass(document.body, bodyCls);-}--function reframe() {- setCookie("haddock-reframe", document.URL);- window.location = "frames.html";-}--function postReframe() {- var s = getCookie("haddock-reframe");- if (s) {- parent.window.main.location = s;- clearCookie("haddock-reframe");- }-}--function styles() {- var i, a, es = document.getElementsByTagName("link"), rs = [];- for (i = 0; a = es[i]; i++) {- if(a.rel.indexOf("style") != -1 && a.title) {- rs.push(a);- }- }- return rs;-}--function addStyleMenu() {- var as = styles();- var i, a, btns = "";- for(i=0; a = as[i]; i++) {- btns += "<li><a href='#' onclick=\"setActiveStyleSheet('"- + a.title + "'); return false;\">"- + a.title + "</a></li>"- }- if (as.length > 1) {- var h = "<div id='style-menu-holder'>"- + "<a href='#' onclick='styleMenu(); return false;'>Style ▾</a>"- + "<ul id='style-menu' class='hide'>" + btns + "</ul>"- + "</div>";- addMenuItem(h);- }-}--function setActiveStyleSheet(title) {- var as = styles();- var i, a, found;- for(i=0; a = as[i]; i++) {- a.disabled = true;- // need to do this always, some browsers are edge triggered- if(a.title == title) {- found = a;- }- }- if (found) {- found.disabled = false;- setCookie("haddock-style", title);- }- else {- as[0].disabled = false;- clearCookie("haddock-style");- }- styleMenu(false);-}--function resetStyle() {- var s = getCookie("haddock-style");- if (s) setActiveStyleSheet(s);-}---function styleMenu(show) {- var m = document.getElementById('style-menu');- if (m) toggleShow(m, show);-}---function pageLoad() {- addStyleMenu();- adjustForFrames();- resetStyle();- restoreCollapsed();-}-
binary file changed (1684 → absent bytes)
@@ -1,4 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-window.onload = function () {pageLoad();};-//]]>-</script></head><body id="mini"><div id="module-list"><p class="caption">Modules</p><ul><li class="module"><a href="Ketchup-Auth.html" target="main">Ketchup.Auth</a></li><li class="module"><a href="Ketchup-Chunked.html" target="main">Ketchup.Chunked</a></li><li class="module"><a href="Ketchup-Httpd.html" target="main">Ketchup.Httpd</a></li><li class="module"><a href="Ketchup-Routing.html" target="main">Ketchup.Routing</a></li><li class="module"><a href="Ketchup-Static.html" target="main">Ketchup.Static</a></li><li class="module"><a href="Ketchup-Utils.html" target="main">Ketchup.Utils</a></li></ul></div></body></html>
@@ -1,4 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-window.onload = function () {pageLoad();};-//]]>-</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="module-list"><p class="caption">Modules</p><ul><li><span id="control.n.1" class="module collapser" onclick="toggleSection('n.1')">Ketchup</span><ul id="section.n.1" class="show"><li><span class="module"><a href="Ketchup-Auth.html">Ketchup.Auth</a></span></li><li><span class="module"><a href="Ketchup-Chunked.html">Ketchup.Chunked</a></span></li><li><span class="module"><a href="Ketchup-Httpd.html">Ketchup.Httpd</a></span></li><li><span class="module"><a href="Ketchup-Routing.html">Ketchup.Routing</a></span></li><li><span class="module"><a href="Ketchup-Static.html">Ketchup.Static</a></span></li><li><span class="module"><a href="Ketchup-Utils.html">Ketchup.Utils</a></span></li></ul></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>
@@ -1,87 +0,0 @@--- Hoogle documentation, generated by Haddock--- See Hoogle, http://www.haskell.org/hoogle/--@package main--module Ketchup.Utils---- | Trim whitespace from headers-trim :: ByteString -> ByteString---- | ByteString breakSubstring wrapper that drops delimiters-breakBS :: ByteString -> ByteString -> (ByteString, ByteString)-fallback :: Maybe a -> a -> a---- | Parse a URL-encoded Request-parseBody :: ByteString -> [(ByteString, ByteString)]---- | Send a HTTP reply Sends a reply with the given parameters-sendReply :: Socket -> Int -> [(ByteString, [ByteString])] -> ByteString -> IO ()---- | Send 400 Bad Request error-sendBadRequest :: Socket -> IO ()---- | Send 404 Not Found error-sendNotFound :: Socket -> IO ()---- | Status Messages Returns status message from a given status id-statusMsg :: Int -> ByteString--module Ketchup.Httpd---- | HTTP Request type This holds a complete HTTP request-data HTTPRequest-HTTPRequest :: ByteString -> ByteString -> ByteString -> Headers -> ByteString -> HTTPRequest---- | Get HTTP Request Method (GET, POST etc.)-method :: HTTPRequest -> ByteString---- | Get Request URI-uri :: HTTPRequest -> ByteString---- | Get HTTP Version-httpver :: HTTPRequest -> ByteString---- | Get HTTP Headers (header, [values])-headers :: HTTPRequest -> Headers---- | Get HTTP Post body (raw string)-body :: HTTPRequest -> ByteString-type Headers = [(ByteString, [ByteString])]-type Handler = Socket -> HTTPRequest -> IO ()---- | Listens for incoming HTTP request-listenHTTP :: String -> PortNumber -> Handler -> IO ()-instance Show HTTPRequest--module Ketchup.Chunked---- | Send HTTP reply headers and begin a Chunked transmission-chunkHeaders :: Socket -> Int -> [(ByteString, [ByteString])] -> IO ()---- | Sends a chunk-chunk :: Socket -> ByteString -> IO ()---- | Send the final/closing chunk-endchunk :: Socket -> IO ()--module Ketchup.Routing-type Route = Socket -> HTTPRequest -> (ByteString -> Maybe ByteString) -> IO ()---- | Router function Takes a list of routes and iterates through them for--- every requeust-route :: [(ByteString, Route)] -> Handler---- | Wrap a handler in a route Lets you use a handler (no parameters) as a--- route-useHandler :: Handler -> Route--module Ketchup.Static---- | Static file handler Takes a directory and returns a route-static :: ByteString -> Handler--module Ketchup.Auth---- | Performs HTTP Basic Auth-basicAuth :: [(ByteString, ByteString)] -> ByteString -> Handler -> Handler
@@ -1,4 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Auth</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-window.onload = function () {pageLoad();};-//]]>-</script></head><body id="mini"><div id="module-header"><p class="caption">Ketchup.Auth</p></div><div id="interface"><div class="top"><p class="src"><a href="Ketchup-Auth.html#v:basicAuth" target="main">basicAuth</a></p></div></div></body></html>
@@ -1,4 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Chunked</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-window.onload = function () {pageLoad();};-//]]>-</script></head><body id="mini"><div id="module-header"><p class="caption">Ketchup.Chunked</p></div><div id="interface"><div class="top"><p class="src"><a href="Ketchup-Chunked.html#v:chunkHeaders" target="main">chunkHeaders</a></p></div><div class="top"><p class="src"><a href="Ketchup-Chunked.html#v:chunk" target="main">chunk</a></p></div><div class="top"><p class="src"><a href="Ketchup-Chunked.html#v:endchunk" target="main">endchunk</a></p></div></div></body></html>
@@ -1,4 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Httpd</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-window.onload = function () {pageLoad();};-//]]>-</script></head><body id="mini"><div id="module-header"><p class="caption">Ketchup.Httpd</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">data</span> <a href="Ketchup-Httpd.html#t:HTTPRequest" target="main">HTTPRequest</a> </p></div><div class="top"><p class="src"><span class="keyword">type</span> <a href="Ketchup-Httpd.html#t:Headers" target="main">Headers</a> </p></div><div class="top"><p class="src"><span class="keyword">type</span> <a href="Ketchup-Httpd.html#t:Handler" target="main">Handler</a> </p></div><div class="top"><p class="src"><a href="Ketchup-Httpd.html#v:listenHTTP" target="main">listenHTTP</a></p></div></div></body></html>
@@ -1,4 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Routing</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-window.onload = function () {pageLoad();};-//]]>-</script></head><body id="mini"><div id="module-header"><p class="caption">Ketchup.Routing</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">type</span> <a href="Ketchup-Routing.html#t:Route" target="main">Route</a> </p></div><div class="top"><p class="src"><a href="Ketchup-Routing.html#v:route" target="main">route</a></p></div><div class="top"><p class="src"><a href="Ketchup-Routing.html#v:useHandler" target="main">useHandler</a></p></div></div></body></html>
@@ -1,4 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Static</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-window.onload = function () {pageLoad();};-//]]>-</script></head><body id="mini"><div id="module-header"><p class="caption">Ketchup.Static</p></div><div id="interface"><div class="top"><p class="src"><a href="Ketchup-Static.html#v:static" target="main">static</a></p></div></div></body></html>
@@ -1,4 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ketchup.Utils</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[-window.onload = function () {pageLoad();};-//]]>-</script></head><body id="mini"><div id="module-header"><p class="caption">Ketchup.Utils</p></div><div id="interface"><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:trim" target="main">trim</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:breakBS" target="main">breakBS</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:fallback" target="main">fallback</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:parseBody" target="main">parseBody</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:sendReply" target="main">sendReply</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:sendBadRequest" target="main">sendBadRequest</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:sendNotFound" target="main">sendNotFound</a></p></div><div class="top"><p class="src"><a href="Ketchup-Utils.html#v:statusMsg" target="main">statusMsg</a></p></div></div></body></html>
binary file changed (56 → absent bytes)
@@ -1,546 +0,0 @@-/* @group Fundamentals */--* { margin: 0; padding: 0 }--/* Is this portable? */-html {- background-color: white;- width: 100%;- height: 100%;-}--body {- background: white;- color: black;- text-align: left;- min-height: 100%;- position: relative;-}--p {- margin: 0.8em 0;-}--ul, ol {- margin: 0.8em 0 0.8em 2em;-}--dl {- margin: 0.8em 0;-}--dt {- font-weight: bold;-}-dd {- margin-left: 2em;-}--a { text-decoration: none; }-a[href]:link { color: rgb(196,69,29); }-a[href]:visited { color: rgb(171,105,84); }-a[href]:hover { text-decoration:underline; }--/* @end */--/* @group Fonts & Sizes */--/* Basic technique & IE workarounds from YUI 3- For reasons, see:- http://yui.yahooapis.com/3.1.1/build/cssfonts/fonts.css- */- -body {- font:13px/1.4 sans-serif;- *font-size:small; /* for IE */- *font:x-small; /* for IE in quirks mode */-}--h1 { font-size: 146.5%; /* 19pt */ } -h2 { font-size: 131%; /* 17pt */ }-h3 { font-size: 116%; /* 15pt */ }-h4 { font-size: 100%; /* 13pt */ }-h5 { font-size: 100%; /* 13pt */ }--select, input, button, textarea {- font:99% sans-serif;-}--table {- font-size:inherit;- font:100%;-}--pre, code, kbd, samp, tt, .src {- font-family:monospace;- *font-size:108%;- line-height: 124%;-}--.links, .link {- font-size: 85%; /* 11pt */-}--#module-header .caption {- font-size: 182%; /* 24pt */-}--.info {- font-size: 85%; /* 11pt */-}--#table-of-contents, #synopsis {- /* font-size: 85%; /* 11pt */-}---/* @end */--/* @group Common */--.caption, h1, h2, h3, h4, h5, h6 { - font-weight: bold;- color: rgb(78,98,114);- margin: 0.8em 0 0.4em;-}--* + h1, * + h2, * + h3, * + h4, * + h5, * + h6 {- margin-top: 2em;-}--h1 + h2, h2 + h3, h3 + h4, h4 + h5, h5 + h6 {- margin-top: inherit;-}--ul.links {- list-style: none;- text-align: left;- float: right;- display: inline-table;- margin: 0 0 0 1em;-}--ul.links li {- display: inline;- border-left: 1px solid #d5d5d5; - white-space: nowrap;- padding: 0;-}--ul.links li a {- padding: 0.2em 0.5em;-}--.hide { display: none; }-.show { display: inherit; }-.clear { clear: both; }--.collapser {- background-image: url(minus.gif);- background-repeat: no-repeat;-}-.expander {- background-image: url(plus.gif);- background-repeat: no-repeat;-}-p.caption.collapser,-p.caption.expander {- background-position: 0 0.4em;-}-.collapser, .expander {- padding-left: 14px;- margin-left: -14px;- cursor: pointer;-}--pre {- padding: 0.25em;- margin: 0.8em 0;- background: rgb(229,237,244);- overflow: auto;- border-bottom: 0.25em solid white;- /* white border adds some space below the box to compensate- for visual extra space that paragraphs have between baseline- and the bounding box */-}--.src {- background: #f0f0f0;- padding: 0.2em 0.5em;-}--.keyword { font-weight: normal; }-.def { font-weight: bold; }---/* @end */--/* @group Page Structure */--#content {- margin: 0 auto;- padding: 0 2em 6em;-}--#package-header {- background: rgb(41,56,69);- border-top: 5px solid rgb(78,98,114);- color: #ddd;- padding: 0.2em;- position: relative;- text-align: left;-}--#package-header .caption {- background: url(hslogo-16.png) no-repeat 0em;- color: white;- margin: 0 2em;- font-weight: normal;- font-style: normal;- padding-left: 2em;-}--#package-header a:link, #package-header a:visited { color: white; }-#package-header a:hover { background: rgb(78,98,114); }--#module-header .caption {- color: rgb(78,98,114);- font-weight: bold;- border-bottom: 1px solid #ddd;-}--table.info {- float: right;- padding: 0.5em 1em;- border: 1px solid #ddd;- color: rgb(78,98,114);- background-color: #fff;- max-width: 40%;- border-spacing: 0;- position: relative;- top: -0.5em;- margin: 0 0 0 2em;-}--.info th {- padding: 0 1em 0 0;-}--div#style-menu-holder {- position: relative;- z-index: 2;- display: inline;-}--#style-menu {- position: absolute;- z-index: 1;- overflow: visible;- background: #374c5e;- margin: 0;- text-align: center;- right: 0;- padding: 0;- top: 1.25em;-}--#style-menu li {- display: list-item;- border-style: none;- margin: 0;- padding: 0;- color: #000;- list-style-type: none;-}--#style-menu li + li {- border-top: 1px solid #919191;-}--#style-menu a {- width: 6em;- padding: 3px;- display: block;-}--#footer {- background: #ddd;- border-top: 1px solid #aaa;- padding: 0.5em 0;- color: #666;- text-align: center;- position: absolute;- bottom: 0;- width: 100%;- height: 3em;-}--/* @end */--/* @group Front Matter */--#table-of-contents {- float: right;- clear: right;- background: #faf9dc;- border: 1px solid #d8d7ad;- padding: 0.5em 1em;- max-width: 20em;- margin: 0.5em 0 1em 1em;-}--#table-of-contents .caption {- text-align: center;- margin: 0;-}--#table-of-contents ul {- list-style: none;- margin: 0;-}--#table-of-contents ul ul {- margin-left: 2em;-}--#description .caption {- display: none;-}--#synopsis {- display: none;-}--.no-frame #synopsis {- display: block;- position: fixed;- right: 0;- height: 80%;- top: 10%;- padding: 0;-}--#synopsis .caption {- float: left;- width: 29px;- color: rgba(255,255,255,0);- height: 110px;- margin: 0;- font-size: 1px;- padding: 0;-}--#synopsis p.caption.collapser {- background: url(synopsis.png) no-repeat -64px -8px;-}--#synopsis p.caption.expander {- background: url(synopsis.png) no-repeat 0px -8px;-}--#synopsis ul {- height: 100%;- overflow: auto;- padding: 0.5em;- margin: 0;-}--#synopsis ul ul {- overflow: hidden;-}--#synopsis ul,-#synopsis ul li.src {- background-color: #faf9dc;- white-space: nowrap;- list-style: none;- margin-left: 0;-}--/* @end */--/* @group Main Content */--#interface div.top { margin: 2em 0; }-#interface h1 + div.top,-#interface h2 + div.top,-#interface h3 + div.top,-#interface h4 + div.top,-#interface h5 + div.top {- margin-top: 1em;-}-#interface p.src .link {- float: right;- color: #919191;- border-left: 1px solid #919191;- background: #f0f0f0;- padding: 0 0.5em 0.2em;- margin: 0 -0.5em 0 0.5em;-}--#interface table { border-spacing: 2px; }-#interface td {- vertical-align: top;- padding-left: 0.5em;-}-#interface td.src {- white-space: nowrap;-}-#interface td.doc p {- margin: 0;-}-#interface td.doc p + p {- margin-top: 0.8em;-}--.subs dl {- margin: 0;-}--.subs dt {- float: left;- clear: left;- display: block;- margin: 1px 0;-}--.subs dd {- float: right;- width: 90%;- display: block;- padding-left: 0.5em;- margin-bottom: 0.5em;-}--.subs dd.empty {- display: none;-}--.subs dd p {- margin: 0;-}--.top p.src {- border-top: 1px solid #ccc;-}--.subs, .doc {- /* use this selector for one level of indent */- padding-left: 2em;-}--.warning {- color: red;-}--.arguments {- margin-top: -0.4em;-}-.arguments .caption {- display: none;-}--.fields { padding-left: 1em; }--.fields .caption { display: none; }--.fields p { margin: 0 0; }--/* this seems bulky to me-.methods, .constructors {- background: #f8f8f8;- border: 1px solid #eee;-}-*/--/* @end */--/* @group Auxillary Pages */--#mini {- margin: 0 auto;- padding: 0 1em 1em;-}--#mini > * {- font-size: 93%; /* 12pt */ -}--#mini #module-list .caption,-#mini #module-header .caption {- font-size: 125%; /* 15pt */-}--#mini #interface h1,-#mini #interface h2,-#mini #interface h3,-#mini #interface h4 {- font-size: 109%; /* 13pt */- margin: 1em 0 0;-}--#mini #interface .top,-#mini #interface .src {- margin: 0;-}--#mini #module-list ul {- list-style: none;- margin: 0;-}--#alphabet ul {- list-style: none;- padding: 0;- margin: 0.5em 0 0;- text-align: center;-}--#alphabet li {- display: inline;- margin: 0 0.25em;-}--#alphabet a {- font-weight: bold;-}--#index .caption,-#module-list .caption { font-size: 131%; /* 17pt */ }--#index table {- margin-left: 2em;-}--#index .src {- font-weight: bold;-}-#index .alt {- font-size: 77%; /* 10pt */- font-style: italic;- padding-left: 2em;-}--#index td + td {- padding-left: 1em;-}--#module-list ul {- list-style: none;- margin: 0 0 0 2em;-}--#module-list li {- clear: right;-}--#module-list span.collapser,-#module-list span.expander {- background-position: 0 0.3em;-}--#module-list .package {- float: right;-}--/* @end */
binary file changed (59 → absent bytes)
binary file changed (11327 → absent bytes)
file too large to diff
file too large to diff
binary file changed (2970 → absent bytes)
binary file changed (36760 → absent bytes)
@@ -1,1 +0,0 @@-haddock --html --hoogle -U -o docs Ketchup/Chunked.hs Ketchup/Httpd.hs Ketchup/Routing.hs Ketchup/Static.hs Ketchup/Utils.hs