# cnn_title_case v1.0 # Attempts to convert text to Title Case. # Chris Newkirk # http://chrisnewkirk.com/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjc6InZlcnNpb24iO3M6MzoiMS4wIjtzOjY6ImF1dGhvciI7czoxMzoiQ2hyaXMg TmV3a2lyayI7czoxMDoiYXV0aG9yX3VyaSI7czoyNDoiaHR0cDovL2NocmlzbmV3a2lyay5j b20vIjtzOjExOiJkZXNjcmlwdGlvbiI7czozOToiQXR0ZW1wdHMgdG8gY29udmVydCB0ZXh0 IHRvIFRpdGxlIENhc2UuIjtzOjQ6InR5cGUiO2k6MDtzOjQ6Im5hbWUiO3M6MTQ6ImNubl90 aXRsZV9jYXNlIjtzOjQ6ImhlbHAiO3M6NjE1OiIJPGgxPlBsdWdpbiA8Y29kZT5jbm5fdGl0 bGVfY2FzZTwvY29kZT48L2gxPgoKCTxwPlRoaXMgaXMganVzdCBhIFRleHRwYXR0ZXJuIHBv cnQgb2YgdGhlIFdvcmRwcmVzcyBwbHVnaW4gPGEgaHJlZj0iaHR0cDovL25hbm92aXZpZC5j b20vc3R1ZmYvd29yZHByZXNzL3RpdGxlLWNhc2UvIj5UaXRsZSBDYXNlPC9hPiBieSA8YSBo cmVmPSJodHRwOi8vbmFub3ZpdmlkLmNvbS8iPkFkYW0gTm9sbGV5PC9hPi4gSXQgaXMgdWx0 aW1hdGx5IGJhc2VkIG9uIDxhIGhyZWY9Imh0dHA6Ly9kYXJpbmdmaXJlYmFsbC5uZXQvMjAw OC8wNS90aXRsZV9jYXNlIj5jb2RlIGJ5IEpvaG4gR3J1YmVyPC9hPi48L3A+CgoJPHA+VG8g dXNlIHRoaXMgcGx1Z2luLCBqdXN0IHdyYXAgYW55IHRleHQgaW4gdGhlIHRhZy48L3A+CgoJ PGgyPkV4YW1wbGUgVXNhZ2U8L2gyPgoKCTxwPkZvciBleGFtcGxlLCB0byB0aXRsZS1jYXNl IGFsbCBhcnRpY2xlIHRpdGxlcyB1c2UgaW4gYW4gYXJ0aWNsZSBmb3JtIGxpa2UgdGhpczo8 L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6Y25uX3RpdGxlX2Nhc2UmZ3Q7Jmx0O3R4cDp0aXRs ZSAvJmd0OyZsdDsvdHhwOmNubl90aXRsZV9jYXNlJmd0Owo8L2NvZGU+PC9wcmU+CgoiO3M6 NDoiY29kZSI7czoyODI0OiIKZnVuY3Rpb24gY25uX3RpdGxlX2Nhc2UoJGF0dHMsICR0aGlu Zz0nJykKewoJcmV0dXJuIG52X3RpdGxlX2Nhc2UocGFyc2UoJHRoaW5nKSk7Cn0KCgovKgpQ bHVnaW4gTmFtZTogVGl0bGUgQ2FzZQpQbHVnaW4gVVJJOiBodHRwOi8vbmFub3ZpdmlkLmNv bS9zdHVmZi93b3JkcHJlc3MvdGl0bGUtY2FzZS8KRGVzY3JpcHRpb246IEF0dGVtcHRzIHRv IHByb3Blcmx5IGNhcGl0YWxpemUgcG9zdCB0aXRsZXMuIEJhc2VkIG9uIDxhIGhyZWY9Imh0 dHA6Ly9kYXJpbmdmaXJlYmFsbC5uZXQvMjAwOC8wNS90aXRsZV9jYXNlIj5jb2RlIGJ5IEpv aG4gR3J1YmVyPC9hPi4KVmVyc2lvbjogMS4xCkF1dGhvcjogQWRhbSBOb2xsZXkKQXV0aG9y IFVSSTogaHR0cDovL25hbm92aXZpZC5jb20vCiovCmZ1bmN0aW9uIG52X3RpdGxlX2Nhc2Uo JHN0cikKewogICAgLy8gRWRpdCB0aGlzIGxpc3QgdG8gY2hhbmdlIHdoYXQgd29yZHMgc2hv dWxkIGJlIGxvd2VyY2FzZQogICAgJHNtYWxsX3dvcmRzID0gImEgYW4gYW5kIGFzIGF0IGJ1 dCBieSBlbiBmb3IgaWYgaW4gb2Ygb24gb3IgdGhlIHRvIHZbLl0/IHZpYSB2c1suXT8iOwog ICAgJHNtYWxsX3JlID0gc3RyX3JlcGxhY2UoIiAiLCAifCIsICRzbWFsbF93b3Jkcyk7Cgog ICAgLy8gUmVwbGFjZSBIVE1MIGVudGl0aWVzIGZvciBzcGFjZXMgYW5kIHJlY29yZCB0aGVp ciBvbGQgcG9zaXRpb25zCiAgICAkaHRtbHNwYWNlcyA9ICIvJm5ic3A7fCYjMTYwO3wmIzMy Oy8iOwogICAgJG9sZHNwYWNlcyA9IGFycmF5KCk7CiAgICBwcmVnX21hdGNoX2FsbCgkaHRt bHNwYWNlcywgJHN0ciwgJG9sZHNwYWNlcywgUFJFR19PRkZTRVRfQ0FQVFVSRSk7CgogICAg Ly8gUmVtb3ZlIEhUTUwgc3BhY2UgZW50aXRpZXMKICAgICR3b3JkcyA9IHByZWdfcmVwbGFj ZSgkaHRtbHNwYWNlcywgIiAiLCAkc3RyKTsKCiAgICAvLyBTcGxpdCBhcm91bmQgc2VudGFu Y2UgZGl2aWRlci1pc2ggc3R1ZmYKICAgICR3b3JkcyA9IHByZWdfc3BsaXQoJy8oIFs6Ljs/ IV1bIF0gfCAoPzpbIF18XilbIuKAnF0pL3gnLCAkd29yZHMsIC0xLCBQUkVHX1NQTElUX0RF TElNX0NBUFRVUkUpOwoKICAgIGZvciAoJGkgPSAwOyAkaSA8IGNvdW50KCR3b3Jkcyk7ICRp KyspIHsKCiAgICAgICAgLy8gU2tpcCB3b3JkcyB3aXRoIGRvdHMgaW4gdGhlbSBsaWtlIGRl bC5pY2lvLnVzCiAgICAgICAgJHdvcmRzWyRpXSA9IHByZWdfcmVwbGFjZV9jYWxsYmFjaygn L1xiKFtbOmFscGhhOl1dW1s6bG93ZXI6XS5cJ+KAmSgmXCM4MjE3OyldKilcYi94JywgJ252 X3RpdGxlX3NraXBfZG90dGVkJywgJHdvcmRzWyRpXSk7CgogICAgICAgIC8vIExvd2VyY2Fz ZSBvdXIgbGlzdCBvZiBzbWFsbCB3b3JkcwogICAgICAgICR3b3Jkc1skaV0gPSBwcmVnX3Jl cGxhY2UoIi9cYigkc21hbGxfcmUpXGIvZWkiLCAic3RydG9sb3dlcihcIiQxXCIpIiwgJHdv cmRzWyRpXSk7CgogICAgICAgIC8vIElmIHRoZSBmaXJzdCB3b3JkIGluIHRoZSB0aXRsZSBp cyBhIHNtYWxsIHdvcmQsIGNhcGl0YWxpemUgaXQKICAgICAgICAkd29yZHNbJGldID0gcHJl Z19yZXBsYWNlKCIvXEEoW1s6cHVuY3Q6XV0qKSgkc21hbGxfcmUpXGIvZSIsICJcIiQxXCIg LiB1Y2ZpcnN0KFwiJDJcIikiLCAkd29yZHNbJGldKTsKCiAgICAgICAgLy8gSWYgdGhlIGxh c3Qgd29yZCBpbiB0aGUgdGl0bGUgaXMgYSBzbWFsbCB3b3JkLCBjYXBpdGFsaXplIGl0CiAg ICAgICAgJHdvcmRzWyRpXSA9IHByZWdfcmVwbGFjZSgiL1xiKCRzbWFsbF9yZSkoW1s6cHVu Y3Q6XV0qKVxaL2UiLCAidWNmaXJzdChcIiQxXCIpIC4gXCIkMlwiIiwgJHdvcmRzWyRpXSk7 CiAgICB9CgogICAgJHdvcmRzID0gam9pbigkd29yZHMpOwoKICAgIC8vIE9kZGl0aWVzCiAg ICAkd29yZHMgPSBwcmVnX3JlcGxhY2UoIi8gVihzPylcLiAvaSIsICIgdiQxLiAiLCAkd29y ZHMpOyAgICAgICAgICAgICAgICAgICAgLy8gdiwgdnMsIHYuLCBhbmQgdnMuCiAgICAkd29y ZHMgPSBwcmVnX3JlcGxhY2UoIi8oWyfigJldfCYjODIxNzspU1xiL2kiLCAiJDFzIiwgJHdv cmRzKTsgICAgICAgICAgICAgICAvLyAncwogICAgJHdvcmRzID0gcHJlZ19yZXBsYWNlKCIv XGIoQVQmVHxRJkEpXGIvaWUiLCAic3RydG91cHBlcihcIiQxXCIpIiwgJHdvcmRzKTsgIC8v IEFUJlQgYW5kIFEmQQogICAgJHdvcmRzID0gcHJlZ19yZXBsYWNlKCIvLWluZ1xiL2kiLCAi LWluZyIsICR3b3Jkcyk7ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC1pbmcKICAgICR3 b3JkcyA9IHByZWdfcmVwbGFjZSgiLygmW1s6YWxwaGE6XV0rOykvVWUiLCAic3RydG9sb3dl cihcIiQxXCIpIiwgJHdvcmRzKTsgICAgICAgICAgLy8gaHRtbCBlbnRpdGllcwoKICAgIC8v IFB1dCBIVE1MIHNwYWNlIGVudGl0aWVzIGJhY2sKICAgICRvZmZzZXQgPSAwOwogICAgZm9y ICgkaSA9IDA7ICRpIDwgY291bnQoJG9sZHNwYWNlc1swXSk7ICRpKyspIHsKICAgICAgICAk b2Zmc2V0ID0gJG9sZHNwYWNlc1swXVskaV1bMV07CiAgICAgICAgJHdvcmRzID0gc3Vic3Ry KCR3b3JkcywgMCwgJG9mZnNldCkgLiAkb2xkc3BhY2VzWzBdWyRpXVswXSAuIHN1YnN0cigk d29yZHMsICRvZmZzZXQgKyAxKTsKICAgICAgICAkb2Zmc2V0ICs9IHN0cmxlbigkb2xkc3Bh Y2VzWzBdWyRpXVswXSk7CiAgICB9CgogICAgcmV0dXJuICR3b3JkczsKfQpmdW5jdGlvbiBu dl90aXRsZV9za2lwX2RvdHRlZCgkbWF0Y2hlcykgewogICAgcmV0dXJuIHByZWdfbWF0Y2go Jy9bWzphbHBoYTpdXSBbLl0gW1s6YWxwaGE6XV0veCcsICRtYXRjaGVzWzBdKSA/ICRtYXRj aGVzWzBdIDogdWNmaXJzdCgkbWF0Y2hlc1swXSk7Cn0KIjtzOjM6Im1kNSI7czozMjoiNzRi ZWQwNzNmOGM2YjBiYWUzZTA1YWVmYmU2NDJmNWIiO30=