From 7ea7c59e7181533ebd79d948d168b31ccfd85401 Mon Sep 17 00:00:00 2001 From: jaseg Date: Sun, 31 Mar 2013 21:01:13 +0200 Subject: [PATCH] Rewrite completed. <100lines. --- CHANGELOG | 417 --- CREDITS | 1 + README.md | 15 +- dev/dist.sh | 81 - dev/spell.sh | 42 - .../doctor.0 => extraponies/doctor.quotes | 0 ttyponies/ace.pony => ponies/ace.ttypony | 0 .../airheart.pony => ponies/airheart.ttypony | 0 ttyponies/allie.pony => ponies/allie.ttypony | 0 ttyponies/aloe.pony => ponies/aloe.ttypony | 0 .../amethyststar.ttypony | 0 ttyponies/angel.pony => ponies/angel.ttypony | 0 ponies/applebloom.quotes | 17 + .../applebloom.ttypony | 0 .../applebloomdance.ttypony | 0 .../applebumpkin.ttypony | 0 .../applecore.ttypony | 0 .../applefritter.ttypony | 0 ponies/applejack.quotes | 19 + .../applejack.ttypony | 0 .../applejackscarecrow.ttypony | 0 .../archer.pony => ponies/archer.ttypony | 0 ttyponies/basil.pony => ponies/basil.ttypony | 0 .../bastionyorsets.ttypony | 0 .../berrypinch.ttypony | 0 .../berrypunch.ttypony | 0 ponies/bigmac.quotes | 9 + .../bigmac.pony => ponies/bigmac.ttypony | 0 ttyponies/blaze.pony => ponies/blaze.ttypony | 0 .../blinkie.pony => ponies/blinkie.ttypony | 0 .../blossomforth.ttypony | 0 .../blueberry.ttypony | 0 .../blueberrycake.ttypony | 0 .../blueblood.ttypony | 0 .../blueharvest.ttypony | 0 ttyponies/blues.pony => ponies/blues.ttypony | 0 ponyquotes/bonbon.0 => ponies/bonbon.quotes | 2 + .../bonbon.pony => ponies/bonbon.ttypony | 0 .../bonbonlyra.ttypony | 0 .../bonbonstand.ttypony | 0 .../bonvoyage.ttypony | 0 ttyponies/boxxy.pony => ponies/boxxy.ttypony | 0 ponies/braeburn.quotes | 5 + .../braeburn.pony => ponies/braeburn.ttypony | 0 .../cadance.pony => ponies/cadance.ttypony | 0 .../caesar.pony => ponies/caesar.ttypony | 0 .../candylicious.ttypony | 0 .../candymane.ttypony | 0 .../caramel.pony => ponies/caramel.ttypony | 0 .../carecake.pony => ponies/carecake.ttypony | 0 ponyquotes/carrot.1 => ponies/carrot.quotes | 2 + .../carrot.pony => ponies/carrot.ttypony | 0 .../carrottop.ttypony | 0 .../celestia.0 => ponies/celestia.quotes | 8 + .../celestia.pony => ponies/celestia.ttypony | 0 .../celestiasmall.ttypony | 0 .../cerberus.pony => ponies/cerberus.ttypony | 0 .../changeling.ttypony | 0 .../changelingqueen.ttypony | 0 .../cheerilee.0 => ponies/cheerilee.quotes | 2 + .../cheerilee.ttypony | 0 .../cheerilee80.ttypony | 0 .../cherryberry.ttypony | 0 .../cherrycola.ttypony | 0 .../chrysalis.0 => ponies/chrysalis.quotes | 1 + .../chrysalis.ttypony | 0 .../clockwork.ttypony | 0 .../cloudkicker.ttypony | 0 ttyponies/clyde.pony => ponies/clyde.ttypony | 0 .../colgate.pony => ponies/colgate.ttypony | 0 .../colton.pony => ponies/colton.ttypony | 0 .../cottoncloudy.ttypony | 0 ttyponies/cow.pony => ponies/cow.ttypony | 0 .../crackle.pony => ponies/crackle.ttypony | 0 .../craftycrate.ttypony | 0 .../cupcake.pony => ponies/cupcake.ttypony | 0 .../cutiemarkcrusaders.ttypony | 0 ttyponies/daisy.pony => ponies/daisy.ttypony | 0 .../daringdo.pony => ponies/daringdo.ttypony | 0 .../davenport.ttypony | 0 ponies/derpy.quotes | 9 + ttyponies/derpy.pony => ponies/derpy.ttypony | 0 .../derpybags.ttypony | 0 .../derpycloud.ttypony | 0 .../derpysad.pony => ponies/derpysad.ttypony | 0 .../derpysit.pony => ponies/derpysit.ttypony | 0 .../derpystand.ttypony | 0 .../derpystandwing.ttypony | 0 .../diamondmint.ttypony | 0 .../diamondtiara.quotes | 0 .../diamondtiara.ttypony | 0 ttyponies/dinky.pony => ponies/dinky.ttypony | 0 ponyquotes/discord.0 => ponies/discord.quotes | 0 .../discord.pony => ponies/discord.ttypony | 0 .../discordamused.ttypony | 0 .../discordpuppetmaster.ttypony | 0 .../djpon-3.pony => ponies/djpon-3.ttypony | 0 .../drhooves.pony => ponies/drhooves.ttypony | 0 ttyponies/elsie.pony => ponies/elsie.ttypony | 0 ttyponies/epona.pony => ponies/epona.ttypony | 0 .../fancypants.0 => ponies/fancypants.quotes | 0 .../fancypants.ttypony | 0 ttyponies/fido.pony => ponies/fido.ttypony | 0 .../fillistia.ttypony | 0 .../fillycadance.ttypony | 0 .../fillycelestia.ttypony | 0 .../fillydash.ttypony | 0 .../fillydashfly.ttypony | 0 .../fillyjack.ttypony | 0 .../fillyjacktravel.ttypony | 0 .../fillypinkie.ttypony | 0 .../fillypinkiecurly.ttypony | 0 .../fillyrarity.ttypony | 0 .../fillyshy.pony => ponies/fillyshy.ttypony | 0 .../fillytwilight.ttypony | 0 .../filthyrich.ttypony | 0 .../firestreak.ttypony | 0 ttyponies/flam.pony => ponies/flam.ttypony | 0 .../fleurdelis.ttypony | 0 .../fleurdelishair.ttypony | 0 .../fleurdelislay.ttypony | 0 ttyponies/flim.pony => ponies/flim.ttypony | 0 .../flowertrio.ttypony | 0 ponies/fluttershy.quotes | 87 + .../fluttershy.ttypony | 0 .../fluttershygala.ttypony | 0 .../fluttershyshy.ttypony | 0 .../fluttershystare.ttypony | 0 .../forestspirit.ttypony | 0 .../frederickhorseshoepin.ttypony | 0 .../georgewashingtony.ttypony | 0 ponies/gilda.quotes | 15 + ttyponies/gilda.pony => ponies/gilda.ttypony | 0 .../gildastand.ttypony | 0 .../gingergold.ttypony | 0 .../goldenharvest.ttypony | 0 ponyquotes/granny.0 => ponies/granny.quotes | 0 .../granny.pony => ponies/granny.ttypony | 0 .../grannychair.ttypony | 0 .../grannysleep.ttypony | 0 ttyponies/gummy.pony => ponies/gummy.ttypony | 0 .../gustavelegrand.ttypony | 0 .../harpass.pony => ponies/harpass.ttypony | 0 .../hayfever.pony => ponies/hayfever.ttypony | 0 .../heartstrings.ttypony | 0 .../highscore.ttypony | 0 ttyponies/hoity.pony => ponies/hoity.ttypony | 0 .../hollydash.ttypony | 0 .../horsemd.pony => ponies/horsemd.ttypony | 0 .../horsepower.ttypony | 0 ttyponies/horte.pony => ponies/horte.ttypony | 0 .../hughjelly.ttypony | 0 ttyponies/inky.pony => ponies/inky.ttypony | 0 ponies/ironwill.quotes | 15 + .../ironwillwalk.ttypony | 0 .../jeffletrotski.ttypony | 0 .../jesuspezuna.ttypony | 0 ttyponies/joe.pony => ponies/joe.ttypony | 0 .../joetuxedo.ttypony | 0 .../junebug.pony => ponies/junebug.ttypony | 0 .../laflour.pony => ponies/laflour.ttypony | 0 .../lemonhearts.ttypony | 0 .../lightning.ttypony | 0 ponyquotes/lily.1 => ponies/lily.quotes | 2 + ttyponies/lily.pony => ponies/lily.ttypony | 0 .../lintsalot.ttypony | 0 ttyponies/lotus.pony => ponies/lotus.ttypony | 0 .../lotusbloosom.ttypony | 0 .../lulamoon.pony => ponies/lulamoon.ttypony | 0 ponies/luna.quotes | 13 + ttyponies/luna.pony => ponies/luna.ttypony | 0 .../lunafly.pony => ponies/lunafly.ttypony | 0 ponyquotes/lyra.0 => ponies/lyra.quotes | 0 ttyponies/lyra.pony => ponies/lyra.ttypony | 0 .../lyrabonbon.ttypony | 0 .../lyrasit.pony => ponies/lyrasit.ttypony | 0 .../magnum.pony => ponies/magnum.ttypony | 0 .../manticore.ttypony | 0 .../maredowellfly.ttypony | 0 .../maredowellgallop.ttypony | 0 .../master.pony => ponies/master.ttypony | 0 ttyponies/mayor.pony => ponies/mayor.ttypony | 0 .../meadowsong.ttypony | 0 .../meliot.pony => ponies/meliot.ttypony | 0 .../milkyway.pony => ponies/milkyway.ttypony | 0 .../minuette.pony => ponies/minuette.ttypony | 0 .../mjolna.pony => ponies/mjolna.ttypony | 0 .../mrsparkle.ttypony | 0 .../mrssparkle.ttypony | 0 .../nightlight.ttypony | 0 ponies/nightmare.quotes | 11 + .../nightmare.ttypony | 0 ttyponies/noi.pony => ponies/noi.ttypony | 0 .../noteworthy.ttypony | 0 .../octavia.pony => ponies/octavia.ttypony | 0 .../oinkoinkoink.ttypony | 0 ttyponies/opal.pony => ponies/opal.ttypony | 0 .../orange.pony => ponies/orange.ttypony | 0 ttyponies/owl.pony => ponies/owl.ttypony | 0 .../owlowiscious.ttypony | 0 .../parasprite.ttypony | 0 ttyponies/pearl.pony => ponies/pearl.ttypony | 0 .../peppermoon.ttypony | 0 ttyponies/perry.pony => ponies/perry.ttypony | 0 .../perrypierce.ttypony | 0 .../persnickety.ttypony | 0 .../petunia.pony => ponies/petunia.ttypony | 0 .../philomena.ttypony | 0 .../philomenaphoenix.ttypony | 0 ponies/photofinish.quotes | 9 + .../photofinish.ttypony | 0 .../pictureperfect.ttypony | 0 .../pigpen.pony => ponies/pigpen.ttypony | 0 .../pinacolada.ttypony | 0 .../pinkacopter.ttypony | 0 .../pinkamina.ttypony | 0 ponies/pinkie.quotes | 76 + .../pinkie.pony => ponies/pinkie.ttypony | 0 .../pinkiebounce.ttypony | 0 .../pinkiecannon.ttypony | 0 .../pinkiecannonfront.ttypony | 0 .../pinkiecannonhappy.ttypony | 0 .../pinkiechicken.ttypony | 0 .../pinkiefly.ttypony | 0 .../pinkiegala.ttypony | 0 .../pinkiegummy.ttypony | 0 .../pinkiegummydisguise.ttypony | 0 .../pinkiehugfluttershy.ttypony | 0 .../pinkiehugsfluttershy.ttypony | 0 .../pinkieoink.ttypony | 0 .../pinkieparade.ttypony | 0 .../pinkiepartycannon.ttypony | 0 .../pinkieprincess.ttypony | 0 .../pinkiesilly.ttypony | 0 .../pinkietongue.ttypony | 0 .../pinkieumbrellahat.ttypony | 0 .../pinkieumbrellahatfear.ttypony | 0 .../pinkiewhoops.ttypony | 0 .../pinkiewhoopseat.ttypony | 0 .../pinkiewhoopsout.ttypony | 0 .../pipsqueak.1 => ponies/pipsqueak.quotes | 4 + .../pipsqueak.ttypony | 0 ttyponies/pokey.pony => ponies/pokey.ttypony | 0 .../pokeypierce.ttypony | 0 ttyponies/ponet.pony => ponies/ponet.ttypony | 0 .../poppycock.ttypony | 0 .../powderrouge.ttypony | 0 .../prettyvision.ttypony | 0 .../purplehaze.ttypony | 0 .../quickfix.pony => ponies/quickfix.ttypony | 0 .../raggedy.pony => ponies/raggedy.ttypony | 0 ponies/rainbow.quotes | 44 + .../rainbow.pony => ponies/rainbow.ttypony | 0 .../rainbowdrag.ttypony | 0 .../rainbowfly.ttypony | 0 .../rainbowgala.ttypony | 0 .../rainbowhurricane.ttypony | 0 .../rainbowsalute.ttypony | 0 .../rainbowshadowbolt.ttypony | 0 .../rainbowshine.ttypony | 0 .../rainbowsleep.ttypony | 0 .../raindrops.ttypony | 0 ponies/rarity.quotes | 55 + .../rarity.pony => ponies/rarity.ttypony | 0 .../raritycomplaining.ttypony | 0 .../raritydrama.ttypony | 0 .../rarityfly.ttypony | 0 .../raritygala.ttypony | 0 .../rarityponder.ttypony | 0 .../raritysdad.ttypony | 0 .../raritysmom.ttypony | 0 .../redheart.pony => ponies/redheart.ttypony | 0 ttyponies/rhyme.pony => ponies/rhyme.ttypony | 0 ttyponies/rocky.pony => ponies/rocky.ttypony | 0 ponyquotes/rose.1 => ponies/rose.quotes | 2 + ttyponies/rose.pony => ponies/rose.ttypony | 0 .../roseluck.pony => ponies/roseluck.ttypony | 0 ttyponies/rover.pony => ponies/rover.ttypony | 0 .../royalguard.ttypony | 0 .../royalnightguard.ttypony | 0 .../royalribbon.ttypony | 0 ttyponies/ruby.pony => ponies/ruby.ttypony | 0 .../sapphire.0 => ponies/sapphire.quotes | 0 .../sapphire.pony => ponies/sapphire.ttypony | 0 ponies/scootaloo.quotes | 15 + .../scootaloo.ttypony | 0 .../screwball.ttypony | 0 .../screwloose.ttypony | 0 .../seaswirl.pony => ponies/seaswirl.ttypony | 0 .../shadowbolts.ttypony | 0 .../shiningarmor.ttypony | 0 .../shiningarmorguard.ttypony | 0 .../shiningarmorwedding.ttypony | 0 .../silverspeed.ttypony | 0 .../silverspoon.quotes | 0 .../silverspoon.ttypony | 0 .../silverstar.ttypony | 0 ttyponies/sindy.pony => ponies/sindy.ttypony | 0 ttyponies/skyra.pony => ponies/skyra.ttypony | 0 .../snails.pony => ponies/snails.ttypony | 0 ttyponies/snips.pony => ponies/snips.ttypony | 0 .../snowflake.ttypony | 0 ponies/soarin.quotes | 5 + .../soarin.pony => ponies/soarin.ttypony | 0 .../soarinofficer.ttypony | 0 .../soigne.pony => ponies/soigne.ttypony | 0 .../sparkler.pony => ponies/sparkler.ttypony | 0 ponies/spike.quotes | 15 + ttyponies/spike.pony => ponies/spike.ttypony | 0 .../spikefloat.ttypony | 0 .../spikelove.ttypony | 0 .../spikemustache.ttypony | 0 .../spitfire.0 => ponies/spitfire.quotes | 0 .../spitfire.pony => ponies/spitfire.ttypony | 0 ttyponies/spot.pony => ponies/spot.ttypony | 0 .../starlight.ttypony | 0 .../stella.pony => ponies/stella.ttypony | 0 .../stevenmagnet.ttypony | 0 .../stevenmagnettrue.ttypony | 0 .../strongheart.ttypony | 0 ttyponies/sue.pony => ponies/sue.ttypony | 0 .../suedance.pony => ponies/suedance.ttypony | 0 .../sunnyrays.ttypony | 0 .../surprise.pony => ponies/surprise.ttypony | 0 .../sweatiesing.ttypony | 0 ponies/sweetie.quotes | 13 + .../sweetie.pony => ponies/sweetie.ttypony | 0 ttyponies/tank.pony => ponies/tank.ttypony | 0 .../tenderheart.ttypony | 0 .../theodoredonaldkerabatsos.ttypony | 0 .../thunderlane.ttypony | 0 .../timeturner.ttypony | 0 ttyponies/tom.pony => ponies/tom.ttypony | 0 .../tornadobolt.ttypony | 0 ponies/trixie.quotes | 13 + .../trixie.pony => ponies/trixie.ttypony | 0 .../trixielulamoon.ttypony | 0 .../trixiestage.ttypony | 0 .../trixiestand.ttypony | 0 .../truffleshuffle.ttypony | 0 ttyponies/turf.pony => ponies/turf.ttypony | 0 .../turnip.pony => ponies/turnip.ttypony | 0 ponies/twilight.quotes | 51 + .../twilight.pony => ponies/twilight.ttypony | 0 .../twilightcrazyfromball.ttypony | 0 .../twilightrage.ttypony | 0 .../twilightspike.ttypony | 0 .../twilightthebearded.ttypony | 0 .../twilighttime.ttypony | 0 .../twilightvelvet.ttypony | 0 .../twilightzero.ttypony | 0 ponyquotes/twist.0 => ponies/twist.quotes | 0 ttyponies/twist.pony => ponies/twist.ttypony | 0 ttyponies/vinyl.pony => ponies/vinyl.ttypony | 0 .../violet.pony => ponies/violet.ttypony | 0 .../waltercoltchak.ttypony | 0 .../wildfire.pony => ponies/wildfire.ttypony | 0 .../winona.pony => ponies/winona.ttypony | 0 ttyponies/woona.pony => ponies/woona.ttypony | 0 ponies/zecora.quotes | 17 + .../zecora.pony => ponies/zecora.ttypony | 0 .../zecorabalance.ttypony | 0 dev/pony-checklist => pony-checklist | 0 ponycenter.py | 39 - ponyquotes/applebloom.0 | 1 - ponyquotes/applebloom.1 | 1 - ponyquotes/applebloom.2 | 1 - ponyquotes/applebloom.3 | 1 - ponyquotes/applebloom.4 | 1 - ponyquotes/applebloom.5 | 1 - ponyquotes/applebloom.6 | 1 - ponyquotes/applebloom.7 | 1 - ponyquotes/applebloom.8 | 1 - ponyquotes/applejack.0 | 1 - ponyquotes/applejack.1 | 1 - ponyquotes/applejack.2 | 1 - ponyquotes/applejack.3 | 1 - ponyquotes/applejack.4 | 1 - ponyquotes/applejack.5 | 1 - ponyquotes/applejack.6 | 1 - ponyquotes/applejack.7 | 1 - ponyquotes/applejack.8 | 1 - ponyquotes/applejack.9 | 1 - ponyquotes/bigmac.0 | 1 - ponyquotes/bigmac.1 | 1 - ponyquotes/bigmac.2 | 1 - ponyquotes/bigmac.3 | 1 - ponyquotes/bigmac.4 | 1 - ponyquotes/bonbon.1 | 1 - ponyquotes/braeburn.0 | 1 - ponyquotes/braeburn.1 | 1 - ponyquotes/braeburn.2 | 1 - ponyquotes/carrot.0 | 1 - ponyquotes/celestia.1 | 1 - ponyquotes/celestia.2 | 1 - ponyquotes/celestia.3 | 1 - ponyquotes/celestia.4 | 1 - ponyquotes/cheerilee.1 | 1 - ponyquotes/chrysalis.1 | 1 - ponyquotes/derpy.0 | 1 - ponyquotes/derpy.1 | 1 - ponyquotes/derpy.2 | 1 - ponyquotes/derpy.3 | 1 - ponyquotes/derpy.4 | 1 - ponyquotes/fluttershy.0 | 2 - ponyquotes/fluttershy.1 | 1 - ponyquotes/fluttershy.10 | 1 - ponyquotes/fluttershy.11 | 8 - ponyquotes/fluttershy.12 | 4 - ponyquotes/fluttershy.13 | 2 - ponyquotes/fluttershy.14 | 1 - ponyquotes/fluttershy.15 | 3 - ponyquotes/fluttershy.16 | 1 - ponyquotes/fluttershy.17 | 3 - ponyquotes/fluttershy.18 | 1 - ponyquotes/fluttershy.19 | 2 - ponyquotes/fluttershy.2 | 1 - ponyquotes/fluttershy.20 | 3 - ponyquotes/fluttershy.21 | 3 - ponyquotes/fluttershy.22 | 1 - ponyquotes/fluttershy.23 | 1 - ponyquotes/fluttershy.24 | 1 - ponyquotes/fluttershy.25 | 1 - ponyquotes/fluttershy.26 | 1 - ponyquotes/fluttershy.27 | 1 - ponyquotes/fluttershy.28 | 1 - ponyquotes/fluttershy.29 | 1 - ponyquotes/fluttershy.3 | 1 - ponyquotes/fluttershy.30 | 1 - ponyquotes/fluttershy.31 | 1 - ponyquotes/fluttershy.4 | 1 - ponyquotes/fluttershy.5 | 1 - ponyquotes/fluttershy.6 | 1 - ponyquotes/fluttershy.7 | 1 - ponyquotes/fluttershy.8 | 1 - ponyquotes/fluttershy.9 | 4 - ponyquotes/gilda.0 | 1 - ponyquotes/gilda.1 | 1 - ponyquotes/gilda.2 | 1 - ponyquotes/gilda.3 | 1 - ponyquotes/gilda.4 | 1 - ponyquotes/gilda.5 | 5 - ponyquotes/ironwill.0 | 1 - ponyquotes/ironwill.1 | 1 - ponyquotes/ironwill.2 | 1 - ponyquotes/ironwill.3 | 1 - ponyquotes/ironwill.4 | 1 - ponyquotes/ironwill.5 | 1 - ponyquotes/ironwill.6 | 1 - ponyquotes/ironwill.7 | 1 - ponyquotes/lily.0 | 1 - ponyquotes/luna.0 | 1 - ponyquotes/luna.1 | 1 - ponyquotes/luna.2 | 1 - ponyquotes/luna.3 | 1 - ponyquotes/luna.4 | 1 - ponyquotes/luna.5 | 1 - ponyquotes/luna.6 | 1 - ponyquotes/nightmare.0 | 1 - ponyquotes/nightmare.1 | 1 - ponyquotes/nightmare.2 | 1 - ponyquotes/nightmare.3 | 1 - ponyquotes/nightmare.4 | 1 - ponyquotes/nightmare.5 | 1 - ponyquotes/photofinish.0 | 1 - ponyquotes/photofinish.1 | 1 - ponyquotes/photofinish.2 | 1 - ponyquotes/photofinish.3 | 1 - ponyquotes/photofinish.4 | 1 - ponyquotes/pinkie.0 | 2 - ponyquotes/pinkie.1 | 2 - ponyquotes/pinkie.10 | 1 - ponyquotes/pinkie.11 | 1 - ponyquotes/pinkie.12 | 1 - ponyquotes/pinkie.13 | 1 - ponyquotes/pinkie.14 | 1 - ponyquotes/pinkie.15 | 1 - ponyquotes/pinkie.16 | 1 - ponyquotes/pinkie.17 | 1 - ponyquotes/pinkie.18 | 1 - ponyquotes/pinkie.19 | 1 - ponyquotes/pinkie.2 | 1 - ponyquotes/pinkie.20 | 1 - ponyquotes/pinkie.21 | 1 - ponyquotes/pinkie.22 | 1 - ponyquotes/pinkie.23 | 1 - ponyquotes/pinkie.24 | 1 - ponyquotes/pinkie.25 | 1 - ponyquotes/pinkie.26 | 1 - ponyquotes/pinkie.27 | 1 - ponyquotes/pinkie.28 | 1 - ponyquotes/pinkie.29 | 1 - ponyquotes/pinkie.3 | 1 - ponyquotes/pinkie.30 | 1 - ponyquotes/pinkie.31 | 1 - ponyquotes/pinkie.32 | 1 - ponyquotes/pinkie.33 | 1 - ponyquotes/pinkie.34 | 1 - ponyquotes/pinkie.35 | 1 - ponyquotes/pinkie.36 | 2 - ponyquotes/pinkie.4 | 1 - ponyquotes/pinkie.5 | 1 - ponyquotes/pinkie.6 | 1 - ponyquotes/pinkie.7 | 1 - ponyquotes/pinkie.8 | 1 - ponyquotes/pinkie.9 | 1 - ponyquotes/pipsqueak.0 | 1 - ponyquotes/pipsqueak.2 | 1 - ponyquotes/ponies | 196 -- ponyquotes/rainbow.0 | 1 - ponyquotes/rainbow.1 | 1 - ponyquotes/rainbow.10 | 1 - ponyquotes/rainbow.11 | 1 - ponyquotes/rainbow.12 | 1 - ponyquotes/rainbow.13 | 1 - ponyquotes/rainbow.14 | 1 - ponyquotes/rainbow.15 | 1 - ponyquotes/rainbow.16 | 1 - ponyquotes/rainbow.17 | 1 - ponyquotes/rainbow.18 | 1 - ponyquotes/rainbow.19 | 1 - ponyquotes/rainbow.2 | 1 - ponyquotes/rainbow.20 | 1 - ponyquotes/rainbow.21 | 1 - ponyquotes/rainbow.3 | 1 - ponyquotes/rainbow.4 | 1 - ponyquotes/rainbow.5 | 2 - ponyquotes/rainbow.6 | 1 - ponyquotes/rainbow.7 | 1 - ponyquotes/rainbow.8 | 1 - ponyquotes/rainbow.9 | 1 - ponyquotes/rarity.0 | 1 - ponyquotes/rarity.1 | 1 - ponyquotes/rarity.10 | 1 - ponyquotes/rarity.11 | 1 - ponyquotes/rarity.12 | 1 - ponyquotes/rarity.13 | 1 - ponyquotes/rarity.14 | 1 - ponyquotes/rarity.15 | 1 - ponyquotes/rarity.16 | 1 - ponyquotes/rarity.17 | 1 - ponyquotes/rarity.18 | 1 - ponyquotes/rarity.19 | 1 - ponyquotes/rarity.2 | 1 - ponyquotes/rarity.20 | 1 - ponyquotes/rarity.21 | 1 - ponyquotes/rarity.22 | 1 - ponyquotes/rarity.23 | 1 - ponyquotes/rarity.24 | 1 - ponyquotes/rarity.25 | 1 - ponyquotes/rarity.3 | 1 - ponyquotes/rarity.4 | 5 - ponyquotes/rarity.5 | 1 - ponyquotes/rarity.6 | 1 - ponyquotes/rarity.7 | 1 - ponyquotes/rarity.8 | 1 - ponyquotes/rarity.9 | 1 - ponyquotes/rose.0 | 1 - ponyquotes/scootaloo.0 | 1 - ponyquotes/scootaloo.1 | 1 - ponyquotes/scootaloo.2 | 1 - ponyquotes/scootaloo.3 | 1 - ponyquotes/scootaloo.4 | 1 - ponyquotes/scootaloo.5 | 1 - ponyquotes/scootaloo.6 | 1 - ponyquotes/scootaloo.7 | 1 - ponyquotes/soarin.0 | 1 - ponyquotes/soarin.1 | 1 - ponyquotes/soarin.2 | 1 - ponyquotes/spike.0 | 1 - ponyquotes/spike.1 | 1 - ponyquotes/spike.2 | 1 - ponyquotes/spike.3 | 1 - ponyquotes/spike.4 | 1 - ponyquotes/spike.5 | 1 - ponyquotes/spike.6 | 1 - ponyquotes/spike.7 | 1 - ponyquotes/sweetie.0 | 1 - ponyquotes/sweetie.1 | 1 - ponyquotes/sweetie.2 | 1 - ponyquotes/sweetie.3 | 1 - ponyquotes/sweetie.4 | 1 - ponyquotes/sweetie.5 | 1 - ponyquotes/sweetie.6 | 1 - ponyquotes/trixie.0 | 1 - ponyquotes/trixie.1 | 1 - ponyquotes/trixie.2 | 1 - ponyquotes/trixie.3 | 1 - ponyquotes/trixie.4 | 1 - ponyquotes/trixie.5 | 1 - ponyquotes/trixie.6 | 1 - ponyquotes/twilight.0 | 1 - ponyquotes/twilight.1 | 1 - ponyquotes/twilight.10 | 3 - ponyquotes/twilight.11 | 1 - ponyquotes/twilight.12 | 1 - ponyquotes/twilight.13 | 1 - ponyquotes/twilight.14 | 1 - ponyquotes/twilight.15 | 1 - ponyquotes/twilight.16 | 1 - ponyquotes/twilight.17 | 1 - ponyquotes/twilight.18 | 1 - ponyquotes/twilight.19 | 1 - ponyquotes/twilight.2 | 5 - ponyquotes/twilight.20 | 1 - ponyquotes/twilight.21 | 1 - ponyquotes/twilight.22 | 1 - ponyquotes/twilight.3 | 1 - ponyquotes/twilight.4 | 1 - ponyquotes/twilight.5 | 1 - ponyquotes/twilight.6 | 1 - ponyquotes/twilight.7 | 1 - ponyquotes/twilight.8 | 1 - ponyquotes/twilight.9 | 1 - ponyquotes/zecora.0 | 1 - ponyquotes/zecora.1 | 1 - ponyquotes/zecora.2 | 1 - ponyquotes/zecora.3 | 1 - ponyquotes/zecora.4 | 1 - ponyquotes/zecora.5 | 3 - ponyquotes/zecora.6 | 3 - ponysay-old.py | 2458 ++++++++++++++++ ponysay.pdf | Bin 420178 -> 0 bytes ponysay.py | 2552 +---------------- 624 files changed, 3092 insertions(+), 3547 deletions(-) delete mode 100644 CHANGELOG delete mode 100755 dev/dist.sh delete mode 100755 dev/spell.sh rename ponyquotes/doctor.0 => extraponies/doctor.quotes (100%) rename ttyponies/ace.pony => ponies/ace.ttypony (100%) rename ttyponies/airheart.pony => ponies/airheart.ttypony (100%) rename ttyponies/allie.pony => ponies/allie.ttypony (100%) rename ttyponies/aloe.pony => ponies/aloe.ttypony (100%) rename ttyponies/amethyststar.pony => ponies/amethyststar.ttypony (100%) rename ttyponies/angel.pony => ponies/angel.ttypony (100%) create mode 100644 ponies/applebloom.quotes rename ttyponies/applebloom.pony => ponies/applebloom.ttypony (100%) rename ttyponies/applebloomdance.pony => ponies/applebloomdance.ttypony (100%) rename ttyponies/applebumpkin.pony => ponies/applebumpkin.ttypony (100%) rename ttyponies/applecore.pony => ponies/applecore.ttypony (100%) rename ttyponies/applefritter.pony => ponies/applefritter.ttypony (100%) create mode 100644 ponies/applejack.quotes rename ttyponies/applejack.pony => ponies/applejack.ttypony (100%) rename ttyponies/applejackscarecrow.pony => ponies/applejackscarecrow.ttypony (100%) rename ttyponies/archer.pony => ponies/archer.ttypony (100%) rename ttyponies/basil.pony => ponies/basil.ttypony (100%) rename ttyponies/bastionyorsets.pony => ponies/bastionyorsets.ttypony (100%) rename ttyponies/berrypinch.pony => ponies/berrypinch.ttypony (100%) rename ttyponies/berrypunch.pony => ponies/berrypunch.ttypony (100%) create mode 100644 ponies/bigmac.quotes rename ttyponies/bigmac.pony => ponies/bigmac.ttypony (100%) rename ttyponies/blaze.pony => ponies/blaze.ttypony (100%) rename ttyponies/blinkie.pony => ponies/blinkie.ttypony (100%) rename ttyponies/blossomforth.pony => ponies/blossomforth.ttypony (100%) rename ttyponies/blueberry.pony => ponies/blueberry.ttypony (100%) rename ttyponies/blueberrycake.pony => ponies/blueberrycake.ttypony (100%) rename ttyponies/blueblood.pony => ponies/blueblood.ttypony (100%) rename ttyponies/blueharvest.pony => ponies/blueharvest.ttypony (100%) rename ttyponies/blues.pony => ponies/blues.ttypony (100%) rename ponyquotes/bonbon.0 => ponies/bonbon.quotes (64%) rename ttyponies/bonbon.pony => ponies/bonbon.ttypony (100%) rename ttyponies/bonbonlyra.pony => ponies/bonbonlyra.ttypony (100%) rename ttyponies/bonbonstand.pony => ponies/bonbonstand.ttypony (100%) rename ttyponies/bonvoyage.pony => ponies/bonvoyage.ttypony (100%) rename ttyponies/boxxy.pony => ponies/boxxy.ttypony (100%) create mode 100644 ponies/braeburn.quotes rename ttyponies/braeburn.pony => ponies/braeburn.ttypony (100%) rename ttyponies/cadance.pony => ponies/cadance.ttypony (100%) rename ttyponies/caesar.pony => ponies/caesar.ttypony (100%) rename ttyponies/candylicious.pony => ponies/candylicious.ttypony (100%) rename ttyponies/candymane.pony => ponies/candymane.ttypony (100%) rename ttyponies/caramel.pony => ponies/caramel.ttypony (100%) rename ttyponies/carecake.pony => ponies/carecake.ttypony (100%) rename ponyquotes/carrot.1 => ponies/carrot.quotes (50%) rename ttyponies/carrot.pony => ponies/carrot.ttypony (100%) rename ttyponies/carrottop.pony => ponies/carrottop.ttypony (100%) rename ponyquotes/celestia.0 => ponies/celestia.quotes (74%) rename ttyponies/celestia.pony => ponies/celestia.ttypony (100%) rename ttyponies/celestiasmall.pony => ponies/celestiasmall.ttypony (100%) rename ttyponies/cerberus.pony => ponies/cerberus.ttypony (100%) rename ttyponies/changeling.pony => ponies/changeling.ttypony (100%) rename ttyponies/changelingqueen.pony => ponies/changelingqueen.ttypony (100%) rename ponyquotes/cheerilee.0 => ponies/cheerilee.quotes (56%) rename ttyponies/cheerilee.pony => ponies/cheerilee.ttypony (100%) rename ttyponies/cheerilee80.pony => ponies/cheerilee80.ttypony (100%) rename ttyponies/cherryberry.pony => ponies/cherryberry.ttypony (100%) rename ttyponies/cherrycola.pony => ponies/cherrycola.ttypony (100%) rename ponyquotes/chrysalis.0 => ponies/chrysalis.quotes (99%) rename ttyponies/chrysalis.pony => ponies/chrysalis.ttypony (100%) rename ttyponies/clockwork.pony => ponies/clockwork.ttypony (100%) rename ttyponies/cloudkicker.pony => ponies/cloudkicker.ttypony (100%) rename ttyponies/clyde.pony => ponies/clyde.ttypony (100%) rename ttyponies/colgate.pony => ponies/colgate.ttypony (100%) rename ttyponies/colton.pony => ponies/colton.ttypony (100%) rename ttyponies/cottoncloudy.pony => ponies/cottoncloudy.ttypony (100%) rename ttyponies/cow.pony => ponies/cow.ttypony (100%) rename ttyponies/crackle.pony => ponies/crackle.ttypony (100%) rename ttyponies/craftycrate.pony => ponies/craftycrate.ttypony (100%) rename ttyponies/cupcake.pony => ponies/cupcake.ttypony (100%) rename ttyponies/cutiemarkcrusaders.pony => ponies/cutiemarkcrusaders.ttypony (100%) rename ttyponies/daisy.pony => ponies/daisy.ttypony (100%) rename ttyponies/daringdo.pony => ponies/daringdo.ttypony (100%) rename ttyponies/davenport.pony => ponies/davenport.ttypony (100%) create mode 100644 ponies/derpy.quotes rename ttyponies/derpy.pony => ponies/derpy.ttypony (100%) rename ttyponies/derpybags.pony => ponies/derpybags.ttypony (100%) rename ttyponies/derpycloud.pony => ponies/derpycloud.ttypony (100%) rename ttyponies/derpysad.pony => ponies/derpysad.ttypony (100%) rename ttyponies/derpysit.pony => ponies/derpysit.ttypony (100%) rename ttyponies/derpystand.pony => ponies/derpystand.ttypony (100%) rename ttyponies/derpystandwing.pony => ponies/derpystandwing.ttypony (100%) rename ttyponies/diamondmint.pony => ponies/diamondmint.ttypony (100%) rename ponyquotes/diamondtiara.0 => ponies/diamondtiara.quotes (100%) rename ttyponies/diamondtiara.pony => ponies/diamondtiara.ttypony (100%) rename ttyponies/dinky.pony => ponies/dinky.ttypony (100%) rename ponyquotes/discord.0 => ponies/discord.quotes (100%) rename ttyponies/discord.pony => ponies/discord.ttypony (100%) rename ttyponies/discordamused.pony => ponies/discordamused.ttypony (100%) rename ttyponies/discordpuppetmaster.pony => ponies/discordpuppetmaster.ttypony (100%) rename ttyponies/djpon-3.pony => ponies/djpon-3.ttypony (100%) rename ttyponies/drhooves.pony => ponies/drhooves.ttypony (100%) rename ttyponies/elsie.pony => ponies/elsie.ttypony (100%) rename ttyponies/epona.pony => ponies/epona.ttypony (100%) rename ponyquotes/fancypants.0 => ponies/fancypants.quotes (100%) rename ttyponies/fancypants.pony => ponies/fancypants.ttypony (100%) rename ttyponies/fido.pony => ponies/fido.ttypony (100%) rename ttyponies/fillistia.pony => ponies/fillistia.ttypony (100%) rename ttyponies/fillycadance.pony => ponies/fillycadance.ttypony (100%) rename ttyponies/fillycelestia.pony => ponies/fillycelestia.ttypony (100%) rename ttyponies/fillydash.pony => ponies/fillydash.ttypony (100%) rename ttyponies/fillydashfly.pony => ponies/fillydashfly.ttypony (100%) rename ttyponies/fillyjack.pony => ponies/fillyjack.ttypony (100%) rename ttyponies/fillyjacktravel.pony => ponies/fillyjacktravel.ttypony (100%) rename ttyponies/fillypinkie.pony => ponies/fillypinkie.ttypony (100%) rename ttyponies/fillypinkiecurly.pony => ponies/fillypinkiecurly.ttypony (100%) rename ttyponies/fillyrarity.pony => ponies/fillyrarity.ttypony (100%) rename ttyponies/fillyshy.pony => ponies/fillyshy.ttypony (100%) rename ttyponies/fillytwilight.pony => ponies/fillytwilight.ttypony (100%) rename ttyponies/filthyrich.pony => ponies/filthyrich.ttypony (100%) rename ttyponies/firestreak.pony => ponies/firestreak.ttypony (100%) rename ttyponies/flam.pony => ponies/flam.ttypony (100%) rename ttyponies/fleurdelis.pony => ponies/fleurdelis.ttypony (100%) rename ttyponies/fleurdelishair.pony => ponies/fleurdelishair.ttypony (100%) rename ttyponies/fleurdelislay.pony => ponies/fleurdelislay.ttypony (100%) rename ttyponies/flim.pony => ponies/flim.ttypony (100%) rename ttyponies/flowertrio.pony => ponies/flowertrio.ttypony (100%) create mode 100644 ponies/fluttershy.quotes rename ttyponies/fluttershy.pony => ponies/fluttershy.ttypony (100%) rename ttyponies/fluttershygala.pony => ponies/fluttershygala.ttypony (100%) rename ttyponies/fluttershyshy.pony => ponies/fluttershyshy.ttypony (100%) rename ttyponies/fluttershystare.pony => ponies/fluttershystare.ttypony (100%) rename ttyponies/forestspirit.pony => ponies/forestspirit.ttypony (100%) rename ttyponies/frederickhorseshoepin.pony => ponies/frederickhorseshoepin.ttypony (100%) rename ttyponies/georgewashingtony.pony => ponies/georgewashingtony.ttypony (100%) create mode 100644 ponies/gilda.quotes rename ttyponies/gilda.pony => ponies/gilda.ttypony (100%) rename ttyponies/gildastand.pony => ponies/gildastand.ttypony (100%) rename ttyponies/gingergold.pony => ponies/gingergold.ttypony (100%) rename ttyponies/goldenharvest.pony => ponies/goldenharvest.ttypony (100%) rename ponyquotes/granny.0 => ponies/granny.quotes (100%) rename ttyponies/granny.pony => ponies/granny.ttypony (100%) rename ttyponies/grannychair.pony => ponies/grannychair.ttypony (100%) rename ttyponies/grannysleep.pony => ponies/grannysleep.ttypony (100%) rename ttyponies/gummy.pony => ponies/gummy.ttypony (100%) rename ttyponies/gustavelegrand.pony => ponies/gustavelegrand.ttypony (100%) rename ttyponies/harpass.pony => ponies/harpass.ttypony (100%) rename ttyponies/hayfever.pony => ponies/hayfever.ttypony (100%) rename ttyponies/heartstrings.pony => ponies/heartstrings.ttypony (100%) rename ttyponies/highscore.pony => ponies/highscore.ttypony (100%) rename ttyponies/hoity.pony => ponies/hoity.ttypony (100%) rename ttyponies/hollydash.pony => ponies/hollydash.ttypony (100%) rename ttyponies/horsemd.pony => ponies/horsemd.ttypony (100%) rename ttyponies/horsepower.pony => ponies/horsepower.ttypony (100%) rename ttyponies/horte.pony => ponies/horte.ttypony (100%) rename ttyponies/hughjelly.pony => ponies/hughjelly.ttypony (100%) rename ttyponies/inky.pony => ponies/inky.ttypony (100%) create mode 100644 ponies/ironwill.quotes rename ttyponies/ironwillwalk.pony => ponies/ironwillwalk.ttypony (100%) rename ttyponies/jeffletrotski.pony => ponies/jeffletrotski.ttypony (100%) rename ttyponies/jesuspezuna.pony => ponies/jesuspezuna.ttypony (100%) rename ttyponies/joe.pony => ponies/joe.ttypony (100%) rename ttyponies/joetuxedo.pony => ponies/joetuxedo.ttypony (100%) rename ttyponies/junebug.pony => ponies/junebug.ttypony (100%) rename ttyponies/laflour.pony => ponies/laflour.ttypony (100%) rename ttyponies/lemonhearts.pony => ponies/lemonhearts.ttypony (100%) rename ttyponies/lightning.pony => ponies/lightning.ttypony (100%) rename ponyquotes/lily.1 => ponies/lily.quotes (62%) rename ttyponies/lily.pony => ponies/lily.ttypony (100%) rename ttyponies/lintsalot.pony => ponies/lintsalot.ttypony (100%) rename ttyponies/lotus.pony => ponies/lotus.ttypony (100%) rename ttyponies/lotusbloosom.pony => ponies/lotusbloosom.ttypony (100%) rename ttyponies/lulamoon.pony => ponies/lulamoon.ttypony (100%) create mode 100644 ponies/luna.quotes rename ttyponies/luna.pony => ponies/luna.ttypony (100%) rename ttyponies/lunafly.pony => ponies/lunafly.ttypony (100%) rename ponyquotes/lyra.0 => ponies/lyra.quotes (100%) rename ttyponies/lyra.pony => ponies/lyra.ttypony (100%) rename ttyponies/lyrabonbon.pony => ponies/lyrabonbon.ttypony (100%) rename ttyponies/lyrasit.pony => ponies/lyrasit.ttypony (100%) rename ttyponies/magnum.pony => ponies/magnum.ttypony (100%) rename ttyponies/manticore.pony => ponies/manticore.ttypony (100%) rename ttyponies/maredowellfly.pony => ponies/maredowellfly.ttypony (100%) rename ttyponies/maredowellgallop.pony => ponies/maredowellgallop.ttypony (100%) rename ttyponies/master.pony => ponies/master.ttypony (100%) rename ttyponies/mayor.pony => ponies/mayor.ttypony (100%) rename ttyponies/meadowsong.pony => ponies/meadowsong.ttypony (100%) rename ttyponies/meliot.pony => ponies/meliot.ttypony (100%) rename ttyponies/milkyway.pony => ponies/milkyway.ttypony (100%) rename ttyponies/minuette.pony => ponies/minuette.ttypony (100%) rename ttyponies/mjolna.pony => ponies/mjolna.ttypony (100%) rename ttyponies/mrsparkle.pony => ponies/mrsparkle.ttypony (100%) rename ttyponies/mrssparkle.pony => ponies/mrssparkle.ttypony (100%) rename ttyponies/nightlight.pony => ponies/nightlight.ttypony (100%) create mode 100644 ponies/nightmare.quotes rename ttyponies/nightmare.pony => ponies/nightmare.ttypony (100%) rename ttyponies/noi.pony => ponies/noi.ttypony (100%) rename ttyponies/noteworthy.pony => ponies/noteworthy.ttypony (100%) rename ttyponies/octavia.pony => ponies/octavia.ttypony (100%) rename ttyponies/oinkoinkoink.pony => ponies/oinkoinkoink.ttypony (100%) rename ttyponies/opal.pony => ponies/opal.ttypony (100%) rename ttyponies/orange.pony => ponies/orange.ttypony (100%) rename ttyponies/owl.pony => ponies/owl.ttypony (100%) rename ttyponies/owlowiscious.pony => ponies/owlowiscious.ttypony (100%) rename ttyponies/parasprite.pony => ponies/parasprite.ttypony (100%) rename ttyponies/pearl.pony => ponies/pearl.ttypony (100%) rename ttyponies/peppermoon.pony => ponies/peppermoon.ttypony (100%) rename ttyponies/perry.pony => ponies/perry.ttypony (100%) rename ttyponies/perrypierce.pony => ponies/perrypierce.ttypony (100%) rename ttyponies/persnickety.pony => ponies/persnickety.ttypony (100%) rename ttyponies/petunia.pony => ponies/petunia.ttypony (100%) rename ttyponies/philomena.pony => ponies/philomena.ttypony (100%) rename ttyponies/philomenaphoenix.pony => ponies/philomenaphoenix.ttypony (100%) create mode 100644 ponies/photofinish.quotes rename ttyponies/photofinish.pony => ponies/photofinish.ttypony (100%) rename ttyponies/pictureperfect.pony => ponies/pictureperfect.ttypony (100%) rename ttyponies/pigpen.pony => ponies/pigpen.ttypony (100%) rename ttyponies/pinacolada.pony => ponies/pinacolada.ttypony (100%) rename ttyponies/pinkacopter.pony => ponies/pinkacopter.ttypony (100%) rename ttyponies/pinkamina.pony => ponies/pinkamina.ttypony (100%) create mode 100644 ponies/pinkie.quotes rename ttyponies/pinkie.pony => ponies/pinkie.ttypony (100%) rename ttyponies/pinkiebounce.pony => ponies/pinkiebounce.ttypony (100%) rename ttyponies/pinkiecannon.pony => ponies/pinkiecannon.ttypony (100%) rename ttyponies/pinkiecannonfront.pony => ponies/pinkiecannonfront.ttypony (100%) rename ttyponies/pinkiecannonhappy.pony => ponies/pinkiecannonhappy.ttypony (100%) rename ttyponies/pinkiechicken.pony => ponies/pinkiechicken.ttypony (100%) rename ttyponies/pinkiefly.pony => ponies/pinkiefly.ttypony (100%) rename ttyponies/pinkiegala.pony => ponies/pinkiegala.ttypony (100%) rename ttyponies/pinkiegummy.pony => ponies/pinkiegummy.ttypony (100%) rename ttyponies/pinkiegummydisguise.pony => ponies/pinkiegummydisguise.ttypony (100%) rename ttyponies/pinkiehugfluttershy.pony => ponies/pinkiehugfluttershy.ttypony (100%) rename ttyponies/pinkiehugsfluttershy.pony => ponies/pinkiehugsfluttershy.ttypony (100%) rename ttyponies/pinkieoink.pony => ponies/pinkieoink.ttypony (100%) rename ttyponies/pinkieparade.pony => ponies/pinkieparade.ttypony (100%) rename ttyponies/pinkiepartycannon.pony => ponies/pinkiepartycannon.ttypony (100%) rename ttyponies/pinkieprincess.pony => ponies/pinkieprincess.ttypony (100%) rename ttyponies/pinkiesilly.pony => ponies/pinkiesilly.ttypony (100%) rename ttyponies/pinkietongue.pony => ponies/pinkietongue.ttypony (100%) rename ttyponies/pinkieumbrellahat.pony => ponies/pinkieumbrellahat.ttypony (100%) rename ttyponies/pinkieumbrellahatfear.pony => ponies/pinkieumbrellahatfear.ttypony (100%) rename ttyponies/pinkiewhoops.pony => ponies/pinkiewhoops.ttypony (100%) rename ttyponies/pinkiewhoopseat.pony => ponies/pinkiewhoopseat.ttypony (100%) rename ttyponies/pinkiewhoopsout.pony => ponies/pinkiewhoopsout.ttypony (100%) rename ponyquotes/pipsqueak.1 => ponies/pipsqueak.quotes (55%) rename ttyponies/pipsqueak.pony => ponies/pipsqueak.ttypony (100%) rename ttyponies/pokey.pony => ponies/pokey.ttypony (100%) rename ttyponies/pokeypierce.pony => ponies/pokeypierce.ttypony (100%) rename ttyponies/ponet.pony => ponies/ponet.ttypony (100%) rename ttyponies/poppycock.pony => ponies/poppycock.ttypony (100%) rename ttyponies/powderrouge.pony => ponies/powderrouge.ttypony (100%) rename ttyponies/prettyvision.pony => ponies/prettyvision.ttypony (100%) rename ttyponies/purplehaze.pony => ponies/purplehaze.ttypony (100%) rename ttyponies/quickfix.pony => ponies/quickfix.ttypony (100%) rename ttyponies/raggedy.pony => ponies/raggedy.ttypony (100%) create mode 100644 ponies/rainbow.quotes rename ttyponies/rainbow.pony => ponies/rainbow.ttypony (100%) rename ttyponies/rainbowdrag.pony => ponies/rainbowdrag.ttypony (100%) rename ttyponies/rainbowfly.pony => ponies/rainbowfly.ttypony (100%) rename ttyponies/rainbowgala.pony => ponies/rainbowgala.ttypony (100%) rename ttyponies/rainbowhurricane.pony => ponies/rainbowhurricane.ttypony (100%) rename ttyponies/rainbowsalute.pony => ponies/rainbowsalute.ttypony (100%) rename ttyponies/rainbowshadowbolt.pony => ponies/rainbowshadowbolt.ttypony (100%) rename ttyponies/rainbowshine.pony => ponies/rainbowshine.ttypony (100%) rename ttyponies/rainbowsleep.pony => ponies/rainbowsleep.ttypony (100%) rename ttyponies/raindrops.pony => ponies/raindrops.ttypony (100%) create mode 100644 ponies/rarity.quotes rename ttyponies/rarity.pony => ponies/rarity.ttypony (100%) rename ttyponies/raritycomplaining.pony => ponies/raritycomplaining.ttypony (100%) rename ttyponies/raritydrama.pony => ponies/raritydrama.ttypony (100%) rename ttyponies/rarityfly.pony => ponies/rarityfly.ttypony (100%) rename ttyponies/raritygala.pony => ponies/raritygala.ttypony (100%) rename ttyponies/rarityponder.pony => ponies/rarityponder.ttypony (100%) rename ttyponies/raritysdad.pony => ponies/raritysdad.ttypony (100%) rename ttyponies/raritysmom.pony => ponies/raritysmom.ttypony (100%) rename ttyponies/redheart.pony => ponies/redheart.ttypony (100%) rename ttyponies/rhyme.pony => ponies/rhyme.ttypony (100%) rename ttyponies/rocky.pony => ponies/rocky.ttypony (100%) rename ponyquotes/rose.1 => ponies/rose.quotes (63%) rename ttyponies/rose.pony => ponies/rose.ttypony (100%) rename ttyponies/roseluck.pony => ponies/roseluck.ttypony (100%) rename ttyponies/rover.pony => ponies/rover.ttypony (100%) rename ttyponies/royalguard.pony => ponies/royalguard.ttypony (100%) rename ttyponies/royalnightguard.pony => ponies/royalnightguard.ttypony (100%) rename ttyponies/royalribbon.pony => ponies/royalribbon.ttypony (100%) rename ttyponies/ruby.pony => ponies/ruby.ttypony (100%) rename ponyquotes/sapphire.0 => ponies/sapphire.quotes (100%) rename ttyponies/sapphire.pony => ponies/sapphire.ttypony (100%) create mode 100644 ponies/scootaloo.quotes rename ttyponies/scootaloo.pony => ponies/scootaloo.ttypony (100%) rename ttyponies/screwball.pony => ponies/screwball.ttypony (100%) rename ttyponies/screwloose.pony => ponies/screwloose.ttypony (100%) rename ttyponies/seaswirl.pony => ponies/seaswirl.ttypony (100%) rename ttyponies/shadowbolts.pony => ponies/shadowbolts.ttypony (100%) rename ttyponies/shiningarmor.pony => ponies/shiningarmor.ttypony (100%) rename ttyponies/shiningarmorguard.pony => ponies/shiningarmorguard.ttypony (100%) rename ttyponies/shiningarmorwedding.pony => ponies/shiningarmorwedding.ttypony (100%) rename ttyponies/silverspeed.pony => ponies/silverspeed.ttypony (100%) rename ponyquotes/silverspoon.0 => ponies/silverspoon.quotes (100%) rename ttyponies/silverspoon.pony => ponies/silverspoon.ttypony (100%) rename ttyponies/silverstar.pony => ponies/silverstar.ttypony (100%) rename ttyponies/sindy.pony => ponies/sindy.ttypony (100%) rename ttyponies/skyra.pony => ponies/skyra.ttypony (100%) rename ttyponies/snails.pony => ponies/snails.ttypony (100%) rename ttyponies/snips.pony => ponies/snips.ttypony (100%) rename ttyponies/snowflake.pony => ponies/snowflake.ttypony (100%) create mode 100644 ponies/soarin.quotes rename ttyponies/soarin.pony => ponies/soarin.ttypony (100%) rename ttyponies/soarinofficer.pony => ponies/soarinofficer.ttypony (100%) rename ttyponies/soigne.pony => ponies/soigne.ttypony (100%) rename ttyponies/sparkler.pony => ponies/sparkler.ttypony (100%) create mode 100644 ponies/spike.quotes rename ttyponies/spike.pony => ponies/spike.ttypony (100%) rename ttyponies/spikefloat.pony => ponies/spikefloat.ttypony (100%) rename ttyponies/spikelove.pony => ponies/spikelove.ttypony (100%) rename ttyponies/spikemustache.pony => ponies/spikemustache.ttypony (100%) rename ponyquotes/spitfire.0 => ponies/spitfire.quotes (100%) rename ttyponies/spitfire.pony => ponies/spitfire.ttypony (100%) rename ttyponies/spot.pony => ponies/spot.ttypony (100%) rename ttyponies/starlight.pony => ponies/starlight.ttypony (100%) rename ttyponies/stella.pony => ponies/stella.ttypony (100%) rename ttyponies/stevenmagnet.pony => ponies/stevenmagnet.ttypony (100%) rename ttyponies/stevenmagnettrue.pony => ponies/stevenmagnettrue.ttypony (100%) rename ttyponies/strongheart.pony => ponies/strongheart.ttypony (100%) rename ttyponies/sue.pony => ponies/sue.ttypony (100%) rename ttyponies/suedance.pony => ponies/suedance.ttypony (100%) rename ttyponies/sunnyrays.pony => ponies/sunnyrays.ttypony (100%) rename ttyponies/surprise.pony => ponies/surprise.ttypony (100%) rename ttyponies/sweatiesing.pony => ponies/sweatiesing.ttypony (100%) create mode 100644 ponies/sweetie.quotes rename ttyponies/sweetie.pony => ponies/sweetie.ttypony (100%) rename ttyponies/tank.pony => ponies/tank.ttypony (100%) rename ttyponies/tenderheart.pony => ponies/tenderheart.ttypony (100%) rename ttyponies/theodoredonaldkerabatsos.pony => ponies/theodoredonaldkerabatsos.ttypony (100%) rename ttyponies/thunderlane.pony => ponies/thunderlane.ttypony (100%) rename ttyponies/timeturner.pony => ponies/timeturner.ttypony (100%) rename ttyponies/tom.pony => ponies/tom.ttypony (100%) rename ttyponies/tornadobolt.pony => ponies/tornadobolt.ttypony (100%) create mode 100644 ponies/trixie.quotes rename ttyponies/trixie.pony => ponies/trixie.ttypony (100%) rename ttyponies/trixielulamoon.pony => ponies/trixielulamoon.ttypony (100%) rename ttyponies/trixiestage.pony => ponies/trixiestage.ttypony (100%) rename ttyponies/trixiestand.pony => ponies/trixiestand.ttypony (100%) rename ttyponies/truffleshuffle.pony => ponies/truffleshuffle.ttypony (100%) rename ttyponies/turf.pony => ponies/turf.ttypony (100%) rename ttyponies/turnip.pony => ponies/turnip.ttypony (100%) create mode 100644 ponies/twilight.quotes rename ttyponies/twilight.pony => ponies/twilight.ttypony (100%) rename ttyponies/twilightcrazyfromball.pony => ponies/twilightcrazyfromball.ttypony (100%) rename ttyponies/twilightrage.pony => ponies/twilightrage.ttypony (100%) rename ttyponies/twilightspike.pony => ponies/twilightspike.ttypony (100%) rename ttyponies/twilightthebearded.pony => ponies/twilightthebearded.ttypony (100%) rename ttyponies/twilighttime.pony => ponies/twilighttime.ttypony (100%) rename ttyponies/twilightvelvet.pony => ponies/twilightvelvet.ttypony (100%) rename ttyponies/twilightzero.pony => ponies/twilightzero.ttypony (100%) rename ponyquotes/twist.0 => ponies/twist.quotes (100%) rename ttyponies/twist.pony => ponies/twist.ttypony (100%) rename ttyponies/vinyl.pony => ponies/vinyl.ttypony (100%) rename ttyponies/violet.pony => ponies/violet.ttypony (100%) rename ttyponies/waltercoltchak.pony => ponies/waltercoltchak.ttypony (100%) rename ttyponies/wildfire.pony => ponies/wildfire.ttypony (100%) rename ttyponies/winona.pony => ponies/winona.ttypony (100%) rename ttyponies/woona.pony => ponies/woona.ttypony (100%) create mode 100644 ponies/zecora.quotes rename ttyponies/zecora.pony => ponies/zecora.ttypony (100%) rename ttyponies/zecorabalance.pony => ponies/zecorabalance.ttypony (100%) rename dev/pony-checklist => pony-checklist (100%) delete mode 100755 ponycenter.py delete mode 100644 ponyquotes/applebloom.0 delete mode 100644 ponyquotes/applebloom.1 delete mode 100644 ponyquotes/applebloom.2 delete mode 100644 ponyquotes/applebloom.3 delete mode 100644 ponyquotes/applebloom.4 delete mode 100644 ponyquotes/applebloom.5 delete mode 100644 ponyquotes/applebloom.6 delete mode 100644 ponyquotes/applebloom.7 delete mode 100644 ponyquotes/applebloom.8 delete mode 100644 ponyquotes/applejack.0 delete mode 100644 ponyquotes/applejack.1 delete mode 100644 ponyquotes/applejack.2 delete mode 100644 ponyquotes/applejack.3 delete mode 100644 ponyquotes/applejack.4 delete mode 100644 ponyquotes/applejack.5 delete mode 100644 ponyquotes/applejack.6 delete mode 100644 ponyquotes/applejack.7 delete mode 100644 ponyquotes/applejack.8 delete mode 100644 ponyquotes/applejack.9 delete mode 100644 ponyquotes/bigmac.0 delete mode 100644 ponyquotes/bigmac.1 delete mode 100644 ponyquotes/bigmac.2 delete mode 100644 ponyquotes/bigmac.3 delete mode 100644 ponyquotes/bigmac.4 delete mode 100644 ponyquotes/bonbon.1 delete mode 100644 ponyquotes/braeburn.0 delete mode 100644 ponyquotes/braeburn.1 delete mode 100644 ponyquotes/braeburn.2 delete mode 100644 ponyquotes/carrot.0 delete mode 100644 ponyquotes/celestia.1 delete mode 100644 ponyquotes/celestia.2 delete mode 100644 ponyquotes/celestia.3 delete mode 100644 ponyquotes/celestia.4 delete mode 100644 ponyquotes/cheerilee.1 delete mode 100644 ponyquotes/chrysalis.1 delete mode 100644 ponyquotes/derpy.0 delete mode 100644 ponyquotes/derpy.1 delete mode 100644 ponyquotes/derpy.2 delete mode 100644 ponyquotes/derpy.3 delete mode 100644 ponyquotes/derpy.4 delete mode 100644 ponyquotes/fluttershy.0 delete mode 100644 ponyquotes/fluttershy.1 delete mode 100644 ponyquotes/fluttershy.10 delete mode 100644 ponyquotes/fluttershy.11 delete mode 100644 ponyquotes/fluttershy.12 delete mode 100644 ponyquotes/fluttershy.13 delete mode 100644 ponyquotes/fluttershy.14 delete mode 100644 ponyquotes/fluttershy.15 delete mode 100644 ponyquotes/fluttershy.16 delete mode 100644 ponyquotes/fluttershy.17 delete mode 100644 ponyquotes/fluttershy.18 delete mode 100644 ponyquotes/fluttershy.19 delete mode 100644 ponyquotes/fluttershy.2 delete mode 100644 ponyquotes/fluttershy.20 delete mode 100644 ponyquotes/fluttershy.21 delete mode 100644 ponyquotes/fluttershy.22 delete mode 100644 ponyquotes/fluttershy.23 delete mode 100644 ponyquotes/fluttershy.24 delete mode 100644 ponyquotes/fluttershy.25 delete mode 100644 ponyquotes/fluttershy.26 delete mode 100644 ponyquotes/fluttershy.27 delete mode 100644 ponyquotes/fluttershy.28 delete mode 100644 ponyquotes/fluttershy.29 delete mode 100644 ponyquotes/fluttershy.3 delete mode 100644 ponyquotes/fluttershy.30 delete mode 100644 ponyquotes/fluttershy.31 delete mode 100644 ponyquotes/fluttershy.4 delete mode 100644 ponyquotes/fluttershy.5 delete mode 100644 ponyquotes/fluttershy.6 delete mode 100644 ponyquotes/fluttershy.7 delete mode 100644 ponyquotes/fluttershy.8 delete mode 100644 ponyquotes/fluttershy.9 delete mode 100644 ponyquotes/gilda.0 delete mode 100644 ponyquotes/gilda.1 delete mode 100644 ponyquotes/gilda.2 delete mode 100644 ponyquotes/gilda.3 delete mode 100644 ponyquotes/gilda.4 delete mode 100644 ponyquotes/gilda.5 delete mode 100644 ponyquotes/ironwill.0 delete mode 100644 ponyquotes/ironwill.1 delete mode 100644 ponyquotes/ironwill.2 delete mode 100644 ponyquotes/ironwill.3 delete mode 100644 ponyquotes/ironwill.4 delete mode 100644 ponyquotes/ironwill.5 delete mode 100644 ponyquotes/ironwill.6 delete mode 100644 ponyquotes/ironwill.7 delete mode 100644 ponyquotes/lily.0 delete mode 100644 ponyquotes/luna.0 delete mode 100644 ponyquotes/luna.1 delete mode 100644 ponyquotes/luna.2 delete mode 100644 ponyquotes/luna.3 delete mode 100644 ponyquotes/luna.4 delete mode 100644 ponyquotes/luna.5 delete mode 100644 ponyquotes/luna.6 delete mode 100644 ponyquotes/nightmare.0 delete mode 100644 ponyquotes/nightmare.1 delete mode 100644 ponyquotes/nightmare.2 delete mode 100644 ponyquotes/nightmare.3 delete mode 100644 ponyquotes/nightmare.4 delete mode 100644 ponyquotes/nightmare.5 delete mode 100644 ponyquotes/photofinish.0 delete mode 100644 ponyquotes/photofinish.1 delete mode 100644 ponyquotes/photofinish.2 delete mode 100644 ponyquotes/photofinish.3 delete mode 100644 ponyquotes/photofinish.4 delete mode 100644 ponyquotes/pinkie.0 delete mode 100644 ponyquotes/pinkie.1 delete mode 100644 ponyquotes/pinkie.10 delete mode 100644 ponyquotes/pinkie.11 delete mode 100644 ponyquotes/pinkie.12 delete mode 100644 ponyquotes/pinkie.13 delete mode 100644 ponyquotes/pinkie.14 delete mode 100644 ponyquotes/pinkie.15 delete mode 100644 ponyquotes/pinkie.16 delete mode 100644 ponyquotes/pinkie.17 delete mode 100644 ponyquotes/pinkie.18 delete mode 100644 ponyquotes/pinkie.19 delete mode 100644 ponyquotes/pinkie.2 delete mode 100644 ponyquotes/pinkie.20 delete mode 100644 ponyquotes/pinkie.21 delete mode 100644 ponyquotes/pinkie.22 delete mode 100644 ponyquotes/pinkie.23 delete mode 100644 ponyquotes/pinkie.24 delete mode 100644 ponyquotes/pinkie.25 delete mode 100644 ponyquotes/pinkie.26 delete mode 100644 ponyquotes/pinkie.27 delete mode 100644 ponyquotes/pinkie.28 delete mode 100644 ponyquotes/pinkie.29 delete mode 100644 ponyquotes/pinkie.3 delete mode 100644 ponyquotes/pinkie.30 delete mode 100644 ponyquotes/pinkie.31 delete mode 100644 ponyquotes/pinkie.32 delete mode 100644 ponyquotes/pinkie.33 delete mode 100644 ponyquotes/pinkie.34 delete mode 100644 ponyquotes/pinkie.35 delete mode 100644 ponyquotes/pinkie.36 delete mode 100644 ponyquotes/pinkie.4 delete mode 100644 ponyquotes/pinkie.5 delete mode 100644 ponyquotes/pinkie.6 delete mode 100644 ponyquotes/pinkie.7 delete mode 100644 ponyquotes/pinkie.8 delete mode 100644 ponyquotes/pinkie.9 delete mode 100644 ponyquotes/pipsqueak.0 delete mode 100644 ponyquotes/pipsqueak.2 delete mode 100644 ponyquotes/ponies delete mode 100644 ponyquotes/rainbow.0 delete mode 100644 ponyquotes/rainbow.1 delete mode 100644 ponyquotes/rainbow.10 delete mode 100644 ponyquotes/rainbow.11 delete mode 100644 ponyquotes/rainbow.12 delete mode 100644 ponyquotes/rainbow.13 delete mode 100644 ponyquotes/rainbow.14 delete mode 100644 ponyquotes/rainbow.15 delete mode 100644 ponyquotes/rainbow.16 delete mode 100644 ponyquotes/rainbow.17 delete mode 100644 ponyquotes/rainbow.18 delete mode 100644 ponyquotes/rainbow.19 delete mode 100644 ponyquotes/rainbow.2 delete mode 100644 ponyquotes/rainbow.20 delete mode 100644 ponyquotes/rainbow.21 delete mode 100644 ponyquotes/rainbow.3 delete mode 100644 ponyquotes/rainbow.4 delete mode 100644 ponyquotes/rainbow.5 delete mode 100644 ponyquotes/rainbow.6 delete mode 100644 ponyquotes/rainbow.7 delete mode 100644 ponyquotes/rainbow.8 delete mode 100644 ponyquotes/rainbow.9 delete mode 100644 ponyquotes/rarity.0 delete mode 100644 ponyquotes/rarity.1 delete mode 100644 ponyquotes/rarity.10 delete mode 100644 ponyquotes/rarity.11 delete mode 100644 ponyquotes/rarity.12 delete mode 100644 ponyquotes/rarity.13 delete mode 100644 ponyquotes/rarity.14 delete mode 100644 ponyquotes/rarity.15 delete mode 100644 ponyquotes/rarity.16 delete mode 100644 ponyquotes/rarity.17 delete mode 100644 ponyquotes/rarity.18 delete mode 100644 ponyquotes/rarity.19 delete mode 100644 ponyquotes/rarity.2 delete mode 100644 ponyquotes/rarity.20 delete mode 100644 ponyquotes/rarity.21 delete mode 100644 ponyquotes/rarity.22 delete mode 100644 ponyquotes/rarity.23 delete mode 100644 ponyquotes/rarity.24 delete mode 100644 ponyquotes/rarity.25 delete mode 100644 ponyquotes/rarity.3 delete mode 100644 ponyquotes/rarity.4 delete mode 100644 ponyquotes/rarity.5 delete mode 100644 ponyquotes/rarity.6 delete mode 100644 ponyquotes/rarity.7 delete mode 100644 ponyquotes/rarity.8 delete mode 100644 ponyquotes/rarity.9 delete mode 100644 ponyquotes/rose.0 delete mode 100644 ponyquotes/scootaloo.0 delete mode 100644 ponyquotes/scootaloo.1 delete mode 100644 ponyquotes/scootaloo.2 delete mode 100644 ponyquotes/scootaloo.3 delete mode 100644 ponyquotes/scootaloo.4 delete mode 100644 ponyquotes/scootaloo.5 delete mode 100644 ponyquotes/scootaloo.6 delete mode 100644 ponyquotes/scootaloo.7 delete mode 100644 ponyquotes/soarin.0 delete mode 100644 ponyquotes/soarin.1 delete mode 100644 ponyquotes/soarin.2 delete mode 100644 ponyquotes/spike.0 delete mode 100644 ponyquotes/spike.1 delete mode 100644 ponyquotes/spike.2 delete mode 100644 ponyquotes/spike.3 delete mode 100644 ponyquotes/spike.4 delete mode 100644 ponyquotes/spike.5 delete mode 100644 ponyquotes/spike.6 delete mode 100644 ponyquotes/spike.7 delete mode 100644 ponyquotes/sweetie.0 delete mode 100644 ponyquotes/sweetie.1 delete mode 100644 ponyquotes/sweetie.2 delete mode 100644 ponyquotes/sweetie.3 delete mode 100644 ponyquotes/sweetie.4 delete mode 100644 ponyquotes/sweetie.5 delete mode 100644 ponyquotes/sweetie.6 delete mode 100644 ponyquotes/trixie.0 delete mode 100644 ponyquotes/trixie.1 delete mode 100644 ponyquotes/trixie.2 delete mode 100644 ponyquotes/trixie.3 delete mode 100644 ponyquotes/trixie.4 delete mode 100644 ponyquotes/trixie.5 delete mode 100644 ponyquotes/trixie.6 delete mode 100644 ponyquotes/twilight.0 delete mode 100644 ponyquotes/twilight.1 delete mode 100644 ponyquotes/twilight.10 delete mode 100644 ponyquotes/twilight.11 delete mode 100644 ponyquotes/twilight.12 delete mode 100644 ponyquotes/twilight.13 delete mode 100644 ponyquotes/twilight.14 delete mode 100644 ponyquotes/twilight.15 delete mode 100644 ponyquotes/twilight.16 delete mode 100644 ponyquotes/twilight.17 delete mode 100644 ponyquotes/twilight.18 delete mode 100644 ponyquotes/twilight.19 delete mode 100644 ponyquotes/twilight.2 delete mode 100644 ponyquotes/twilight.20 delete mode 100644 ponyquotes/twilight.21 delete mode 100644 ponyquotes/twilight.22 delete mode 100644 ponyquotes/twilight.3 delete mode 100644 ponyquotes/twilight.4 delete mode 100644 ponyquotes/twilight.5 delete mode 100644 ponyquotes/twilight.6 delete mode 100644 ponyquotes/twilight.7 delete mode 100644 ponyquotes/twilight.8 delete mode 100644 ponyquotes/twilight.9 delete mode 100644 ponyquotes/zecora.0 delete mode 100644 ponyquotes/zecora.1 delete mode 100644 ponyquotes/zecora.2 delete mode 100644 ponyquotes/zecora.3 delete mode 100644 ponyquotes/zecora.4 delete mode 100644 ponyquotes/zecora.5 delete mode 100644 ponyquotes/zecora.6 create mode 100755 ponysay-old.py delete mode 100644 ponysay.pdf diff --git a/CHANGELOG b/CHANGELOG deleted file mode 100644 index 96e3fbd..0000000 --- a/CHANGELOG +++ /dev/null @@ -1,417 +0,0 @@ -Version 2.9.1 - - Bug fix: correction in the -W option broke the -o option. - - -Version 2.9 - - New ponies: pinkieumbrelahatfear, twilighttime - - New extraponies: molestia (Tumblr) - - The option -q works like -f and -F, it takes one argument, and may be used multiple - times for more arguments. - - The old option -q is renamed to --q. - - The options --f and --F has been added. - - Weighted distance for autocorrection on pony names and boolean style name is set to 5, rather - than unlimited. Currently this cannot be modified (without editing the source code.) - - If file descriptor 3 is definied when ponysay is executed, extra information is printed to it. - - Arguments starting with n or i is allowed for -W. - - -Version 2.8 - - New ponies: airheart, bastionyorsets, gustavelegrand, milkyway, peppermoon, pinkacopter, pinkiefly, - pinkieparade, pinkieumbrellahat, raritycomplaining, shiningarmorwedding, soarinofficer, - starlight, sunnyrays, sweatiesing, tenderheart, tom, twilightspike, zecorabalance - - New extraponies: applejack (Tumblr), applejack-63, artemis, blueberry, butterscotch, - drhoovesdiscorded (Tumblr), duskshine, elusive, rainbowblitz - - Pony symlink added: georgewachingtony → bastionyorsets - - Support for explicit hypthenation using soft hyphens had been added to the word wrapper. - - Support for explicit non-word wrapping using non-breaking space had been added to the word wrapper. - - The word wrapper colours the inserted hyphens in red. - - Support for terminal capabilities emulation with the flags -X, -V and -K. - - Support for printing just the pony, using the flag -o. - - Colouring option flags are added. - - Automatic correction of incorrectly spelled pony names and balloon style names added. - - -Version 2.7 - - New ponies: basil, cloudkicker, cerberus, cow, derpysad, flowertrio, frederickhorseshoepin, - horsemd, jeffletroski, jesuspezuna, joe, joetuxedo, manticore, meadowsong, - meliot, pinkiegummydisguise, seaswirl, theodoredonaldkerabatsos, turf, - waltercoltchak - - New extraponies: blueballblitz (Various fanfics, Shadowbolt), drhooves1, drhooves2, drhooves3, - drhooves4, drhooves5, drhooves6, drhooves7, drhooves8, drhooves9, drhooves10, - drhooves11, nyx (Fanfic: Past Sins), nyxdisguised (Fanfic: Past Sins), - pinkaminacupcake (Fanfic) - - Pony renamed: cracky to crackle - - -Version 2.6 - - New ponies: applebloomdance, blueberry, blueberrycake, blueharvest, candylicious, - cherrycola, cracky, cutiemarkcrusaders, derpybags, derpycloud, firestreak, - hughjelly, lemonhearts, lyrabonbon, noi, pictureperfect, pigpen, - poppycock, quickfix, rainbowhurricane, rainboshadowbolt, silverspeed, - surprise (wonderbolt), thunderlane, timeturner, twilightthebearded - - New extraponies: faust (alicorn), maria (Moonstuck, seapony), posey (Tumblr), - slanderpony (Various tumblr), sparkler (Tumblr), twilight (Tumblr) - - Pony symlink added: bonbonlyra → lyrabonbon - clockwork → quickfix - drhooves → timeturner - epona → quickfix - lotusbloosom → lotus - - doctor and doctornohat has become extraponies, because their mane style is - different from in the TV show. And timeturner no longer links to any of them. - - ./configure and make is no longer support. - - -Version 2.5.1 - - New extra ponies: sealyra - - Build system as compatibility with standard GNU Make build system. - - -Version 2.5 - - Brand new highly configurable build system. - - UTF-8 as I/O encoding is enforced. (Critical bug fix for ASCII locale users.) - - -Version 2.4 - - Nothing worth mentioning. - - Note: Identifies itself as version 2.3 - - -Version 2.3 - - Support for 'best.pony' file. - - `-q` accepts file names. - - Improved Unicode support: treats combining characters as invisible. - - Optional support for UCS pony names. - - Pony files and balloon style files can be pipes (as - well as sockets, doors and as always regular files.) - - Support cowsay style message compression. - - New ponies: blaze - - New extraponies: fyrefly (Tumblr), surprise (Tumblr), woona (Moonstuck), - woonanohat (Moonstuck) - - Pony symlink added: pinkieoink → oinkoinkoink - - Support for non-MLP:FiM ponies (known as extraponies). - - -Version 2.2 - - Full support for arbitrary positioning of balloon in pony files. - - ANSI colour sequences in pony files are applied only to the pony image, - not the balloon link or the balloon itself. - - Support for colours in the message. - - Support custom balloon styles using the option '-b', '-B' will list all - available. This list depends on whether you are invoking `ponysay` or `ponythink`. - - -Version 2.1.1 - - Nothing worth mentioning. - - -Version 2.1 - - Pony renamed: applebumkin to applebumpkin - - New ponies: purplehaze, owlowiscious - - Cowsay has be reimplemented, and have full Unicode support - and support for @code{figlet} style messages. - - Deleted environment variables: PONYSAY_COWSAY, PONYSAY_COWTHINK - - You will need Python 3, but not GNU Bash, Perl or Cowsay. - - New .pony file format is used. - - -Version 2.0 - - Makefile is generated by running `./configure`. - - All Perl scripts and almost all Bash are reimplemented in one Python 3 script. - - kmsponies4ponysay is included. - - -Version 1.4.1 - - Code is repaired and more portable. - - -Version 1.4 - - Make file is improved. - - Note: Identifies itself as version 1.3 - - -Version 1.3 - - New ponies: forestspirit, hollydash, raggedy, rhyme - - Pony renamed: sindy to powderrouge - - Pony symlink added: sindy → powderrouge - - PREFIX=/some-dir can be used when invoking make, the default value is /usr - - -Version 1.2 - - ponyquotes4ponysay is included. - - Support for extension: kmsponies4ponysay. - - New ponies: ace, filthyrich, blueblood, gingergold, hayfever, - highscore, junebug, mrsparkle, persnickety, ponet, - screwloose, tornadobolt. - - Pony renamed: elsie to prettyvision - - Pony symlinks added: mrsparkle → nightlight - elsie → prettyvision - - Arbitrary spaces in '-f' argument is not longer accepted (it causes - problems with file names including spaces). - - Note: Identifies itself as version 1.1 - - -Version 1.1 - - Manpages are compressed before installation. - - 'info manual' added. - - Shell completion for 'ponythink' added, in addition to 'ponysay'. - - 'fish' completion added. - - '/usr/lib/ponysay' is used instead of '/usr/bin' - for code used by the main script. - - '~/.local/share/ponysay is used for private pony directories. - - 'ncurses' is no longer needed for determining the screen's size, - 'coreutils' is used instead. - - Pony symlinks added: amethyststar → sparkler - berrypinch → ruby - craftycrate → boxxy - magnum → raritysdad - pearl → raritysmom - powderrouge → sindy - royalribbo → violet - - New ponies: blossomforth, bonvoyage, cadance, celestiasmall, - changelingqueen, cherryberry, discordamused, - discordpuppetmaster, fleurdelishair, fleurdelislay, - owl, perrypierce, petunia, pinacolada, skyra, - truffleshuffle. - - Pony spelling removed: fillycadence. - - Pony symlink change: perry → (pokey → perrypierce). - - Option '-L' added, lists ponies with symlink mapping. - - Support for extension: ponyquotes4ponysay. - - Accepts arbitrary spaces in '-f' argument. - - -Version 1.0 - - Spanish translation of the manpage is added. - - New ponies: applecore, applejackscarecrow, bonbonstand, changeling, - chrysalis, cottoncloudy, diamondmint, discord, - fillycadence, flam, fleurdelis, flim, fluttershyshy, - fluttershystare, lyrasit, oinkoinkoink (is pinkie), - philomenaphoenix, pinkiecannon, pinkiecannonfront, - pinkiecannonhappy, pinkiegummy, pinkiehugfluttershy, - pinkiehugsfluttershy, pinkiepartycannon, pinkieprincess, - pinkiesilly, pinkietongue, pinkiewhoops, pinkiewhoopseat, - pinkiewhoopsout, rainbowdrag, rainbowsalute, rainbowshine, - raritydrama, shiningarmor, shiningarmorguard, snowflak, - spikemustache, stevenmagnet, stevenmagnettrue, - twilightcrazyfromball, twilightrage, twilightzero, - wildfire. - - Pony symlinks added: djpon-3 → vinyl - fillycadance → fillycadence - horsepower → snowflake - - Improved TTY support: ponies have low colours resolution, instead - of monochrome, when the high colour resolution is not available. - - -Version 0.10 - - Manpage manual added. - - The directories for pony directories are changed - from '/usr/share' to '/usr/share/ponysay' and '~' to '~/.ponysay'. - - Pony symlinks added: carrottop → carrot - goldenharvest → carrot - harpass → lyra - heartstrings → lyra - lulamoon → trixie - minuette → colgate - noteworthy → blues - perry → pokey - pokeypierce → pokey - timeturner → doctornohat - trixielulamoon → trixie - twilightvelvet → mrssparkle - - Support for truncating output on height, enabled by default under TTY. - - Environment variables added: 'PONYSAY_FULL_WIDTH', - 'PONYSAY_SHELL_LINES', 'PONYSAY_TRUNCATE_HEIGHT', 'PONYSAY_BOTTOM'. - - -Version 0.9 - - Output truncated on width to fit screen. - - Support for TTY (Linux VT). - - 'bash' completion added. - - 'zsh' completion added. - - New ponies: allie, archer, boxxy, carecake, cupcake, daringdo, - davenport, fancypants, ironwillwalk, lily, lunafly, - maredowellfly, maredowellgallop, master, mjolna, - orange, raritysdad, raritysmom, royalnightguard, - ruby, sparkler, violet. - - -Version 0.8 - - New ponies: aloe, angle, applebloom, applebumkin, applefritter, - berrypunch, bigmac, blinkie, blues, braeburn, caesar, - candymane, caramel, cheerilee, cheerilee80, clyde, - colgate, colton, daisy, derpystand, derpystandwing, - diamondtiara, dinky, doctornohat, elsie, fido, - fillycelestia, fillydash, fillydashfly, fillyjack, - fillyjacktravel, fillypinkie, fillypinkiecurly, - fillyrarity, fillyshy, fluttershygala, gilda, gildastand, - granny, grannychair, grannysleep, gummy, hoity, horte, - inky, laflour, lightning, lintsalot, lotus, mayor, - mrssparkle, nightmare, opal, parasprite, philomena, - photofinish, pinkamina, pinkiebounce, pinkiechicken, - pinkiegala, pipsqueak, pokey, rainbowfly, rainbowgala, - rainbowsleep, raindrops, rarityfly, raritygala, - rarityponder, redheart, rocky, rose, rover, royalguard, - sapphire, scootaloo, screwball, shadowbolts, silverspoon, - silverstar, sindy, snails, snips, soarin, soigne, spike, - spikefloat, spikelove, spot, stella, strongheart, sue, - suedance, tank, trixiestage, trixiestand, turnip, twist, - winona. - - Note: Identifies itself as version 0.7 - - -Version 0.7 - - New ponies: carrot, octavia, trixie, vinyl, zecora. - - Support for listing ponies with '-l' option. - - -Version 0.6 - - New ponies: bonbon, celestia, doctor, fillistia, - spitfire, woona (not moonstuck). - - Dropping usage of utility 'which', using 'hash' instead. - - Note: Identifies itself as version 0.5 - - -Version 0.5 - - Using utility 'which' to determine existance of 'cowsay'. - - -Version 0.4 - - '.cow' files are removed. - - Support for '-W' option. - - Select random pony if not specified. - - Added command '-f' for supports file names, and not only pony names. - - -Version 0.3 - - Fixed use of '.pony' files. - - -Version 0.2 - - Pony files end with '.pony' instead of '.cow'. - - lyrasleep is renamed to lyra. - - '.cow' files are kept but not used. - - Added option '-h' prints proper help. - - -Version 0.1 - - First release. - - Includes the ponies: applejack, derpy, derpysit, fluttershy, - luna, lyrasleep, pinkie, rainbow, rarity, - sweetie, twilight. diff --git a/CREDITS b/CREDITS index a76e27d..a32edbf 100644 --- a/CREDITS +++ b/CREDITS @@ -1,6 +1,7 @@ # Pretty much all the contributors in alphabetic order. # Active developers +Sebastian Götte Erkin Batu Altunbaş Mattias Andrée Elis Axelsson diff --git a/README.md b/README.md index e7ef729..25c4609 100644 --- a/README.md +++ b/README.md @@ -20,22 +20,9 @@ In order to use ponysay, run: Or if you have a specific pony in your mind: - ponysay -f pinkie "Partay!~" + ponysay -p pinkie "Partay!~" Run `info ponysay`, `man 6 ponysay` or `ponysay -h` for more information. -A Spanish manual is available: `man -L es 6 ponysay`. - -#### Arch Linux -The package is in the official repositories as `community/ponysay`, there is also a git version named `ponysay-git` in AUR. - -#### Chakra -A git version of the package is available as `ponysay-git` in CCR, alongside a stable package as `ponysay`. - -#### Gentoo Linux -There is a package for Gentoo, to make installation and keeping it up to date easy. You can find it in [this overlay](/etu/aidstu-overlay). The package is named `games-misc/ponysay`. - -#### Debian GNU/Linux and Ubuntu -The DEB file can be found [here](http://roryholland.co.uk/misc.html#ponysay) and PPA:s can be found [here](https://launchpad.net/~vincent-c/+archive/ppa) and [here](https://launchpad.net/~blazemore/+archive/ponysay). ### Pony fortune on terminal startup diff --git a/dev/dist.sh b/dev/dist.sh deleted file mode 100755 index 3beceda..0000000 --- a/dev/dist.sh +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env bash - -# USAGE: dev/dist.sh ttyponies -# or dev/dist.sh pdfmanual -# or dev/dist.sh tag VERSION [OTHER OPTIONS FOR `git tag`] -# or dev/dist.sh beigepdf - - -ttyponies() -{ - mkdir -p "ttyponies" - for pony in $(ls --color=no "ponies/"); do - if [ ! "$pony" = '.info' ]; then - echo "building ttypony: $pony" - if [ "`readlink "ponies/$pony"`" = '' ]; then - ponysay2ttyponysay < "ponies/$pony" | tty2colourfultty -c 1 > "ttyponies/$pony" - git add "ttyponies/$pony" - else - ln -sf `readlink "ponies/$pony"` "ttyponies/$pony" - git add "ttyponies/$pony" - fi - fi - done - mkdir -p "extrattyponies" - for pony in $(ls --color=no "extraponies/"); do - if [ ! "$pony" = '.info' ]; then - echo "building extrattypony: $pony" - if [ "`readlink "extraponies/$pony"`" = '' ]; then - ponysay2ttyponysay < "extraponies/$pony" | tty2colourfultty -c 1 > "extrattyponies/$pony" - git add "extrattyponies/$pony" - else - ln -sf `readlink "extraponies/$pony"` "extrattyponies/$pony" - git add "extrattyponies/$pony" - fi - fi - done -} - - -pdfmanual() -{ - texi2pdf "manuals/ponysay.texinfo" - for ext in `echo aux cp cps fn ky log pg toc tp vr op ops pgs vrs bak`; do - if [ -f "ponysay.$ext" ]; then - unlink "ponysay.$ext" - fi - done - if [ -d "ponysay.t2d" ]; then - rm -r "ponysay.t2d"; - fi - git add "manuals/ponysay.texinfo" "ponysay.pdf" -} - - -beigepdf() -{ - pdfjam --pagecolor 249,246,240 -o "ponysay+beige.pdf" "ponysay.pdf" -} - - -pdf() -{ - pdfmanual "$@" -} - - -tag() -{ - version=`./setup.py version` - if [ "$version" = 'Ponysay '"$1"' installer' ]; then - git tag -a "$@" && git checkout "$1" && git push -u origin "$1" - else - echo 'Setup script reports. '"$version" - echo 'This is not consistent with desired tag version: '"$1" - echo 'Make sure the version is correct in setup.py and that all change logs are up to date' - fi -} - - -[ "$1" = './dist.sh' ] && cd .. -"$@" diff --git a/dev/spell.sh b/dev/spell.sh deleted file mode 100755 index 9fe617e..0000000 --- a/dev/spell.sh +++ /dev/null @@ -1,42 +0,0 @@ -en="en_GB-ise-w_accents" - - -info() -{ - if [ -f "./manuals/ponysay.texinfo" ]; then - aspell --lang="$en" check "./manuals/ponysay.texinfo" - git add "./manuals/ponysay.texinfo" - elif [ -f "../manuals/ponysay.texinfo" ]; then - aspell --lang="$en" check "../manuals/ponysay.texinfo" - git add "../manuals/ponysay.texinfo" - else - echo "spell.sh: unable to find document: ponysay.texinfo" >&2 - exit -1 - fi -} - - -man() -{ - lang="$1" - langarg="$1" - if [ ! "$lang" = "" ]; then - lang=".$lang" - else - langarg="$en" - fi - - if [ -f "./manuals/manpage${lang}.6" ]; then - aspell --lang="${langarg}" check "./manuals/manpage${lang}.6" - git add "./manuals/manpage${lang}.6" - elif [ -f "../manuals/manpage${lang}.6" ]; then - aspell --lang="${langarg}" check "../manuals/manpage${lang}.6" - git add "../manuals/manpage${lang}.6" - else - echo "spell.sh: unable to find document: manpage${lang}.6" >&2 - exit -1 - fi -} - - -"$@" diff --git a/ponyquotes/doctor.0 b/extraponies/doctor.quotes similarity index 100% rename from ponyquotes/doctor.0 rename to extraponies/doctor.quotes diff --git a/ttyponies/ace.pony b/ponies/ace.ttypony similarity index 100% rename from ttyponies/ace.pony rename to ponies/ace.ttypony diff --git a/ttyponies/airheart.pony b/ponies/airheart.ttypony similarity index 100% rename from ttyponies/airheart.pony rename to ponies/airheart.ttypony diff --git a/ttyponies/allie.pony b/ponies/allie.ttypony similarity index 100% rename from ttyponies/allie.pony rename to ponies/allie.ttypony diff --git a/ttyponies/aloe.pony b/ponies/aloe.ttypony similarity index 100% rename from ttyponies/aloe.pony rename to ponies/aloe.ttypony diff --git a/ttyponies/amethyststar.pony b/ponies/amethyststar.ttypony similarity index 100% rename from ttyponies/amethyststar.pony rename to ponies/amethyststar.ttypony diff --git a/ttyponies/angel.pony b/ponies/angel.ttypony similarity index 100% rename from ttyponies/angel.pony rename to ponies/angel.ttypony diff --git a/ponies/applebloom.quotes b/ponies/applebloom.quotes new file mode 100644 index 0000000..f356526 --- /dev/null +++ b/ponies/applebloom.quotes @@ -0,0 +1,17 @@ +Aren't you gonna stay for brunch? + +But I want it now! + +I am a big pony! + +I'm not a baby, I can take care of myself! + +Likely story. + +Not the cupcakes! Trust me. + +Somepony needs to put this thing out of its misery. + +You're not using power tools, are you? + +Scootaloo! Scoot-Scootaloo! diff --git a/ttyponies/applebloom.pony b/ponies/applebloom.ttypony similarity index 100% rename from ttyponies/applebloom.pony rename to ponies/applebloom.ttypony diff --git a/ttyponies/applebloomdance.pony b/ponies/applebloomdance.ttypony similarity index 100% rename from ttyponies/applebloomdance.pony rename to ponies/applebloomdance.ttypony diff --git a/ttyponies/applebumpkin.pony b/ponies/applebumpkin.ttypony similarity index 100% rename from ttyponies/applebumpkin.pony rename to ponies/applebumpkin.ttypony diff --git a/ttyponies/applecore.pony b/ponies/applecore.ttypony similarity index 100% rename from ttyponies/applecore.pony rename to ponies/applecore.ttypony diff --git a/ttyponies/applefritter.pony b/ponies/applefritter.ttypony similarity index 100% rename from ttyponies/applefritter.pony rename to ponies/applefritter.ttypony diff --git a/ponies/applejack.quotes b/ponies/applejack.quotes new file mode 100644 index 0000000..90082f5 --- /dev/null +++ b/ponies/applejack.quotes @@ -0,0 +1,19 @@ +Don't you use your fancy mathematics to muddy the issue! + +‘Dressed’? Um, beg your pardon, Rarity, but we don't normally wear clothes. + +The same way [Discord] got you to think that cheap rock was a bona fide diamond. + +If you can take this bull by the horns you better be ready for a ride! + +Can't hear you! I'm asleep! *SNORE* + +Don't you use your fancy mathematics to muddle the issue! + +I hate to say I told you so. But I told you so. + +We don't normally wear clothes + +I knew you could do it. + +Who are you calling a baby? diff --git a/ttyponies/applejack.pony b/ponies/applejack.ttypony similarity index 100% rename from ttyponies/applejack.pony rename to ponies/applejack.ttypony diff --git a/ttyponies/applejackscarecrow.pony b/ponies/applejackscarecrow.ttypony similarity index 100% rename from ttyponies/applejackscarecrow.pony rename to ponies/applejackscarecrow.ttypony diff --git a/ttyponies/archer.pony b/ponies/archer.ttypony similarity index 100% rename from ttyponies/archer.pony rename to ponies/archer.ttypony diff --git a/ttyponies/basil.pony b/ponies/basil.ttypony similarity index 100% rename from ttyponies/basil.pony rename to ponies/basil.ttypony diff --git a/ttyponies/bastionyorsets.pony b/ponies/bastionyorsets.ttypony similarity index 100% rename from ttyponies/bastionyorsets.pony rename to ponies/bastionyorsets.ttypony diff --git a/ttyponies/berrypinch.pony b/ponies/berrypinch.ttypony similarity index 100% rename from ttyponies/berrypinch.pony rename to ponies/berrypinch.ttypony diff --git a/ttyponies/berrypunch.pony b/ponies/berrypunch.ttypony similarity index 100% rename from ttyponies/berrypunch.pony rename to ponies/berrypunch.ttypony diff --git a/ponies/bigmac.quotes b/ponies/bigmac.quotes new file mode 100644 index 0000000..118e677 --- /dev/null +++ b/ponies/bigmac.quotes @@ -0,0 +1,9 @@ +Ayup. + +Nope. + +Biting off more than you can chew is just what I'm afraid of. + +One pony plus hundreds of appletrees just doesn't add up. + +Too big for you to handle on your own. diff --git a/ttyponies/bigmac.pony b/ponies/bigmac.ttypony similarity index 100% rename from ttyponies/bigmac.pony rename to ponies/bigmac.ttypony diff --git a/ttyponies/blaze.pony b/ponies/blaze.ttypony similarity index 100% rename from ttyponies/blaze.pony rename to ponies/blaze.ttypony diff --git a/ttyponies/blinkie.pony b/ponies/blinkie.ttypony similarity index 100% rename from ttyponies/blinkie.pony rename to ponies/blinkie.ttypony diff --git a/ttyponies/blossomforth.pony b/ponies/blossomforth.ttypony similarity index 100% rename from ttyponies/blossomforth.pony rename to ponies/blossomforth.ttypony diff --git a/ttyponies/blueberry.pony b/ponies/blueberry.ttypony similarity index 100% rename from ttyponies/blueberry.pony rename to ponies/blueberry.ttypony diff --git a/ttyponies/blueberrycake.pony b/ponies/blueberrycake.ttypony similarity index 100% rename from ttyponies/blueberrycake.pony rename to ponies/blueberrycake.ttypony diff --git a/ttyponies/blueblood.pony b/ponies/blueblood.ttypony similarity index 100% rename from ttyponies/blueblood.pony rename to ponies/blueblood.ttypony diff --git a/ttyponies/blueharvest.pony b/ponies/blueharvest.ttypony similarity index 100% rename from ttyponies/blueharvest.pony rename to ponies/blueharvest.ttypony diff --git a/ttyponies/blues.pony b/ponies/blues.ttypony similarity index 100% rename from ttyponies/blues.pony rename to ponies/blues.ttypony diff --git a/ponyquotes/bonbon.0 b/ponies/bonbon.quotes similarity index 64% rename from ponyquotes/bonbon.0 rename to ponies/bonbon.quotes index 839902e..a5581c8 100644 --- a/ponyquotes/bonbon.0 +++ b/ponies/bonbon.quotes @@ -1 +1,3 @@ Is Fluttershy still here? We heard Fluttershy was here! + +I didn't put those in my bag. diff --git a/ttyponies/bonbon.pony b/ponies/bonbon.ttypony similarity index 100% rename from ttyponies/bonbon.pony rename to ponies/bonbon.ttypony diff --git a/ttyponies/bonbonlyra.pony b/ponies/bonbonlyra.ttypony similarity index 100% rename from ttyponies/bonbonlyra.pony rename to ponies/bonbonlyra.ttypony diff --git a/ttyponies/bonbonstand.pony b/ponies/bonbonstand.ttypony similarity index 100% rename from ttyponies/bonbonstand.pony rename to ponies/bonbonstand.ttypony diff --git a/ttyponies/bonvoyage.pony b/ponies/bonvoyage.ttypony similarity index 100% rename from ttyponies/bonvoyage.pony rename to ponies/bonvoyage.ttypony diff --git a/ttyponies/boxxy.pony b/ponies/boxxy.ttypony similarity index 100% rename from ttyponies/boxxy.pony rename to ponies/boxxy.ttypony diff --git a/ponies/braeburn.quotes b/ponies/braeburn.quotes new file mode 100644 index 0000000..7cd50b8 --- /dev/null +++ b/ponies/braeburn.quotes @@ -0,0 +1,5 @@ +Shame on you! + +'Taint fair! + +Welcome to Appleoosa! diff --git a/ttyponies/braeburn.pony b/ponies/braeburn.ttypony similarity index 100% rename from ttyponies/braeburn.pony rename to ponies/braeburn.ttypony diff --git a/ttyponies/cadance.pony b/ponies/cadance.ttypony similarity index 100% rename from ttyponies/cadance.pony rename to ponies/cadance.ttypony diff --git a/ttyponies/caesar.pony b/ponies/caesar.ttypony similarity index 100% rename from ttyponies/caesar.pony rename to ponies/caesar.ttypony diff --git a/ttyponies/candylicious.pony b/ponies/candylicious.ttypony similarity index 100% rename from ttyponies/candylicious.pony rename to ponies/candylicious.ttypony diff --git a/ttyponies/candymane.pony b/ponies/candymane.ttypony similarity index 100% rename from ttyponies/candymane.pony rename to ponies/candymane.ttypony diff --git a/ttyponies/caramel.pony b/ponies/caramel.ttypony similarity index 100% rename from ttyponies/caramel.pony rename to ponies/caramel.ttypony diff --git a/ttyponies/carecake.pony b/ponies/carecake.ttypony similarity index 100% rename from ttyponies/carecake.pony rename to ponies/carecake.ttypony diff --git a/ponyquotes/carrot.1 b/ponies/carrot.quotes similarity index 50% rename from ponyquotes/carrot.1 rename to ponies/carrot.quotes index 5b907f0..df13f8e 100644 --- a/ponyquotes/carrot.1 +++ b/ponies/carrot.quotes @@ -1 +1,3 @@ +Welcome, Princess Celest! + We couldn't fit it all in. diff --git a/ttyponies/carrot.pony b/ponies/carrot.ttypony similarity index 100% rename from ttyponies/carrot.pony rename to ponies/carrot.ttypony diff --git a/ttyponies/carrottop.pony b/ponies/carrottop.ttypony similarity index 100% rename from ttyponies/carrottop.pony rename to ponies/carrottop.ttypony diff --git a/ponyquotes/celestia.0 b/ponies/celestia.quotes similarity index 74% rename from ponyquotes/celestia.0 rename to ponies/celestia.quotes index 20ae8ff..f4c2d2c 100644 --- a/ponyquotes/celestia.0 +++ b/ponies/celestia.quotes @@ -3,3 +3,11 @@ up to him, he ruled Equestria in an eternal state of unrest, and unhappiness. Luna and I saw how miserable life was for Earth ponies, pegasi, and unicorns alike. So after discovering the Elements of Harmony, we combined our power and rose up against him, turning him to stone! + +Gotcha! + +These creatures are adorable! + +I want you right by my side the entire evening. + +Will you accept my friendship? diff --git a/ttyponies/celestia.pony b/ponies/celestia.ttypony similarity index 100% rename from ttyponies/celestia.pony rename to ponies/celestia.ttypony diff --git a/ttyponies/celestiasmall.pony b/ponies/celestiasmall.ttypony similarity index 100% rename from ttyponies/celestiasmall.pony rename to ponies/celestiasmall.ttypony diff --git a/ttyponies/cerberus.pony b/ponies/cerberus.ttypony similarity index 100% rename from ttyponies/cerberus.pony rename to ponies/cerberus.ttypony diff --git a/ttyponies/changeling.pony b/ponies/changeling.ttypony similarity index 100% rename from ttyponies/changeling.pony rename to ponies/changeling.ttypony diff --git a/ttyponies/changelingqueen.pony b/ponies/changelingqueen.ttypony similarity index 100% rename from ttyponies/changelingqueen.pony rename to ponies/changelingqueen.ttypony diff --git a/ponyquotes/cheerilee.0 b/ponies/cheerilee.quotes similarity index 56% rename from ponyquotes/cheerilee.0 rename to ponies/cheerilee.quotes index 48be0dc..ed6d146 100644 --- a/ponyquotes/cheerilee.0 +++ b/ponies/cheerilee.quotes @@ -1 +1,3 @@ Honestly, that's how everypony was wearing their mane back then. + +Everypony should get fun gifts on their birthday. diff --git a/ttyponies/cheerilee.pony b/ponies/cheerilee.ttypony similarity index 100% rename from ttyponies/cheerilee.pony rename to ponies/cheerilee.ttypony diff --git a/ttyponies/cheerilee80.pony b/ponies/cheerilee80.ttypony similarity index 100% rename from ttyponies/cheerilee80.pony rename to ponies/cheerilee80.ttypony diff --git a/ttyponies/cherryberry.pony b/ponies/cherryberry.ttypony similarity index 100% rename from ttyponies/cherryberry.pony rename to ponies/cherryberry.ttypony diff --git a/ttyponies/cherrycola.pony b/ponies/cherrycola.ttypony similarity index 100% rename from ttyponies/cherrycola.pony rename to ponies/cherrycola.ttypony diff --git a/ponyquotes/chrysalis.0 b/ponies/chrysalis.quotes similarity index 99% rename from ponyquotes/chrysalis.0 rename to ponies/chrysalis.quotes index fb09aa6..1b24bb5 100644 --- a/ponyquotes/chrysalis.0 +++ b/ponies/chrysalis.quotes @@ -3,3 +3,4 @@ The kind of day I've dreamed since I was small Everypony I'll soon control Every Stallion, mare and foal Who says a girl can't really have it all? + diff --git a/ttyponies/chrysalis.pony b/ponies/chrysalis.ttypony similarity index 100% rename from ttyponies/chrysalis.pony rename to ponies/chrysalis.ttypony diff --git a/ttyponies/clockwork.pony b/ponies/clockwork.ttypony similarity index 100% rename from ttyponies/clockwork.pony rename to ponies/clockwork.ttypony diff --git a/ttyponies/cloudkicker.pony b/ponies/cloudkicker.ttypony similarity index 100% rename from ttyponies/cloudkicker.pony rename to ponies/cloudkicker.ttypony diff --git a/ttyponies/clyde.pony b/ponies/clyde.ttypony similarity index 100% rename from ttyponies/clyde.pony rename to ponies/clyde.ttypony diff --git a/ttyponies/colgate.pony b/ponies/colgate.ttypony similarity index 100% rename from ttyponies/colgate.pony rename to ponies/colgate.ttypony diff --git a/ttyponies/colton.pony b/ponies/colton.ttypony similarity index 100% rename from ttyponies/colton.pony rename to ponies/colton.ttypony diff --git a/ttyponies/cottoncloudy.pony b/ponies/cottoncloudy.ttypony similarity index 100% rename from ttyponies/cottoncloudy.pony rename to ponies/cottoncloudy.ttypony diff --git a/ttyponies/cow.pony b/ponies/cow.ttypony similarity index 100% rename from ttyponies/cow.pony rename to ponies/cow.ttypony diff --git a/ttyponies/crackle.pony b/ponies/crackle.ttypony similarity index 100% rename from ttyponies/crackle.pony rename to ponies/crackle.ttypony diff --git a/ttyponies/craftycrate.pony b/ponies/craftycrate.ttypony similarity index 100% rename from ttyponies/craftycrate.pony rename to ponies/craftycrate.ttypony diff --git a/ttyponies/cupcake.pony b/ponies/cupcake.ttypony similarity index 100% rename from ttyponies/cupcake.pony rename to ponies/cupcake.ttypony diff --git a/ttyponies/cutiemarkcrusaders.pony b/ponies/cutiemarkcrusaders.ttypony similarity index 100% rename from ttyponies/cutiemarkcrusaders.pony rename to ponies/cutiemarkcrusaders.ttypony diff --git a/ttyponies/daisy.pony b/ponies/daisy.ttypony similarity index 100% rename from ttyponies/daisy.pony rename to ponies/daisy.ttypony diff --git a/ttyponies/daringdo.pony b/ponies/daringdo.ttypony similarity index 100% rename from ttyponies/daringdo.pony rename to ponies/daringdo.ttypony diff --git a/ttyponies/davenport.pony b/ponies/davenport.ttypony similarity index 100% rename from ttyponies/davenport.pony rename to ponies/davenport.ttypony diff --git a/ponies/derpy.quotes b/ponies/derpy.quotes new file mode 100644 index 0000000..6db4969 --- /dev/null +++ b/ponies/derpy.quotes @@ -0,0 +1,9 @@ +Muffin... + +I don't know what went wrong! + +You okay Rainbow Dash? Anything I can do to help? + +I just don't know what went wrong! + +Are you okey Applejack, anything I can do to help? diff --git a/ttyponies/derpy.pony b/ponies/derpy.ttypony similarity index 100% rename from ttyponies/derpy.pony rename to ponies/derpy.ttypony diff --git a/ttyponies/derpybags.pony b/ponies/derpybags.ttypony similarity index 100% rename from ttyponies/derpybags.pony rename to ponies/derpybags.ttypony diff --git a/ttyponies/derpycloud.pony b/ponies/derpycloud.ttypony similarity index 100% rename from ttyponies/derpycloud.pony rename to ponies/derpycloud.ttypony diff --git a/ttyponies/derpysad.pony b/ponies/derpysad.ttypony similarity index 100% rename from ttyponies/derpysad.pony rename to ponies/derpysad.ttypony diff --git a/ttyponies/derpysit.pony b/ponies/derpysit.ttypony similarity index 100% rename from ttyponies/derpysit.pony rename to ponies/derpysit.ttypony diff --git a/ttyponies/derpystand.pony b/ponies/derpystand.ttypony similarity index 100% rename from ttyponies/derpystand.pony rename to ponies/derpystand.ttypony diff --git a/ttyponies/derpystandwing.pony b/ponies/derpystandwing.ttypony similarity index 100% rename from ttyponies/derpystandwing.pony rename to ponies/derpystandwing.ttypony diff --git a/ttyponies/diamondmint.pony b/ponies/diamondmint.ttypony similarity index 100% rename from ttyponies/diamondmint.pony rename to ponies/diamondmint.ttypony diff --git a/ponyquotes/diamondtiara.0 b/ponies/diamondtiara.quotes similarity index 100% rename from ponyquotes/diamondtiara.0 rename to ponies/diamondtiara.quotes diff --git a/ttyponies/diamondtiara.pony b/ponies/diamondtiara.ttypony similarity index 100% rename from ttyponies/diamondtiara.pony rename to ponies/diamondtiara.ttypony diff --git a/ttyponies/dinky.pony b/ponies/dinky.ttypony similarity index 100% rename from ttyponies/dinky.pony rename to ponies/dinky.ttypony diff --git a/ponyquotes/discord.0 b/ponies/discord.quotes similarity index 100% rename from ponyquotes/discord.0 rename to ponies/discord.quotes diff --git a/ttyponies/discord.pony b/ponies/discord.ttypony similarity index 100% rename from ttyponies/discord.pony rename to ponies/discord.ttypony diff --git a/ttyponies/discordamused.pony b/ponies/discordamused.ttypony similarity index 100% rename from ttyponies/discordamused.pony rename to ponies/discordamused.ttypony diff --git a/ttyponies/discordpuppetmaster.pony b/ponies/discordpuppetmaster.ttypony similarity index 100% rename from ttyponies/discordpuppetmaster.pony rename to ponies/discordpuppetmaster.ttypony diff --git a/ttyponies/djpon-3.pony b/ponies/djpon-3.ttypony similarity index 100% rename from ttyponies/djpon-3.pony rename to ponies/djpon-3.ttypony diff --git a/ttyponies/drhooves.pony b/ponies/drhooves.ttypony similarity index 100% rename from ttyponies/drhooves.pony rename to ponies/drhooves.ttypony diff --git a/ttyponies/elsie.pony b/ponies/elsie.ttypony similarity index 100% rename from ttyponies/elsie.pony rename to ponies/elsie.ttypony diff --git a/ttyponies/epona.pony b/ponies/epona.ttypony similarity index 100% rename from ttyponies/epona.pony rename to ponies/epona.ttypony diff --git a/ponyquotes/fancypants.0 b/ponies/fancypants.quotes similarity index 100% rename from ponyquotes/fancypants.0 rename to ponies/fancypants.quotes diff --git a/ttyponies/fancypants.pony b/ponies/fancypants.ttypony similarity index 100% rename from ttyponies/fancypants.pony rename to ponies/fancypants.ttypony diff --git a/ttyponies/fido.pony b/ponies/fido.ttypony similarity index 100% rename from ttyponies/fido.pony rename to ponies/fido.ttypony diff --git a/ttyponies/fillistia.pony b/ponies/fillistia.ttypony similarity index 100% rename from ttyponies/fillistia.pony rename to ponies/fillistia.ttypony diff --git a/ttyponies/fillycadance.pony b/ponies/fillycadance.ttypony similarity index 100% rename from ttyponies/fillycadance.pony rename to ponies/fillycadance.ttypony diff --git a/ttyponies/fillycelestia.pony b/ponies/fillycelestia.ttypony similarity index 100% rename from ttyponies/fillycelestia.pony rename to ponies/fillycelestia.ttypony diff --git a/ttyponies/fillydash.pony b/ponies/fillydash.ttypony similarity index 100% rename from ttyponies/fillydash.pony rename to ponies/fillydash.ttypony diff --git a/ttyponies/fillydashfly.pony b/ponies/fillydashfly.ttypony similarity index 100% rename from ttyponies/fillydashfly.pony rename to ponies/fillydashfly.ttypony diff --git a/ttyponies/fillyjack.pony b/ponies/fillyjack.ttypony similarity index 100% rename from ttyponies/fillyjack.pony rename to ponies/fillyjack.ttypony diff --git a/ttyponies/fillyjacktravel.pony b/ponies/fillyjacktravel.ttypony similarity index 100% rename from ttyponies/fillyjacktravel.pony rename to ponies/fillyjacktravel.ttypony diff --git a/ttyponies/fillypinkie.pony b/ponies/fillypinkie.ttypony similarity index 100% rename from ttyponies/fillypinkie.pony rename to ponies/fillypinkie.ttypony diff --git a/ttyponies/fillypinkiecurly.pony b/ponies/fillypinkiecurly.ttypony similarity index 100% rename from ttyponies/fillypinkiecurly.pony rename to ponies/fillypinkiecurly.ttypony diff --git a/ttyponies/fillyrarity.pony b/ponies/fillyrarity.ttypony similarity index 100% rename from ttyponies/fillyrarity.pony rename to ponies/fillyrarity.ttypony diff --git a/ttyponies/fillyshy.pony b/ponies/fillyshy.ttypony similarity index 100% rename from ttyponies/fillyshy.pony rename to ponies/fillyshy.ttypony diff --git a/ttyponies/fillytwilight.pony b/ponies/fillytwilight.ttypony similarity index 100% rename from ttyponies/fillytwilight.pony rename to ponies/fillytwilight.ttypony diff --git a/ttyponies/filthyrich.pony b/ponies/filthyrich.ttypony similarity index 100% rename from ttyponies/filthyrich.pony rename to ponies/filthyrich.ttypony diff --git a/ttyponies/firestreak.pony b/ponies/firestreak.ttypony similarity index 100% rename from ttyponies/firestreak.pony rename to ponies/firestreak.ttypony diff --git a/ttyponies/flam.pony b/ponies/flam.ttypony similarity index 100% rename from ttyponies/flam.pony rename to ponies/flam.ttypony diff --git a/ttyponies/fleurdelis.pony b/ponies/fleurdelis.ttypony similarity index 100% rename from ttyponies/fleurdelis.pony rename to ponies/fleurdelis.ttypony diff --git a/ttyponies/fleurdelishair.pony b/ponies/fleurdelishair.ttypony similarity index 100% rename from ttyponies/fleurdelishair.pony rename to ponies/fleurdelishair.ttypony diff --git a/ttyponies/fleurdelislay.pony b/ponies/fleurdelislay.ttypony similarity index 100% rename from ttyponies/fleurdelislay.pony rename to ponies/fleurdelislay.ttypony diff --git a/ttyponies/flim.pony b/ponies/flim.ttypony similarity index 100% rename from ttyponies/flim.pony rename to ponies/flim.ttypony diff --git a/ttyponies/flowertrio.pony b/ponies/flowertrio.ttypony similarity index 100% rename from ttyponies/flowertrio.pony rename to ponies/flowertrio.ttypony diff --git a/ponies/fluttershy.quotes b/ponies/fluttershy.quotes new file mode 100644 index 0000000..ba02bb3 --- /dev/null +++ b/ponies/fluttershy.quotes @@ -0,0 +1,87 @@ +Um, Pinkie Pie ... about this party for Gilda; +do you really think it's a good idea? I mean... + +I'm a year older than you. + +Uh, panic? + +The armscye's tight, the middy collar doesn't go with the shawl lapel, +the hems are clearly machine-stitched, the pleats are uneven, the +fabric looks like toile, you used a backstitch here when it clearly +called for a topstitch, or maybe a traditional blanket stitch, and the +overall design is reminiscent of prêt-à-porter and not true French +haute couture... + +But ... uh ... you know ... um ... whatever you want to do is fine... + +Well ... It's a game about who can be quiet the longest. Sound fun? +I'm the world champ, you know. I betcha can't beat me! + +~Squee~ + +I'll catch you yet, my pretties. Oh yes. As soon as one of you little +birds or monkeys or bears touches this net ... you'll be MINE! MINE! + +A sonic rainboom! She did it! She did it! WOOO! + +Now wait just a minute! Oh, I'm sorry. +I'm trying to be more assertive. Anyhow... +She *is* going to do a sonic rainboom! + +Then show up at the Cloudseum and see for yourself! ... If you're free. + +Hey Twilight, what's soaking wet and clueless? +[⋅⋅⋅] +YOUR FACE! + +Good boy, Angel! Mama's so proud! + +Um ... I'm just wondering if it's okay if I hold +you down against your will for a little bit? + +Yay. + +I can't believe this ... I am so frustrated, I could just scream! + +(Eee!) + +Yes. Because he wasn't a huge, gigantic, terrible, enormous, +teeth-gnashing, sharp scale-having, horn-wearing, smoke-snoring, +could-eat-a-pony-in-one-bite, totally-all-grown-up dragon. + +What is this place, filled with so many wonders? + +Oooh, what a magical place! + +*crazy laugh* + +How dare you! + +I'd like to be a tree. + +I don't wanna talk about it. + +I am so sorry to have scared you, my friends. + +I am the world champ, you know. A bet you can't beat me. + +Yay! + +You're the cutest thing ever! + +You rock, woohoo! + +Yaaay ... too loud? + +(squeak) + +You're ... GOING TO LOVE ME!!! + +I can't! + +That big ... dumb ... MEANIE!!!! + +Now, Rainbow my dear, I cannot express my delight +It's abundantly clear +That somewhere out here +Is a pet that will suit you just right. diff --git a/ttyponies/fluttershy.pony b/ponies/fluttershy.ttypony similarity index 100% rename from ttyponies/fluttershy.pony rename to ponies/fluttershy.ttypony diff --git a/ttyponies/fluttershygala.pony b/ponies/fluttershygala.ttypony similarity index 100% rename from ttyponies/fluttershygala.pony rename to ponies/fluttershygala.ttypony diff --git a/ttyponies/fluttershyshy.pony b/ponies/fluttershyshy.ttypony similarity index 100% rename from ttyponies/fluttershyshy.pony rename to ponies/fluttershyshy.ttypony diff --git a/ttyponies/fluttershystare.pony b/ponies/fluttershystare.ttypony similarity index 100% rename from ttyponies/fluttershystare.pony rename to ponies/fluttershystare.ttypony diff --git a/ttyponies/forestspirit.pony b/ponies/forestspirit.ttypony similarity index 100% rename from ttyponies/forestspirit.pony rename to ponies/forestspirit.ttypony diff --git a/ttyponies/frederickhorseshoepin.pony b/ponies/frederickhorseshoepin.ttypony similarity index 100% rename from ttyponies/frederickhorseshoepin.pony rename to ponies/frederickhorseshoepin.ttypony diff --git a/ttyponies/georgewashingtony.pony b/ponies/georgewashingtony.ttypony similarity index 100% rename from ttyponies/georgewashingtony.pony rename to ponies/georgewashingtony.ttypony diff --git a/ponies/gilda.quotes b/ponies/gilda.quotes new file mode 100644 index 0000000..4dad621 --- /dev/null +++ b/ponies/gilda.quotes @@ -0,0 +1,15 @@ +That's me! Half eagle, half lion, and all awesome! + +Don't you know how to take GET LOST for an answer? + +I know what you're up to! + +When you decide not be lame anymore, give me a call! + +You're such a flip-flop! Cool one minute and lame the next. + +*sigh* Only for you, Dash. +Junior Speedsters are our lives +Sky-bound soars and daring dives +Junior Speedsters; it's our quest +To someday be the very best diff --git a/ttyponies/gilda.pony b/ponies/gilda.ttypony similarity index 100% rename from ttyponies/gilda.pony rename to ponies/gilda.ttypony diff --git a/ttyponies/gildastand.pony b/ponies/gildastand.ttypony similarity index 100% rename from ttyponies/gildastand.pony rename to ponies/gildastand.ttypony diff --git a/ttyponies/gingergold.pony b/ponies/gingergold.ttypony similarity index 100% rename from ttyponies/gingergold.pony rename to ponies/gingergold.ttypony diff --git a/ttyponies/goldenharvest.pony b/ponies/goldenharvest.ttypony similarity index 100% rename from ttyponies/goldenharvest.pony rename to ponies/goldenharvest.ttypony diff --git a/ponyquotes/granny.0 b/ponies/granny.quotes similarity index 100% rename from ponyquotes/granny.0 rename to ponies/granny.quotes diff --git a/ttyponies/granny.pony b/ponies/granny.ttypony similarity index 100% rename from ttyponies/granny.pony rename to ponies/granny.ttypony diff --git a/ttyponies/grannychair.pony b/ponies/grannychair.ttypony similarity index 100% rename from ttyponies/grannychair.pony rename to ponies/grannychair.ttypony diff --git a/ttyponies/grannysleep.pony b/ponies/grannysleep.ttypony similarity index 100% rename from ttyponies/grannysleep.pony rename to ponies/grannysleep.ttypony diff --git a/ttyponies/gummy.pony b/ponies/gummy.ttypony similarity index 100% rename from ttyponies/gummy.pony rename to ponies/gummy.ttypony diff --git a/ttyponies/gustavelegrand.pony b/ponies/gustavelegrand.ttypony similarity index 100% rename from ttyponies/gustavelegrand.pony rename to ponies/gustavelegrand.ttypony diff --git a/ttyponies/harpass.pony b/ponies/harpass.ttypony similarity index 100% rename from ttyponies/harpass.pony rename to ponies/harpass.ttypony diff --git a/ttyponies/hayfever.pony b/ponies/hayfever.ttypony similarity index 100% rename from ttyponies/hayfever.pony rename to ponies/hayfever.ttypony diff --git a/ttyponies/heartstrings.pony b/ponies/heartstrings.ttypony similarity index 100% rename from ttyponies/heartstrings.pony rename to ponies/heartstrings.ttypony diff --git a/ttyponies/highscore.pony b/ponies/highscore.ttypony similarity index 100% rename from ttyponies/highscore.pony rename to ponies/highscore.ttypony diff --git a/ttyponies/hoity.pony b/ponies/hoity.ttypony similarity index 100% rename from ttyponies/hoity.pony rename to ponies/hoity.ttypony diff --git a/ttyponies/hollydash.pony b/ponies/hollydash.ttypony similarity index 100% rename from ttyponies/hollydash.pony rename to ponies/hollydash.ttypony diff --git a/ttyponies/horsemd.pony b/ponies/horsemd.ttypony similarity index 100% rename from ttyponies/horsemd.pony rename to ponies/horsemd.ttypony diff --git a/ttyponies/horsepower.pony b/ponies/horsepower.ttypony similarity index 100% rename from ttyponies/horsepower.pony rename to ponies/horsepower.ttypony diff --git a/ttyponies/horte.pony b/ponies/horte.ttypony similarity index 100% rename from ttyponies/horte.pony rename to ponies/horte.ttypony diff --git a/ttyponies/hughjelly.pony b/ponies/hughjelly.ttypony similarity index 100% rename from ttyponies/hughjelly.pony rename to ponies/hughjelly.ttypony diff --git a/ttyponies/inky.pony b/ponies/inky.ttypony similarity index 100% rename from ttyponies/inky.pony rename to ponies/inky.ttypony diff --git a/ponies/ironwill.quotes b/ponies/ironwill.quotes new file mode 100644 index 0000000..bb0e381 --- /dev/null +++ b/ponies/ironwill.quotes @@ -0,0 +1,15 @@ +Never apologise, when you can criticise. + +Treat me like a push-over, and you will get the once-over. + +When somepony tries to block, show them that you rock. + +Maybes are for babies. + +You laugh at me? I wrath at you! + +Cut in line? I will take what is mine. + +You apologise, I penalise. + +You make me lose, I blow my fuse. diff --git a/ttyponies/ironwillwalk.pony b/ponies/ironwillwalk.ttypony similarity index 100% rename from ttyponies/ironwillwalk.pony rename to ponies/ironwillwalk.ttypony diff --git a/ttyponies/jeffletrotski.pony b/ponies/jeffletrotski.ttypony similarity index 100% rename from ttyponies/jeffletrotski.pony rename to ponies/jeffletrotski.ttypony diff --git a/ttyponies/jesuspezuna.pony b/ponies/jesuspezuna.ttypony similarity index 100% rename from ttyponies/jesuspezuna.pony rename to ponies/jesuspezuna.ttypony diff --git a/ttyponies/joe.pony b/ponies/joe.ttypony similarity index 100% rename from ttyponies/joe.pony rename to ponies/joe.ttypony diff --git a/ttyponies/joetuxedo.pony b/ponies/joetuxedo.ttypony similarity index 100% rename from ttyponies/joetuxedo.pony rename to ponies/joetuxedo.ttypony diff --git a/ttyponies/junebug.pony b/ponies/junebug.ttypony similarity index 100% rename from ttyponies/junebug.pony rename to ponies/junebug.ttypony diff --git a/ttyponies/laflour.pony b/ponies/laflour.ttypony similarity index 100% rename from ttyponies/laflour.pony rename to ponies/laflour.ttypony diff --git a/ttyponies/lemonhearts.pony b/ponies/lemonhearts.ttypony similarity index 100% rename from ttyponies/lemonhearts.pony rename to ponies/lemonhearts.ttypony diff --git a/ttyponies/lightning.pony b/ponies/lightning.ttypony similarity index 100% rename from ttyponies/lightning.pony rename to ponies/lightning.ttypony diff --git a/ponyquotes/lily.1 b/ponies/lily.quotes similarity index 62% rename from ponyquotes/lily.1 rename to ponies/lily.quotes index eec6d6b..d0a381f 100644 --- a/ponyquotes/lily.1 +++ b/ponies/lily.quotes @@ -1 +1,3 @@ +The horror, the horror! + This is awful! Horribly, terribly awful! diff --git a/ttyponies/lily.pony b/ponies/lily.ttypony similarity index 100% rename from ttyponies/lily.pony rename to ponies/lily.ttypony diff --git a/ttyponies/lintsalot.pony b/ponies/lintsalot.ttypony similarity index 100% rename from ttyponies/lintsalot.pony rename to ponies/lintsalot.ttypony diff --git a/ttyponies/lotus.pony b/ponies/lotus.ttypony similarity index 100% rename from ttyponies/lotus.pony rename to ponies/lotus.ttypony diff --git a/ttyponies/lotusbloosom.pony b/ponies/lotusbloosom.ttypony similarity index 100% rename from ttyponies/lotusbloosom.pony rename to ponies/lotusbloosom.ttypony diff --git a/ttyponies/lulamoon.pony b/ponies/lulamoon.ttypony similarity index 100% rename from ttyponies/lulamoon.pony rename to ponies/lulamoon.ttypony diff --git a/ponies/luna.quotes b/ponies/luna.quotes new file mode 100644 index 0000000..ea95dc6 --- /dev/null +++ b/ponies/luna.quotes @@ -0,0 +1,13 @@ +Ha, ha! The fun has been doubled! + +I missed you so much! + +I'm so sorry! + +TOGETHER, WE SHALL TURN THIS DREADFUL NIGHT INTO A GLORIOUS FEEEEAAAAST! + +OH MOST WON... I mean, oh most wonderful of nights! + +WE COULD NOT BE HAPPIER! IS THAT NOT CLEAR? + +THIS IS THE TRADITIONAL ROYAL CANTERLOT VOICE! diff --git a/ttyponies/luna.pony b/ponies/luna.ttypony similarity index 100% rename from ttyponies/luna.pony rename to ponies/luna.ttypony diff --git a/ttyponies/lunafly.pony b/ponies/lunafly.ttypony similarity index 100% rename from ttyponies/lunafly.pony rename to ponies/lunafly.ttypony diff --git a/ponyquotes/lyra.0 b/ponies/lyra.quotes similarity index 100% rename from ponyquotes/lyra.0 rename to ponies/lyra.quotes diff --git a/ttyponies/lyra.pony b/ponies/lyra.ttypony similarity index 100% rename from ttyponies/lyra.pony rename to ponies/lyra.ttypony diff --git a/ttyponies/lyrabonbon.pony b/ponies/lyrabonbon.ttypony similarity index 100% rename from ttyponies/lyrabonbon.pony rename to ponies/lyrabonbon.ttypony diff --git a/ttyponies/lyrasit.pony b/ponies/lyrasit.ttypony similarity index 100% rename from ttyponies/lyrasit.pony rename to ponies/lyrasit.ttypony diff --git a/ttyponies/magnum.pony b/ponies/magnum.ttypony similarity index 100% rename from ttyponies/magnum.pony rename to ponies/magnum.ttypony diff --git a/ttyponies/manticore.pony b/ponies/manticore.ttypony similarity index 100% rename from ttyponies/manticore.pony rename to ponies/manticore.ttypony diff --git a/ttyponies/maredowellfly.pony b/ponies/maredowellfly.ttypony similarity index 100% rename from ttyponies/maredowellfly.pony rename to ponies/maredowellfly.ttypony diff --git a/ttyponies/maredowellgallop.pony b/ponies/maredowellgallop.ttypony similarity index 100% rename from ttyponies/maredowellgallop.pony rename to ponies/maredowellgallop.ttypony diff --git a/ttyponies/master.pony b/ponies/master.ttypony similarity index 100% rename from ttyponies/master.pony rename to ponies/master.ttypony diff --git a/ttyponies/mayor.pony b/ponies/mayor.ttypony similarity index 100% rename from ttyponies/mayor.pony rename to ponies/mayor.ttypony diff --git a/ttyponies/meadowsong.pony b/ponies/meadowsong.ttypony similarity index 100% rename from ttyponies/meadowsong.pony rename to ponies/meadowsong.ttypony diff --git a/ttyponies/meliot.pony b/ponies/meliot.ttypony similarity index 100% rename from ttyponies/meliot.pony rename to ponies/meliot.ttypony diff --git a/ttyponies/milkyway.pony b/ponies/milkyway.ttypony similarity index 100% rename from ttyponies/milkyway.pony rename to ponies/milkyway.ttypony diff --git a/ttyponies/minuette.pony b/ponies/minuette.ttypony similarity index 100% rename from ttyponies/minuette.pony rename to ponies/minuette.ttypony diff --git a/ttyponies/mjolna.pony b/ponies/mjolna.ttypony similarity index 100% rename from ttyponies/mjolna.pony rename to ponies/mjolna.ttypony diff --git a/ttyponies/mrsparkle.pony b/ponies/mrsparkle.ttypony similarity index 100% rename from ttyponies/mrsparkle.pony rename to ponies/mrsparkle.ttypony diff --git a/ttyponies/mrssparkle.pony b/ponies/mrssparkle.ttypony similarity index 100% rename from ttyponies/mrssparkle.pony rename to ponies/mrssparkle.ttypony diff --git a/ttyponies/nightlight.pony b/ponies/nightlight.ttypony similarity index 100% rename from ttyponies/nightlight.pony rename to ponies/nightlight.ttypony diff --git a/ponies/nightmare.quotes b/ponies/nightmare.quotes new file mode 100644 index 0000000..dc712a0 --- /dev/null +++ b/ponies/nightmare.quotes @@ -0,0 +1,11 @@ +Don't you know who I am? + +Oh, my beloved subjects! + +The night will last FOREVER! Muhahaha! + +You little foal! + +You're kidding. You're kidding, right? + +Why, am I not royal enough for you? Don't you know who I am? diff --git a/ttyponies/nightmare.pony b/ponies/nightmare.ttypony similarity index 100% rename from ttyponies/nightmare.pony rename to ponies/nightmare.ttypony diff --git a/ttyponies/noi.pony b/ponies/noi.ttypony similarity index 100% rename from ttyponies/noi.pony rename to ponies/noi.ttypony diff --git a/ttyponies/noteworthy.pony b/ponies/noteworthy.ttypony similarity index 100% rename from ttyponies/noteworthy.pony rename to ponies/noteworthy.ttypony diff --git a/ttyponies/octavia.pony b/ponies/octavia.ttypony similarity index 100% rename from ttyponies/octavia.pony rename to ponies/octavia.ttypony diff --git a/ttyponies/oinkoinkoink.pony b/ponies/oinkoinkoink.ttypony similarity index 100% rename from ttyponies/oinkoinkoink.pony rename to ponies/oinkoinkoink.ttypony diff --git a/ttyponies/opal.pony b/ponies/opal.ttypony similarity index 100% rename from ttyponies/opal.pony rename to ponies/opal.ttypony diff --git a/ttyponies/orange.pony b/ponies/orange.ttypony similarity index 100% rename from ttyponies/orange.pony rename to ponies/orange.ttypony diff --git a/ttyponies/owl.pony b/ponies/owl.ttypony similarity index 100% rename from ttyponies/owl.pony rename to ponies/owl.ttypony diff --git a/ttyponies/owlowiscious.pony b/ponies/owlowiscious.ttypony similarity index 100% rename from ttyponies/owlowiscious.pony rename to ponies/owlowiscious.ttypony diff --git a/ttyponies/parasprite.pony b/ponies/parasprite.ttypony similarity index 100% rename from ttyponies/parasprite.pony rename to ponies/parasprite.ttypony diff --git a/ttyponies/pearl.pony b/ponies/pearl.ttypony similarity index 100% rename from ttyponies/pearl.pony rename to ponies/pearl.ttypony diff --git a/ttyponies/peppermoon.pony b/ponies/peppermoon.ttypony similarity index 100% rename from ttyponies/peppermoon.pony rename to ponies/peppermoon.ttypony diff --git a/ttyponies/perry.pony b/ponies/perry.ttypony similarity index 100% rename from ttyponies/perry.pony rename to ponies/perry.ttypony diff --git a/ttyponies/perrypierce.pony b/ponies/perrypierce.ttypony similarity index 100% rename from ttyponies/perrypierce.pony rename to ponies/perrypierce.ttypony diff --git a/ttyponies/persnickety.pony b/ponies/persnickety.ttypony similarity index 100% rename from ttyponies/persnickety.pony rename to ponies/persnickety.ttypony diff --git a/ttyponies/petunia.pony b/ponies/petunia.ttypony similarity index 100% rename from ttyponies/petunia.pony rename to ponies/petunia.ttypony diff --git a/ttyponies/philomena.pony b/ponies/philomena.ttypony similarity index 100% rename from ttyponies/philomena.pony rename to ponies/philomena.ttypony diff --git a/ttyponies/philomenaphoenix.pony b/ponies/philomenaphoenix.ttypony similarity index 100% rename from ttyponies/philomenaphoenix.pony rename to ponies/philomenaphoenix.ttypony diff --git a/ponies/photofinish.quotes b/ponies/photofinish.quotes new file mode 100644 index 0000000..7669800 --- /dev/null +++ b/ponies/photofinish.quotes @@ -0,0 +1,9 @@ +...It is time to make DE MAGICKS!! + +I, Photo Finish... have arrived! + +I only need to point and shoot, and I capture... DE MAGICKS! + +Flootershay! + +Oh, wunderbar! diff --git a/ttyponies/photofinish.pony b/ponies/photofinish.ttypony similarity index 100% rename from ttyponies/photofinish.pony rename to ponies/photofinish.ttypony diff --git a/ttyponies/pictureperfect.pony b/ponies/pictureperfect.ttypony similarity index 100% rename from ttyponies/pictureperfect.pony rename to ponies/pictureperfect.ttypony diff --git a/ttyponies/pigpen.pony b/ponies/pigpen.ttypony similarity index 100% rename from ttyponies/pigpen.pony rename to ponies/pigpen.ttypony diff --git a/ttyponies/pinacolada.pony b/ponies/pinacolada.ttypony similarity index 100% rename from ttyponies/pinacolada.pony rename to ponies/pinacolada.ttypony diff --git a/ttyponies/pinkacopter.pony b/ponies/pinkacopter.ttypony similarity index 100% rename from ttyponies/pinkacopter.pony rename to ponies/pinkacopter.ttypony diff --git a/ttyponies/pinkamina.pony b/ponies/pinkamina.ttypony similarity index 100% rename from ttyponies/pinkamina.pony rename to ponies/pinkamina.ttypony diff --git a/ponies/pinkie.quotes b/ponies/pinkie.quotes new file mode 100644 index 0000000..f6a366f --- /dev/null +++ b/ponies/pinkie.quotes @@ -0,0 +1,76 @@ +Ooh! Ooh! More guessing games! Um... Pokey Smokes! +How about Queen Meanie? No! Black Snooty, Black Snooty! + +Don't you worry your pretty little head about mean old Gilda! +Your Aunty Pinkie Pie's got it all taken care of! + +Too old for free candy?! NEVER! + +I never leave home without my party cannon! + +I'm not giving him cake! I'm ASSAULTING him with cake! + +Hold on to your hooves, I'm about to be BRILLIANT! + +APPLEJACK!!! YOU PINKIE PROMISED!!!! + +Twitchy tail! Twitchy tail!! + +When I was a little filly and the sun was going down~ + +All you have to do is take a cup of flour and add it to the mix~ + +Oh the Grand Galloping Gala is the best place for me~ + +Ugh, a parasprite! + +You've got a real problem all right, and a banjo is the only answer! + +Cross my heart and hope to fly, stick a cupcake in my eye! + +Are you loco in the coco? + +Hay, that's what I said! + +And that's how Equestria was made. + +I never felt joy like that before! + +Oatmeal, are you crazy? + +This calls for extreme measures! Pinkie Pie style! + +This may look like fun, but it's not! + +You really need to get out more. + +I don't need my friends... *Twitch* + +You look like you'd be good at eating cupcakes! + +Thank you for being here today... *Twitch* + +Aha! I knew it! + +My friends don't like my parties and they don't wanna be my friends anymore... + +I know how it goes, all right! + +I'm just glad none of them ponies showed up! + +Oui! Zhat is correct, madame. + +You know what this calls for? +A party! + +She'll become a crazy cat lady! + +Give her time... + +FOREVER!!! + +Secrets and lies! It's all secrets and lies with those ponies! + +Hold on a second! Eternal chaos comes with chocolate rain, guys! Chocolate rain! + +No I'm not, I'm a chicken! BAGAWK! diff --git a/ttyponies/pinkie.pony b/ponies/pinkie.ttypony similarity index 100% rename from ttyponies/pinkie.pony rename to ponies/pinkie.ttypony diff --git a/ttyponies/pinkiebounce.pony b/ponies/pinkiebounce.ttypony similarity index 100% rename from ttyponies/pinkiebounce.pony rename to ponies/pinkiebounce.ttypony diff --git a/ttyponies/pinkiecannon.pony b/ponies/pinkiecannon.ttypony similarity index 100% rename from ttyponies/pinkiecannon.pony rename to ponies/pinkiecannon.ttypony diff --git a/ttyponies/pinkiecannonfront.pony b/ponies/pinkiecannonfront.ttypony similarity index 100% rename from ttyponies/pinkiecannonfront.pony rename to ponies/pinkiecannonfront.ttypony diff --git a/ttyponies/pinkiecannonhappy.pony b/ponies/pinkiecannonhappy.ttypony similarity index 100% rename from ttyponies/pinkiecannonhappy.pony rename to ponies/pinkiecannonhappy.ttypony diff --git a/ttyponies/pinkiechicken.pony b/ponies/pinkiechicken.ttypony similarity index 100% rename from ttyponies/pinkiechicken.pony rename to ponies/pinkiechicken.ttypony diff --git a/ttyponies/pinkiefly.pony b/ponies/pinkiefly.ttypony similarity index 100% rename from ttyponies/pinkiefly.pony rename to ponies/pinkiefly.ttypony diff --git a/ttyponies/pinkiegala.pony b/ponies/pinkiegala.ttypony similarity index 100% rename from ttyponies/pinkiegala.pony rename to ponies/pinkiegala.ttypony diff --git a/ttyponies/pinkiegummy.pony b/ponies/pinkiegummy.ttypony similarity index 100% rename from ttyponies/pinkiegummy.pony rename to ponies/pinkiegummy.ttypony diff --git a/ttyponies/pinkiegummydisguise.pony b/ponies/pinkiegummydisguise.ttypony similarity index 100% rename from ttyponies/pinkiegummydisguise.pony rename to ponies/pinkiegummydisguise.ttypony diff --git a/ttyponies/pinkiehugfluttershy.pony b/ponies/pinkiehugfluttershy.ttypony similarity index 100% rename from ttyponies/pinkiehugfluttershy.pony rename to ponies/pinkiehugfluttershy.ttypony diff --git a/ttyponies/pinkiehugsfluttershy.pony b/ponies/pinkiehugsfluttershy.ttypony similarity index 100% rename from ttyponies/pinkiehugsfluttershy.pony rename to ponies/pinkiehugsfluttershy.ttypony diff --git a/ttyponies/pinkieoink.pony b/ponies/pinkieoink.ttypony similarity index 100% rename from ttyponies/pinkieoink.pony rename to ponies/pinkieoink.ttypony diff --git a/ttyponies/pinkieparade.pony b/ponies/pinkieparade.ttypony similarity index 100% rename from ttyponies/pinkieparade.pony rename to ponies/pinkieparade.ttypony diff --git a/ttyponies/pinkiepartycannon.pony b/ponies/pinkiepartycannon.ttypony similarity index 100% rename from ttyponies/pinkiepartycannon.pony rename to ponies/pinkiepartycannon.ttypony diff --git a/ttyponies/pinkieprincess.pony b/ponies/pinkieprincess.ttypony similarity index 100% rename from ttyponies/pinkieprincess.pony rename to ponies/pinkieprincess.ttypony diff --git a/ttyponies/pinkiesilly.pony b/ponies/pinkiesilly.ttypony similarity index 100% rename from ttyponies/pinkiesilly.pony rename to ponies/pinkiesilly.ttypony diff --git a/ttyponies/pinkietongue.pony b/ponies/pinkietongue.ttypony similarity index 100% rename from ttyponies/pinkietongue.pony rename to ponies/pinkietongue.ttypony diff --git a/ttyponies/pinkieumbrellahat.pony b/ponies/pinkieumbrellahat.ttypony similarity index 100% rename from ttyponies/pinkieumbrellahat.pony rename to ponies/pinkieumbrellahat.ttypony diff --git a/ttyponies/pinkieumbrellahatfear.pony b/ponies/pinkieumbrellahatfear.ttypony similarity index 100% rename from ttyponies/pinkieumbrellahatfear.pony rename to ponies/pinkieumbrellahatfear.ttypony diff --git a/ttyponies/pinkiewhoops.pony b/ponies/pinkiewhoops.ttypony similarity index 100% rename from ttyponies/pinkiewhoops.pony rename to ponies/pinkiewhoops.ttypony diff --git a/ttyponies/pinkiewhoopseat.pony b/ponies/pinkiewhoopseat.ttypony similarity index 100% rename from ttyponies/pinkiewhoopseat.pony rename to ponies/pinkiewhoopseat.ttypony diff --git a/ttyponies/pinkiewhoopsout.pony b/ponies/pinkiewhoopsout.ttypony similarity index 100% rename from ttyponies/pinkiewhoopsout.pony rename to ponies/pinkiewhoopsout.ttypony diff --git a/ponyquotes/pipsqueak.1 b/ponies/pipsqueak.quotes similarity index 55% rename from ponyquotes/pipsqueak.1 rename to ponies/pipsqueak.quotes index 3d2990b..4980c31 100644 --- a/ponyquotes/pipsqueak.1 +++ b/ponies/pipsqueak.quotes @@ -1 +1,5 @@ +Pipsqueak the pirate, at your service + Um... Princess Luna. do you suppose maybe you could come back next year and scare us again? + +It's really fun! Scary, but fun. diff --git a/ttyponies/pipsqueak.pony b/ponies/pipsqueak.ttypony similarity index 100% rename from ttyponies/pipsqueak.pony rename to ponies/pipsqueak.ttypony diff --git a/ttyponies/pokey.pony b/ponies/pokey.ttypony similarity index 100% rename from ttyponies/pokey.pony rename to ponies/pokey.ttypony diff --git a/ttyponies/pokeypierce.pony b/ponies/pokeypierce.ttypony similarity index 100% rename from ttyponies/pokeypierce.pony rename to ponies/pokeypierce.ttypony diff --git a/ttyponies/ponet.pony b/ponies/ponet.ttypony similarity index 100% rename from ttyponies/ponet.pony rename to ponies/ponet.ttypony diff --git a/ttyponies/poppycock.pony b/ponies/poppycock.ttypony similarity index 100% rename from ttyponies/poppycock.pony rename to ponies/poppycock.ttypony diff --git a/ttyponies/powderrouge.pony b/ponies/powderrouge.ttypony similarity index 100% rename from ttyponies/powderrouge.pony rename to ponies/powderrouge.ttypony diff --git a/ttyponies/prettyvision.pony b/ponies/prettyvision.ttypony similarity index 100% rename from ttyponies/prettyvision.pony rename to ponies/prettyvision.ttypony diff --git a/ttyponies/purplehaze.pony b/ponies/purplehaze.ttypony similarity index 100% rename from ttyponies/purplehaze.pony rename to ponies/purplehaze.ttypony diff --git a/ttyponies/quickfix.pony b/ponies/quickfix.ttypony similarity index 100% rename from ttyponies/quickfix.pony rename to ponies/quickfix.ttypony diff --git a/ttyponies/raggedy.pony b/ponies/raggedy.ttypony similarity index 100% rename from ttyponies/raggedy.pony rename to ponies/raggedy.ttypony diff --git a/ponies/rainbow.quotes b/ponies/rainbow.quotes new file mode 100644 index 0000000..dc24f96 --- /dev/null +++ b/ponies/rainbow.quotes @@ -0,0 +1,44 @@ +I could clear the sky in 10 seconds flat! + +Are you a SPY? + +I'm just glad I haven't been replaced by a bucket of turnips. + +You don't wanna know. + +Sure thing, Spike! + +Aww right, Princess! + +NO! NOTHING! In the name of Celestia, just sit there and do nothing! + +Pinkie Pie, you are so random! + +This really is the BEST DAY EVER! + +I am the iron pony! + +I know, it is gonna be so awesome! + +Time to take out the adorable trash! + +I love fun things! + +Who are you calling a chump, chump? + +Oh, you wanna do this the hard way? We'll do this the hard way! + +No, I just want my dress to be cool. + +The color's fine, just make it look cooler. + +The shape's fine, just make the whole thing ... you know, cooler. +It needs to be about 20% cooler. + +Now that you know the elements of a good cheer, let's hear one! + +Ugh. You're going to cheer for me like that? Louder! + +Louder!! + +LOUDER!!! diff --git a/ttyponies/rainbow.pony b/ponies/rainbow.ttypony similarity index 100% rename from ttyponies/rainbow.pony rename to ponies/rainbow.ttypony diff --git a/ttyponies/rainbowdrag.pony b/ponies/rainbowdrag.ttypony similarity index 100% rename from ttyponies/rainbowdrag.pony rename to ponies/rainbowdrag.ttypony diff --git a/ttyponies/rainbowfly.pony b/ponies/rainbowfly.ttypony similarity index 100% rename from ttyponies/rainbowfly.pony rename to ponies/rainbowfly.ttypony diff --git a/ttyponies/rainbowgala.pony b/ponies/rainbowgala.ttypony similarity index 100% rename from ttyponies/rainbowgala.pony rename to ponies/rainbowgala.ttypony diff --git a/ttyponies/rainbowhurricane.pony b/ponies/rainbowhurricane.ttypony similarity index 100% rename from ttyponies/rainbowhurricane.pony rename to ponies/rainbowhurricane.ttypony diff --git a/ttyponies/rainbowsalute.pony b/ponies/rainbowsalute.ttypony similarity index 100% rename from ttyponies/rainbowsalute.pony rename to ponies/rainbowsalute.ttypony diff --git a/ttyponies/rainbowshadowbolt.pony b/ponies/rainbowshadowbolt.ttypony similarity index 100% rename from ttyponies/rainbowshadowbolt.pony rename to ponies/rainbowshadowbolt.ttypony diff --git a/ttyponies/rainbowshine.pony b/ponies/rainbowshine.ttypony similarity index 100% rename from ttyponies/rainbowshine.pony rename to ponies/rainbowshine.ttypony diff --git a/ttyponies/rainbowsleep.pony b/ponies/rainbowsleep.ttypony similarity index 100% rename from ttyponies/rainbowsleep.pony rename to ponies/rainbowsleep.ttypony diff --git a/ttyponies/raindrops.pony b/ponies/raindrops.ttypony similarity index 100% rename from ttyponies/raindrops.pony rename to ponies/raindrops.ttypony diff --git a/ponies/rarity.quotes b/ponies/rarity.quotes new file mode 100644 index 0000000..0f66c58 --- /dev/null +++ b/ponies/rarity.quotes @@ -0,0 +1,55 @@ +I don't have time for some silly scavenger hunt! I've got a real problem... + +Aren't you going to tell me to change something too? + +Out of all things that could happen, this is THE WORST POSSIBLE THING! + +Let me guess. Applesauce? + +Watch the mane, please. + +Thread by thread, stitching it together~ + +Stay back, and my dress doesn't get hurt! + +Afraid to get dirty? + +I simply cannot let such a crime against fabulosity go uncorrected! + +Gently, please! + +How can you be so insensitive? + +I'm so pathetic! + +Do you not like the colour? + +Ideaaaaa! + +MINE!!! + +Oh, it is ON! + +Try it, punk! + +Take that you ruffian! + +Some of us DO have standards! + +Do you not like the shape? + +Whining? I am not ‘whining’. I am complaining. Do you want to hear ‘whining’? +(whines obnoxiously) This is whining! Ooohhhh! This harness is too tight! +It's going to chafe! Can't you loosen it?! OH! It hurts and it's so rusty! +Why didn't you clean it first?! It's gonna leave a stain, and the wagon's +getting heavy! Why do I have to pull it?! + +BUT I THOUGHT YOU WAAANTED WHINING!!! + +Heavens, no! We're getting dressed! + +Oh, Fluttershy. Would you be a dear and FLY FASTER, PLEASE? + +How in Equestria can she think that tiny patch of cloud is Cloudsdale? + +...I thought we agreed never to speak of that again. diff --git a/ttyponies/rarity.pony b/ponies/rarity.ttypony similarity index 100% rename from ttyponies/rarity.pony rename to ponies/rarity.ttypony diff --git a/ttyponies/raritycomplaining.pony b/ponies/raritycomplaining.ttypony similarity index 100% rename from ttyponies/raritycomplaining.pony rename to ponies/raritycomplaining.ttypony diff --git a/ttyponies/raritydrama.pony b/ponies/raritydrama.ttypony similarity index 100% rename from ttyponies/raritydrama.pony rename to ponies/raritydrama.ttypony diff --git a/ttyponies/rarityfly.pony b/ponies/rarityfly.ttypony similarity index 100% rename from ttyponies/rarityfly.pony rename to ponies/rarityfly.ttypony diff --git a/ttyponies/raritygala.pony b/ponies/raritygala.ttypony similarity index 100% rename from ttyponies/raritygala.pony rename to ponies/raritygala.ttypony diff --git a/ttyponies/rarityponder.pony b/ponies/rarityponder.ttypony similarity index 100% rename from ttyponies/rarityponder.pony rename to ponies/rarityponder.ttypony diff --git a/ttyponies/raritysdad.pony b/ponies/raritysdad.ttypony similarity index 100% rename from ttyponies/raritysdad.pony rename to ponies/raritysdad.ttypony diff --git a/ttyponies/raritysmom.pony b/ponies/raritysmom.ttypony similarity index 100% rename from ttyponies/raritysmom.pony rename to ponies/raritysmom.ttypony diff --git a/ttyponies/redheart.pony b/ponies/redheart.ttypony similarity index 100% rename from ttyponies/redheart.pony rename to ponies/redheart.ttypony diff --git a/ttyponies/rhyme.pony b/ponies/rhyme.ttypony similarity index 100% rename from ttyponies/rhyme.pony rename to ponies/rhyme.ttypony diff --git a/ttyponies/rocky.pony b/ponies/rocky.ttypony similarity index 100% rename from ttyponies/rocky.pony rename to ponies/rocky.ttypony diff --git a/ponyquotes/rose.1 b/ponies/rose.quotes similarity index 63% rename from ponyquotes/rose.1 rename to ponies/rose.quotes index 1578fdb..1451749 100644 --- a/ponyquotes/rose.1 +++ b/ponies/rose.quotes @@ -1 +1,3 @@ +The horror, the horror! + The wicked enchantress has cursed them all! diff --git a/ttyponies/rose.pony b/ponies/rose.ttypony similarity index 100% rename from ttyponies/rose.pony rename to ponies/rose.ttypony diff --git a/ttyponies/roseluck.pony b/ponies/roseluck.ttypony similarity index 100% rename from ttyponies/roseluck.pony rename to ponies/roseluck.ttypony diff --git a/ttyponies/rover.pony b/ponies/rover.ttypony similarity index 100% rename from ttyponies/rover.pony rename to ponies/rover.ttypony diff --git a/ttyponies/royalguard.pony b/ponies/royalguard.ttypony similarity index 100% rename from ttyponies/royalguard.pony rename to ponies/royalguard.ttypony diff --git a/ttyponies/royalnightguard.pony b/ponies/royalnightguard.ttypony similarity index 100% rename from ttyponies/royalnightguard.pony rename to ponies/royalnightguard.ttypony diff --git a/ttyponies/royalribbon.pony b/ponies/royalribbon.ttypony similarity index 100% rename from ttyponies/royalribbon.pony rename to ponies/royalribbon.ttypony diff --git a/ttyponies/ruby.pony b/ponies/ruby.ttypony similarity index 100% rename from ttyponies/ruby.pony rename to ponies/ruby.ttypony diff --git a/ponyquotes/sapphire.0 b/ponies/sapphire.quotes similarity index 100% rename from ponyquotes/sapphire.0 rename to ponies/sapphire.quotes diff --git a/ttyponies/sapphire.pony b/ponies/sapphire.ttypony similarity index 100% rename from ttyponies/sapphire.pony rename to ponies/sapphire.ttypony diff --git a/ponies/scootaloo.quotes b/ponies/scootaloo.quotes new file mode 100644 index 0000000..091c2c6 --- /dev/null +++ b/ponies/scootaloo.quotes @@ -0,0 +1,15 @@ +The possibilities are, like, endless! + +I'll do whatever you want, Rainbow Dash! + +I'am liking this idea. + +You've got a problem with blank flanks? + +That is not how you call a chicken. + +TLC as in Tender Loving Care or Totally Lost Cause? + +We were making a table? + +It's no use. No matter what we try we always end up without our cutie marks; and surprisingly often covered in tree sap. diff --git a/ttyponies/scootaloo.pony b/ponies/scootaloo.ttypony similarity index 100% rename from ttyponies/scootaloo.pony rename to ponies/scootaloo.ttypony diff --git a/ttyponies/screwball.pony b/ponies/screwball.ttypony similarity index 100% rename from ttyponies/screwball.pony rename to ponies/screwball.ttypony diff --git a/ttyponies/screwloose.pony b/ponies/screwloose.ttypony similarity index 100% rename from ttyponies/screwloose.pony rename to ponies/screwloose.ttypony diff --git a/ttyponies/seaswirl.pony b/ponies/seaswirl.ttypony similarity index 100% rename from ttyponies/seaswirl.pony rename to ponies/seaswirl.ttypony diff --git a/ttyponies/shadowbolts.pony b/ponies/shadowbolts.ttypony similarity index 100% rename from ttyponies/shadowbolts.pony rename to ponies/shadowbolts.ttypony diff --git a/ttyponies/shiningarmor.pony b/ponies/shiningarmor.ttypony similarity index 100% rename from ttyponies/shiningarmor.pony rename to ponies/shiningarmor.ttypony diff --git a/ttyponies/shiningarmorguard.pony b/ponies/shiningarmorguard.ttypony similarity index 100% rename from ttyponies/shiningarmorguard.pony rename to ponies/shiningarmorguard.ttypony diff --git a/ttyponies/shiningarmorwedding.pony b/ponies/shiningarmorwedding.ttypony similarity index 100% rename from ttyponies/shiningarmorwedding.pony rename to ponies/shiningarmorwedding.ttypony diff --git a/ttyponies/silverspeed.pony b/ponies/silverspeed.ttypony similarity index 100% rename from ttyponies/silverspeed.pony rename to ponies/silverspeed.ttypony diff --git a/ponyquotes/silverspoon.0 b/ponies/silverspoon.quotes similarity index 100% rename from ponyquotes/silverspoon.0 rename to ponies/silverspoon.quotes diff --git a/ttyponies/silverspoon.pony b/ponies/silverspoon.ttypony similarity index 100% rename from ttyponies/silverspoon.pony rename to ponies/silverspoon.ttypony diff --git a/ttyponies/silverstar.pony b/ponies/silverstar.ttypony similarity index 100% rename from ttyponies/silverstar.pony rename to ponies/silverstar.ttypony diff --git a/ttyponies/sindy.pony b/ponies/sindy.ttypony similarity index 100% rename from ttyponies/sindy.pony rename to ponies/sindy.ttypony diff --git a/ttyponies/skyra.pony b/ponies/skyra.ttypony similarity index 100% rename from ttyponies/skyra.pony rename to ponies/skyra.ttypony diff --git a/ttyponies/snails.pony b/ponies/snails.ttypony similarity index 100% rename from ttyponies/snails.pony rename to ponies/snails.ttypony diff --git a/ttyponies/snips.pony b/ponies/snips.ttypony similarity index 100% rename from ttyponies/snips.pony rename to ponies/snips.ttypony diff --git a/ttyponies/snowflake.pony b/ponies/snowflake.ttypony similarity index 100% rename from ttyponies/snowflake.pony rename to ponies/snowflake.ttypony diff --git a/ponies/soarin.quotes b/ponies/soarin.quotes new file mode 100644 index 0000000..da0eb64 --- /dev/null +++ b/ponies/soarin.quotes @@ -0,0 +1,5 @@ +As a horse. + +My pie! + +You saved it! diff --git a/ttyponies/soarin.pony b/ponies/soarin.ttypony similarity index 100% rename from ttyponies/soarin.pony rename to ponies/soarin.ttypony diff --git a/ttyponies/soarinofficer.pony b/ponies/soarinofficer.ttypony similarity index 100% rename from ttyponies/soarinofficer.pony rename to ponies/soarinofficer.ttypony diff --git a/ttyponies/soigne.pony b/ponies/soigne.ttypony similarity index 100% rename from ttyponies/soigne.pony rename to ponies/soigne.ttypony diff --git a/ttyponies/sparkler.pony b/ponies/sparkler.ttypony similarity index 100% rename from ttyponies/sparkler.pony rename to ponies/sparkler.ttypony diff --git a/ponies/spike.quotes b/ponies/spike.quotes new file mode 100644 index 0000000..d3cce2f --- /dev/null +++ b/ponies/spike.quotes @@ -0,0 +1,15 @@ +Is it... ZOMBIES?! + +Ugh ... come on, you guys! Let me in! + +Do I have to? + +Don't tell anypony, but I have a crush on... Rarity! + +Another donut! Extra sprinkles! + +Can you do that? Can you explode twice? + +Whoa! Dude, that's creepy. + +Hey! Say it, don't spray it. diff --git a/ttyponies/spike.pony b/ponies/spike.ttypony similarity index 100% rename from ttyponies/spike.pony rename to ponies/spike.ttypony diff --git a/ttyponies/spikefloat.pony b/ponies/spikefloat.ttypony similarity index 100% rename from ttyponies/spikefloat.pony rename to ponies/spikefloat.ttypony diff --git a/ttyponies/spikelove.pony b/ponies/spikelove.ttypony similarity index 100% rename from ttyponies/spikelove.pony rename to ponies/spikelove.ttypony diff --git a/ttyponies/spikemustache.pony b/ponies/spikemustache.ttypony similarity index 100% rename from ttyponies/spikemustache.pony rename to ponies/spikemustache.ttypony diff --git a/ponyquotes/spitfire.0 b/ponies/spitfire.quotes similarity index 100% rename from ponyquotes/spitfire.0 rename to ponies/spitfire.quotes diff --git a/ttyponies/spitfire.pony b/ponies/spitfire.ttypony similarity index 100% rename from ttyponies/spitfire.pony rename to ponies/spitfire.ttypony diff --git a/ttyponies/spot.pony b/ponies/spot.ttypony similarity index 100% rename from ttyponies/spot.pony rename to ponies/spot.ttypony diff --git a/ttyponies/starlight.pony b/ponies/starlight.ttypony similarity index 100% rename from ttyponies/starlight.pony rename to ponies/starlight.ttypony diff --git a/ttyponies/stella.pony b/ponies/stella.ttypony similarity index 100% rename from ttyponies/stella.pony rename to ponies/stella.ttypony diff --git a/ttyponies/stevenmagnet.pony b/ponies/stevenmagnet.ttypony similarity index 100% rename from ttyponies/stevenmagnet.pony rename to ponies/stevenmagnet.ttypony diff --git a/ttyponies/stevenmagnettrue.pony b/ponies/stevenmagnettrue.ttypony similarity index 100% rename from ttyponies/stevenmagnettrue.pony rename to ponies/stevenmagnettrue.ttypony diff --git a/ttyponies/strongheart.pony b/ponies/strongheart.ttypony similarity index 100% rename from ttyponies/strongheart.pony rename to ponies/strongheart.ttypony diff --git a/ttyponies/sue.pony b/ponies/sue.ttypony similarity index 100% rename from ttyponies/sue.pony rename to ponies/sue.ttypony diff --git a/ttyponies/suedance.pony b/ponies/suedance.ttypony similarity index 100% rename from ttyponies/suedance.pony rename to ponies/suedance.ttypony diff --git a/ttyponies/sunnyrays.pony b/ponies/sunnyrays.ttypony similarity index 100% rename from ttyponies/sunnyrays.pony rename to ponies/sunnyrays.ttypony diff --git a/ttyponies/surprise.pony b/ponies/surprise.ttypony similarity index 100% rename from ttyponies/surprise.pony rename to ponies/surprise.ttypony diff --git a/ttyponies/sweatiesing.pony b/ponies/sweatiesing.ttypony similarity index 100% rename from ttyponies/sweatiesing.pony rename to ponies/sweatiesing.ttypony diff --git a/ponies/sweetie.quotes b/ponies/sweetie.quotes new file mode 100644 index 0000000..e311c38 --- /dev/null +++ b/ponies/sweetie.quotes @@ -0,0 +1,13 @@ +That doesn't look like a table... + +I really like her... mane? + +Nope. Toast! + +I know this one! + +Oh my, sounds serious. + +We are the Cutie Mark Crusaders! + +We could form our own secret society! diff --git a/ttyponies/sweetie.pony b/ponies/sweetie.ttypony similarity index 100% rename from ttyponies/sweetie.pony rename to ponies/sweetie.ttypony diff --git a/ttyponies/tank.pony b/ponies/tank.ttypony similarity index 100% rename from ttyponies/tank.pony rename to ponies/tank.ttypony diff --git a/ttyponies/tenderheart.pony b/ponies/tenderheart.ttypony similarity index 100% rename from ttyponies/tenderheart.pony rename to ponies/tenderheart.ttypony diff --git a/ttyponies/theodoredonaldkerabatsos.pony b/ponies/theodoredonaldkerabatsos.ttypony similarity index 100% rename from ttyponies/theodoredonaldkerabatsos.pony rename to ponies/theodoredonaldkerabatsos.ttypony diff --git a/ttyponies/thunderlane.pony b/ponies/thunderlane.ttypony similarity index 100% rename from ttyponies/thunderlane.pony rename to ponies/thunderlane.ttypony diff --git a/ttyponies/timeturner.pony b/ponies/timeturner.ttypony similarity index 100% rename from ttyponies/timeturner.pony rename to ponies/timeturner.ttypony diff --git a/ttyponies/tom.pony b/ponies/tom.ttypony similarity index 100% rename from ttyponies/tom.pony rename to ponies/tom.ttypony diff --git a/ttyponies/tornadobolt.pony b/ponies/tornadobolt.ttypony similarity index 100% rename from ttyponies/tornadobolt.pony rename to ponies/tornadobolt.ttypony diff --git a/ponies/trixie.quotes b/ponies/trixie.quotes new file mode 100644 index 0000000..59b9e6e --- /dev/null +++ b/ponies/trixie.quotes @@ -0,0 +1,13 @@ +Anything you can do, I can do better. + +It's true my enthusiastic little admirers. + +Well, come on. Show Trixie what you've got! + +The Great and Powerful Trixie! + +Was there ever any doubt? + +Watch in awe as Trixies performs the most amazing feat for magic every witnessed by pony eyes! + +Well, well, well. It seems we have some “neigh-sayers” in the audience. diff --git a/ttyponies/trixie.pony b/ponies/trixie.ttypony similarity index 100% rename from ttyponies/trixie.pony rename to ponies/trixie.ttypony diff --git a/ttyponies/trixielulamoon.pony b/ponies/trixielulamoon.ttypony similarity index 100% rename from ttyponies/trixielulamoon.pony rename to ponies/trixielulamoon.ttypony diff --git a/ttyponies/trixiestage.pony b/ponies/trixiestage.ttypony similarity index 100% rename from ttyponies/trixiestage.pony rename to ponies/trixiestage.ttypony diff --git a/ttyponies/trixiestand.pony b/ponies/trixiestand.ttypony similarity index 100% rename from ttyponies/trixiestand.pony rename to ponies/trixiestand.ttypony diff --git a/ttyponies/truffleshuffle.pony b/ponies/truffleshuffle.ttypony similarity index 100% rename from ttyponies/truffleshuffle.pony rename to ponies/truffleshuffle.ttypony diff --git a/ttyponies/turf.pony b/ponies/turf.ttypony similarity index 100% rename from ttyponies/turf.pony rename to ponies/turf.ttypony diff --git a/ttyponies/turnip.pony b/ponies/turnip.ttypony similarity index 100% rename from ttyponies/turnip.pony rename to ponies/turnip.ttypony diff --git a/ponies/twilight.quotes b/ponies/twilight.quotes new file mode 100644 index 0000000..9e35434 --- /dev/null +++ b/ponies/twilight.quotes @@ -0,0 +1,51 @@ +All the ponies in this town are CRAZY! + +Um, not very likely. + +Rainbow must be angry with Applejack. +She must hate her guts. +Ohh ... how wonderful! + +Cross my heart and hope to fly, stick a cupcake in my ... OW! + +Yesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes! + +Your faithful student, Twilight Sparkle. + +Please don't hate me. + +Pardon me, Princess. + +You told me it was all an old pony tale. + +Look out, here comes Tom! + +It's the perfect plan. + +We will do everything by the book! + +Scarf? Check. +Saddle? Check. +Boots? Check. +‘Spike refusing to get up and go back to sleep’? Check. +It's a good thing I'm so organised. I'm ready! + +Ooh! Doesn't that hurt? + +Are you crazy? + +I uh, I think I hear my laundry calling! Sorry, gotta go. + +She only has one cat. + +I never thought it would happen. My friends ... have turned into complete JERKS! + +If you can't catch her, Discord wins! + +Get back! All of you! This is my book. And I'm going to READ IT! + +Pinkie Pie, you're a genius! + +I'm going to do what I do best: lecture her! + +Pinkie Pie, aren't you a little old for this? diff --git a/ttyponies/twilight.pony b/ponies/twilight.ttypony similarity index 100% rename from ttyponies/twilight.pony rename to ponies/twilight.ttypony diff --git a/ttyponies/twilightcrazyfromball.pony b/ponies/twilightcrazyfromball.ttypony similarity index 100% rename from ttyponies/twilightcrazyfromball.pony rename to ponies/twilightcrazyfromball.ttypony diff --git a/ttyponies/twilightrage.pony b/ponies/twilightrage.ttypony similarity index 100% rename from ttyponies/twilightrage.pony rename to ponies/twilightrage.ttypony diff --git a/ttyponies/twilightspike.pony b/ponies/twilightspike.ttypony similarity index 100% rename from ttyponies/twilightspike.pony rename to ponies/twilightspike.ttypony diff --git a/ttyponies/twilightthebearded.pony b/ponies/twilightthebearded.ttypony similarity index 100% rename from ttyponies/twilightthebearded.pony rename to ponies/twilightthebearded.ttypony diff --git a/ttyponies/twilighttime.pony b/ponies/twilighttime.ttypony similarity index 100% rename from ttyponies/twilighttime.pony rename to ponies/twilighttime.ttypony diff --git a/ttyponies/twilightvelvet.pony b/ponies/twilightvelvet.ttypony similarity index 100% rename from ttyponies/twilightvelvet.pony rename to ponies/twilightvelvet.ttypony diff --git a/ttyponies/twilightzero.pony b/ponies/twilightzero.ttypony similarity index 100% rename from ttyponies/twilightzero.pony rename to ponies/twilightzero.ttypony diff --git a/ponyquotes/twist.0 b/ponies/twist.quotes similarity index 100% rename from ponyquotes/twist.0 rename to ponies/twist.quotes diff --git a/ttyponies/twist.pony b/ponies/twist.ttypony similarity index 100% rename from ttyponies/twist.pony rename to ponies/twist.ttypony diff --git a/ttyponies/vinyl.pony b/ponies/vinyl.ttypony similarity index 100% rename from ttyponies/vinyl.pony rename to ponies/vinyl.ttypony diff --git a/ttyponies/violet.pony b/ponies/violet.ttypony similarity index 100% rename from ttyponies/violet.pony rename to ponies/violet.ttypony diff --git a/ttyponies/waltercoltchak.pony b/ponies/waltercoltchak.ttypony similarity index 100% rename from ttyponies/waltercoltchak.pony rename to ponies/waltercoltchak.ttypony diff --git a/ttyponies/wildfire.pony b/ponies/wildfire.ttypony similarity index 100% rename from ttyponies/wildfire.pony rename to ponies/wildfire.ttypony diff --git a/ttyponies/winona.pony b/ponies/winona.ttypony similarity index 100% rename from ttyponies/winona.pony rename to ponies/winona.ttypony diff --git a/ttyponies/woona.pony b/ponies/woona.ttypony similarity index 100% rename from ttyponies/woona.pony rename to ponies/woona.ttypony diff --git a/ponies/zecora.quotes b/ponies/zecora.quotes new file mode 100644 index 0000000..131d8c5 --- /dev/null +++ b/ponies/zecora.quotes @@ -0,0 +1,17 @@ +Beware! Beware you pony folk! Those leaves of blue are not a joke! + +Have you gone mad? + +Is that a parasprite before my eyes? + +Your actions will make my anger explode! + +My Lair! My Lair! + +Ponies, what is this... +No, you know not what you do. +You've gone and spilled my precious brew. + +How dare you! +You destroy my home, destroy my works, +an then accuse me, of being a jerk? diff --git a/ttyponies/zecora.pony b/ponies/zecora.ttypony similarity index 100% rename from ttyponies/zecora.pony rename to ponies/zecora.ttypony diff --git a/ttyponies/zecorabalance.pony b/ponies/zecorabalance.ttypony similarity index 100% rename from ttyponies/zecorabalance.pony rename to ponies/zecorabalance.ttypony diff --git a/dev/pony-checklist b/pony-checklist similarity index 100% rename from dev/pony-checklist rename to pony-checklist diff --git a/ponycenter.py b/ponycenter.py deleted file mode 100755 index 66e64fe..0000000 --- a/ponycenter.py +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env python3 - -import os,sys,time, itertools -import argparse -from subprocess import * -try: - import re2 as re -except: - import re - -''' -Gets the size of the terminal in (rows, columns) - -@return (rows, columns):(int, int) The number or lines and the number of columns in the terminal's display area, [24, 80] if the size cannot be found -''' -def gettermsize(): - return [int(x) for x in - next(itertools.chain( - (x for x in - (Popen(['stty', 'size'], stdout=PIPE, stdin=fd, stderr=PIPE).communicate()[0].split() - for fd in [sys.stdin, sys.stdout, sys.stderr]) - if x), - [[24, 80]] - ) - ) - ] - -parser = argparse.ArgumentParser(description='Center stuff on terminals') -parser.add_argument('string', nargs='*', type=str) -args = parser.parse_args() - -for e in [sys.stdin] + args.string: - lines = [e] if isinstance(e, str) else e.readlines() - if lines: - width = max(map(len, map(lambda s: re.sub(r'\x1B\[[0-9;]+m|\$.*\$', '', s), lines))) - pad = int((gettermsize()[1]- width)/2) - for line in lines: - print(' '*pad + re.sub(r'\$.*\$|\n', '', line)) - diff --git a/ponyquotes/applebloom.0 b/ponyquotes/applebloom.0 deleted file mode 100644 index 03d8212..0000000 --- a/ponyquotes/applebloom.0 +++ /dev/null @@ -1 +0,0 @@ -Aren't you gonna stay for brunch? diff --git a/ponyquotes/applebloom.1 b/ponyquotes/applebloom.1 deleted file mode 100644 index 38d6e6a..0000000 --- a/ponyquotes/applebloom.1 +++ /dev/null @@ -1 +0,0 @@ -But I want it now! diff --git a/ponyquotes/applebloom.2 b/ponyquotes/applebloom.2 deleted file mode 100644 index 5daed92..0000000 --- a/ponyquotes/applebloom.2 +++ /dev/null @@ -1 +0,0 @@ -I am a big pony! diff --git a/ponyquotes/applebloom.3 b/ponyquotes/applebloom.3 deleted file mode 100644 index cb7db46..0000000 --- a/ponyquotes/applebloom.3 +++ /dev/null @@ -1 +0,0 @@ -I'm not a baby, I can take care of myself! diff --git a/ponyquotes/applebloom.4 b/ponyquotes/applebloom.4 deleted file mode 100644 index bdd34ed..0000000 --- a/ponyquotes/applebloom.4 +++ /dev/null @@ -1 +0,0 @@ -Likely story. diff --git a/ponyquotes/applebloom.5 b/ponyquotes/applebloom.5 deleted file mode 100644 index 1f944f6..0000000 --- a/ponyquotes/applebloom.5 +++ /dev/null @@ -1 +0,0 @@ -Not the cupcakes! Trust me. diff --git a/ponyquotes/applebloom.6 b/ponyquotes/applebloom.6 deleted file mode 100644 index 430eee6..0000000 --- a/ponyquotes/applebloom.6 +++ /dev/null @@ -1 +0,0 @@ -Somepony needs to put this thing out of its misery. diff --git a/ponyquotes/applebloom.7 b/ponyquotes/applebloom.7 deleted file mode 100644 index a905bce..0000000 --- a/ponyquotes/applebloom.7 +++ /dev/null @@ -1 +0,0 @@ -You're not using power tools, are you? diff --git a/ponyquotes/applebloom.8 b/ponyquotes/applebloom.8 deleted file mode 100644 index 825dd18..0000000 --- a/ponyquotes/applebloom.8 +++ /dev/null @@ -1 +0,0 @@ -Scootaloo! Scoot-Scootaloo! diff --git a/ponyquotes/applejack.0 b/ponyquotes/applejack.0 deleted file mode 100644 index dd8add8..0000000 --- a/ponyquotes/applejack.0 +++ /dev/null @@ -1 +0,0 @@ -Don't you use your fancy mathematics to muddy the issue! diff --git a/ponyquotes/applejack.1 b/ponyquotes/applejack.1 deleted file mode 100644 index ced7b5f..0000000 --- a/ponyquotes/applejack.1 +++ /dev/null @@ -1 +0,0 @@ -‘Dressed’? Um, beg your pardon, Rarity, but we don't normally wear clothes. diff --git a/ponyquotes/applejack.2 b/ponyquotes/applejack.2 deleted file mode 100644 index 375b1ef..0000000 --- a/ponyquotes/applejack.2 +++ /dev/null @@ -1 +0,0 @@ -The same way [Discord] got you to think that cheap rock was a bona fide diamond. diff --git a/ponyquotes/applejack.3 b/ponyquotes/applejack.3 deleted file mode 100644 index c4afd03..0000000 --- a/ponyquotes/applejack.3 +++ /dev/null @@ -1 +0,0 @@ -If you can take this bull by the horns you better be ready for a ride! diff --git a/ponyquotes/applejack.4 b/ponyquotes/applejack.4 deleted file mode 100644 index d2e10cd..0000000 --- a/ponyquotes/applejack.4 +++ /dev/null @@ -1 +0,0 @@ -Can't hear you! I'm asleep! *SNORE* diff --git a/ponyquotes/applejack.5 b/ponyquotes/applejack.5 deleted file mode 100644 index 0b61e0f..0000000 --- a/ponyquotes/applejack.5 +++ /dev/null @@ -1 +0,0 @@ -Don't you use your fancy mathematics to muddle the issue! diff --git a/ponyquotes/applejack.6 b/ponyquotes/applejack.6 deleted file mode 100644 index 357df3b..0000000 --- a/ponyquotes/applejack.6 +++ /dev/null @@ -1 +0,0 @@ -I hate to say I told you so. But I told you so. diff --git a/ponyquotes/applejack.7 b/ponyquotes/applejack.7 deleted file mode 100644 index 005f0db..0000000 --- a/ponyquotes/applejack.7 +++ /dev/null @@ -1 +0,0 @@ -We don't normally wear clothes diff --git a/ponyquotes/applejack.8 b/ponyquotes/applejack.8 deleted file mode 100644 index 5110763..0000000 --- a/ponyquotes/applejack.8 +++ /dev/null @@ -1 +0,0 @@ -I knew you could do it. diff --git a/ponyquotes/applejack.9 b/ponyquotes/applejack.9 deleted file mode 100644 index f10e5fd..0000000 --- a/ponyquotes/applejack.9 +++ /dev/null @@ -1 +0,0 @@ -Who are you calling a baby? diff --git a/ponyquotes/bigmac.0 b/ponyquotes/bigmac.0 deleted file mode 100644 index 7445a30..0000000 --- a/ponyquotes/bigmac.0 +++ /dev/null @@ -1 +0,0 @@ -Ayup. diff --git a/ponyquotes/bigmac.1 b/ponyquotes/bigmac.1 deleted file mode 100644 index 06053c4..0000000 --- a/ponyquotes/bigmac.1 +++ /dev/null @@ -1 +0,0 @@ -Nope. diff --git a/ponyquotes/bigmac.2 b/ponyquotes/bigmac.2 deleted file mode 100644 index 0aa01b2..0000000 --- a/ponyquotes/bigmac.2 +++ /dev/null @@ -1 +0,0 @@ -Biting off more than you can chew is just what I'm afraid of. diff --git a/ponyquotes/bigmac.3 b/ponyquotes/bigmac.3 deleted file mode 100644 index 9948362..0000000 --- a/ponyquotes/bigmac.3 +++ /dev/null @@ -1 +0,0 @@ -One pony plus hundreds of appletrees just doesn't add up. diff --git a/ponyquotes/bigmac.4 b/ponyquotes/bigmac.4 deleted file mode 100644 index 8ec8add..0000000 --- a/ponyquotes/bigmac.4 +++ /dev/null @@ -1 +0,0 @@ -Too big for you to handle on your own. diff --git a/ponyquotes/bonbon.1 b/ponyquotes/bonbon.1 deleted file mode 100644 index 32815d5..0000000 --- a/ponyquotes/bonbon.1 +++ /dev/null @@ -1 +0,0 @@ -I didn't put those in my bag. diff --git a/ponyquotes/braeburn.0 b/ponyquotes/braeburn.0 deleted file mode 100644 index fcc35f9..0000000 --- a/ponyquotes/braeburn.0 +++ /dev/null @@ -1 +0,0 @@ -Shame on you! diff --git a/ponyquotes/braeburn.1 b/ponyquotes/braeburn.1 deleted file mode 100644 index ec1f49b..0000000 --- a/ponyquotes/braeburn.1 +++ /dev/null @@ -1 +0,0 @@ -'Taint fair! diff --git a/ponyquotes/braeburn.2 b/ponyquotes/braeburn.2 deleted file mode 100644 index 0b774c2..0000000 --- a/ponyquotes/braeburn.2 +++ /dev/null @@ -1 +0,0 @@ -Welcome to Appleoosa! diff --git a/ponyquotes/carrot.0 b/ponyquotes/carrot.0 deleted file mode 100644 index 5a98017..0000000 --- a/ponyquotes/carrot.0 +++ /dev/null @@ -1 +0,0 @@ -Welcome, Princess Celest! diff --git a/ponyquotes/celestia.1 b/ponyquotes/celestia.1 deleted file mode 100644 index 626fab8..0000000 --- a/ponyquotes/celestia.1 +++ /dev/null @@ -1 +0,0 @@ -Gotcha! diff --git a/ponyquotes/celestia.2 b/ponyquotes/celestia.2 deleted file mode 100644 index 14197a9..0000000 --- a/ponyquotes/celestia.2 +++ /dev/null @@ -1 +0,0 @@ -These creatures are adorable! diff --git a/ponyquotes/celestia.3 b/ponyquotes/celestia.3 deleted file mode 100644 index 2b94ed5..0000000 --- a/ponyquotes/celestia.3 +++ /dev/null @@ -1 +0,0 @@ -I want you right by my side the entire evening. diff --git a/ponyquotes/celestia.4 b/ponyquotes/celestia.4 deleted file mode 100644 index 5b50c4f..0000000 --- a/ponyquotes/celestia.4 +++ /dev/null @@ -1 +0,0 @@ -Will you accept my friendship? diff --git a/ponyquotes/cheerilee.1 b/ponyquotes/cheerilee.1 deleted file mode 100644 index 57f711f..0000000 --- a/ponyquotes/cheerilee.1 +++ /dev/null @@ -1 +0,0 @@ -Everypony should get fun gifts on their birthday. diff --git a/ponyquotes/chrysalis.1 b/ponyquotes/chrysalis.1 deleted file mode 100644 index 5ea7168..0000000 --- a/ponyquotes/chrysalis.1 +++ /dev/null @@ -1 +0,0 @@ -You do realize the reception has been canceled, don't you? \ No newline at end of file diff --git a/ponyquotes/derpy.0 b/ponyquotes/derpy.0 deleted file mode 100644 index b7a3483..0000000 --- a/ponyquotes/derpy.0 +++ /dev/null @@ -1 +0,0 @@ -Muffin... diff --git a/ponyquotes/derpy.1 b/ponyquotes/derpy.1 deleted file mode 100644 index e7118ad..0000000 --- a/ponyquotes/derpy.1 +++ /dev/null @@ -1 +0,0 @@ -I don't know what went wrong! diff --git a/ponyquotes/derpy.2 b/ponyquotes/derpy.2 deleted file mode 100644 index 6c9a555..0000000 --- a/ponyquotes/derpy.2 +++ /dev/null @@ -1 +0,0 @@ -You okay Rainbow Dash? Anything I can do to help? diff --git a/ponyquotes/derpy.3 b/ponyquotes/derpy.3 deleted file mode 100644 index d7a7444..0000000 --- a/ponyquotes/derpy.3 +++ /dev/null @@ -1 +0,0 @@ -I just don't know what went wrong! diff --git a/ponyquotes/derpy.4 b/ponyquotes/derpy.4 deleted file mode 100644 index 4f4b2b7..0000000 --- a/ponyquotes/derpy.4 +++ /dev/null @@ -1 +0,0 @@ -Are you okey Applejack, anything I can do to help? diff --git a/ponyquotes/fluttershy.0 b/ponyquotes/fluttershy.0 deleted file mode 100644 index 485061e..0000000 --- a/ponyquotes/fluttershy.0 +++ /dev/null @@ -1,2 +0,0 @@ -Um, Pinkie Pie ... about this party for Gilda; -do you really think it's a good idea? I mean... diff --git a/ponyquotes/fluttershy.1 b/ponyquotes/fluttershy.1 deleted file mode 100644 index 7e11619..0000000 --- a/ponyquotes/fluttershy.1 +++ /dev/null @@ -1 +0,0 @@ -I'm a year older than you. diff --git a/ponyquotes/fluttershy.10 b/ponyquotes/fluttershy.10 deleted file mode 100644 index 419fff3..0000000 --- a/ponyquotes/fluttershy.10 +++ /dev/null @@ -1 +0,0 @@ -Uh, panic? diff --git a/ponyquotes/fluttershy.11 b/ponyquotes/fluttershy.11 deleted file mode 100644 index 503f864..0000000 --- a/ponyquotes/fluttershy.11 +++ /dev/null @@ -1,8 +0,0 @@ -The armscye's tight, the middy collar doesn't go with the shawl lapel, -the hems are clearly machine-stitched, the pleats are uneven, the -fabric looks like toile, you used a backstitch here when it clearly -called for a topstitch, or maybe a traditional blanket stitch, and the -overall design is reminiscent of prêt-à-porter and not true French -haute couture... - -But ... uh ... you know ... um ... whatever you want to do is fine... diff --git a/ponyquotes/fluttershy.12 b/ponyquotes/fluttershy.12 deleted file mode 100644 index 1e48e6f..0000000 --- a/ponyquotes/fluttershy.12 +++ /dev/null @@ -1,4 +0,0 @@ -Well ... It's a game about who can be quiet the longest. Sound fun? -I'm the world champ, you know. I betcha can't beat me! - -~Squee~ diff --git a/ponyquotes/fluttershy.13 b/ponyquotes/fluttershy.13 deleted file mode 100644 index 45c7b3d..0000000 --- a/ponyquotes/fluttershy.13 +++ /dev/null @@ -1,2 +0,0 @@ -I'll catch you yet, my pretties. Oh yes. As soon as one of you little -birds or monkeys or bears touches this net ... you'll be MINE! MINE! diff --git a/ponyquotes/fluttershy.14 b/ponyquotes/fluttershy.14 deleted file mode 100644 index 7b3b6b4..0000000 --- a/ponyquotes/fluttershy.14 +++ /dev/null @@ -1 +0,0 @@ -A sonic rainboom! She did it! She did it! WOOO! diff --git a/ponyquotes/fluttershy.15 b/ponyquotes/fluttershy.15 deleted file mode 100644 index a4793c6..0000000 --- a/ponyquotes/fluttershy.15 +++ /dev/null @@ -1,3 +0,0 @@ -Now wait just a minute! Oh, I'm sorry. -I'm trying to be more assertive. Anyhow... -She *is* going to do a sonic rainboom! diff --git a/ponyquotes/fluttershy.16 b/ponyquotes/fluttershy.16 deleted file mode 100644 index 8f9f529..0000000 --- a/ponyquotes/fluttershy.16 +++ /dev/null @@ -1 +0,0 @@ -Then show up at the Cloudseum and see for yourself! ... If you're free. diff --git a/ponyquotes/fluttershy.17 b/ponyquotes/fluttershy.17 deleted file mode 100644 index 3c8135e..0000000 --- a/ponyquotes/fluttershy.17 +++ /dev/null @@ -1,3 +0,0 @@ -Hey Twilight, what's soaking wet and clueless? -[⋅⋅⋅] -YOUR FACE! diff --git a/ponyquotes/fluttershy.18 b/ponyquotes/fluttershy.18 deleted file mode 100644 index 24c1e07..0000000 --- a/ponyquotes/fluttershy.18 +++ /dev/null @@ -1 +0,0 @@ -Good boy, Angel! Mama's so proud! diff --git a/ponyquotes/fluttershy.19 b/ponyquotes/fluttershy.19 deleted file mode 100644 index 58cae0b..0000000 --- a/ponyquotes/fluttershy.19 +++ /dev/null @@ -1,2 +0,0 @@ -Um ... I'm just wondering if it's okay if I hold -you down against your will for a little bit? diff --git a/ponyquotes/fluttershy.2 b/ponyquotes/fluttershy.2 deleted file mode 100644 index 17ebff9..0000000 --- a/ponyquotes/fluttershy.2 +++ /dev/null @@ -1 +0,0 @@ -Yay. diff --git a/ponyquotes/fluttershy.20 b/ponyquotes/fluttershy.20 deleted file mode 100644 index e9de4bb..0000000 --- a/ponyquotes/fluttershy.20 +++ /dev/null @@ -1,3 +0,0 @@ -I can't believe this ... I am so frustrated, I could just scream! - -(Eee!) diff --git a/ponyquotes/fluttershy.21 b/ponyquotes/fluttershy.21 deleted file mode 100644 index 59b8082..0000000 --- a/ponyquotes/fluttershy.21 +++ /dev/null @@ -1,3 +0,0 @@ -Yes. Because he wasn't a huge, gigantic, terrible, enormous, -teeth-gnashing, sharp scale-having, horn-wearing, smoke-snoring, -could-eat-a-pony-in-one-bite, totally-all-grown-up dragon. diff --git a/ponyquotes/fluttershy.22 b/ponyquotes/fluttershy.22 deleted file mode 100644 index 4aaf93c..0000000 --- a/ponyquotes/fluttershy.22 +++ /dev/null @@ -1 +0,0 @@ -What is this place, filled with so many wonders? diff --git a/ponyquotes/fluttershy.23 b/ponyquotes/fluttershy.23 deleted file mode 100644 index cd260f3..0000000 --- a/ponyquotes/fluttershy.23 +++ /dev/null @@ -1 +0,0 @@ -Oooh, what a magical place! diff --git a/ponyquotes/fluttershy.24 b/ponyquotes/fluttershy.24 deleted file mode 100644 index e326d8c..0000000 --- a/ponyquotes/fluttershy.24 +++ /dev/null @@ -1 +0,0 @@ -*crazy laugh* diff --git a/ponyquotes/fluttershy.25 b/ponyquotes/fluttershy.25 deleted file mode 100644 index 733433d..0000000 --- a/ponyquotes/fluttershy.25 +++ /dev/null @@ -1 +0,0 @@ -How dare you! diff --git a/ponyquotes/fluttershy.26 b/ponyquotes/fluttershy.26 deleted file mode 100644 index 582195f..0000000 --- a/ponyquotes/fluttershy.26 +++ /dev/null @@ -1 +0,0 @@ -I'd like to be a tree. diff --git a/ponyquotes/fluttershy.27 b/ponyquotes/fluttershy.27 deleted file mode 100644 index 4dd0e9a..0000000 --- a/ponyquotes/fluttershy.27 +++ /dev/null @@ -1 +0,0 @@ -I don't wanna talk about it. diff --git a/ponyquotes/fluttershy.28 b/ponyquotes/fluttershy.28 deleted file mode 100644 index c273715..0000000 --- a/ponyquotes/fluttershy.28 +++ /dev/null @@ -1 +0,0 @@ -I am so sorry to have scared you, my friends. diff --git a/ponyquotes/fluttershy.29 b/ponyquotes/fluttershy.29 deleted file mode 100644 index b85254b..0000000 --- a/ponyquotes/fluttershy.29 +++ /dev/null @@ -1 +0,0 @@ -I am the world champ, you know. A bet you can't beat me. diff --git a/ponyquotes/fluttershy.3 b/ponyquotes/fluttershy.3 deleted file mode 100644 index 5418338..0000000 --- a/ponyquotes/fluttershy.3 +++ /dev/null @@ -1 +0,0 @@ -Yay! diff --git a/ponyquotes/fluttershy.30 b/ponyquotes/fluttershy.30 deleted file mode 100644 index afd7b96..0000000 --- a/ponyquotes/fluttershy.30 +++ /dev/null @@ -1 +0,0 @@ -You're the cutest thing ever! diff --git a/ponyquotes/fluttershy.31 b/ponyquotes/fluttershy.31 deleted file mode 100644 index 91117d4..0000000 --- a/ponyquotes/fluttershy.31 +++ /dev/null @@ -1 +0,0 @@ -You rock, woohoo! diff --git a/ponyquotes/fluttershy.4 b/ponyquotes/fluttershy.4 deleted file mode 100644 index 7145ac6..0000000 --- a/ponyquotes/fluttershy.4 +++ /dev/null @@ -1 +0,0 @@ -Yaaay ... too loud? diff --git a/ponyquotes/fluttershy.5 b/ponyquotes/fluttershy.5 deleted file mode 100644 index 23a7c99..0000000 --- a/ponyquotes/fluttershy.5 +++ /dev/null @@ -1 +0,0 @@ -(squeak) diff --git a/ponyquotes/fluttershy.6 b/ponyquotes/fluttershy.6 deleted file mode 100644 index 5822dec..0000000 --- a/ponyquotes/fluttershy.6 +++ /dev/null @@ -1 +0,0 @@ -You're ... GOING TO LOVE ME!!! diff --git a/ponyquotes/fluttershy.7 b/ponyquotes/fluttershy.7 deleted file mode 100644 index 7056f69..0000000 --- a/ponyquotes/fluttershy.7 +++ /dev/null @@ -1 +0,0 @@ -I can't! diff --git a/ponyquotes/fluttershy.8 b/ponyquotes/fluttershy.8 deleted file mode 100644 index 3904535..0000000 --- a/ponyquotes/fluttershy.8 +++ /dev/null @@ -1 +0,0 @@ -That big ... dumb ... MEANIE!!!! diff --git a/ponyquotes/fluttershy.9 b/ponyquotes/fluttershy.9 deleted file mode 100644 index 2a092b8..0000000 --- a/ponyquotes/fluttershy.9 +++ /dev/null @@ -1,4 +0,0 @@ -Now, Rainbow my dear, I cannot express my delight -It's abundantly clear -That somewhere out here -Is a pet that will suit you just right. diff --git a/ponyquotes/gilda.0 b/ponyquotes/gilda.0 deleted file mode 100644 index 0d41909..0000000 --- a/ponyquotes/gilda.0 +++ /dev/null @@ -1 +0,0 @@ -That's me! Half eagle, half lion, and all awesome! diff --git a/ponyquotes/gilda.1 b/ponyquotes/gilda.1 deleted file mode 100644 index d58e2bf..0000000 --- a/ponyquotes/gilda.1 +++ /dev/null @@ -1 +0,0 @@ -Don't you know how to take GET LOST for an answer? diff --git a/ponyquotes/gilda.2 b/ponyquotes/gilda.2 deleted file mode 100644 index ace9c5f..0000000 --- a/ponyquotes/gilda.2 +++ /dev/null @@ -1 +0,0 @@ -I know what you're up to! diff --git a/ponyquotes/gilda.3 b/ponyquotes/gilda.3 deleted file mode 100644 index 925a677..0000000 --- a/ponyquotes/gilda.3 +++ /dev/null @@ -1 +0,0 @@ -When you decide not be lame anymore, give me a call! diff --git a/ponyquotes/gilda.4 b/ponyquotes/gilda.4 deleted file mode 100644 index b261d18..0000000 --- a/ponyquotes/gilda.4 +++ /dev/null @@ -1 +0,0 @@ -You're such a flip-flop! Cool one minute and lame the next. diff --git a/ponyquotes/gilda.5 b/ponyquotes/gilda.5 deleted file mode 100644 index e3621f4..0000000 --- a/ponyquotes/gilda.5 +++ /dev/null @@ -1,5 +0,0 @@ -*sigh* Only for you, Dash. -Junior Speedsters are our lives -Sky-bound soars and daring dives -Junior Speedsters; it's our quest -To someday be the very best diff --git a/ponyquotes/ironwill.0 b/ponyquotes/ironwill.0 deleted file mode 100644 index 7cf295f..0000000 --- a/ponyquotes/ironwill.0 +++ /dev/null @@ -1 +0,0 @@ -Never apologise, when you can criticise. diff --git a/ponyquotes/ironwill.1 b/ponyquotes/ironwill.1 deleted file mode 100644 index 99e0a3d..0000000 --- a/ponyquotes/ironwill.1 +++ /dev/null @@ -1 +0,0 @@ -Treat me like a push-over, and you will get the once-over. diff --git a/ponyquotes/ironwill.2 b/ponyquotes/ironwill.2 deleted file mode 100644 index fb1cdaa..0000000 --- a/ponyquotes/ironwill.2 +++ /dev/null @@ -1 +0,0 @@ -When somepony tries to block, show them that you rock. diff --git a/ponyquotes/ironwill.3 b/ponyquotes/ironwill.3 deleted file mode 100644 index cfa9be6..0000000 --- a/ponyquotes/ironwill.3 +++ /dev/null @@ -1 +0,0 @@ -Maybes are for babies. diff --git a/ponyquotes/ironwill.4 b/ponyquotes/ironwill.4 deleted file mode 100644 index c384f04..0000000 --- a/ponyquotes/ironwill.4 +++ /dev/null @@ -1 +0,0 @@ -You laugh at me? I wrath at you! diff --git a/ponyquotes/ironwill.5 b/ponyquotes/ironwill.5 deleted file mode 100644 index 69afa39..0000000 --- a/ponyquotes/ironwill.5 +++ /dev/null @@ -1 +0,0 @@ -Cut in line? I will take what is mine. diff --git a/ponyquotes/ironwill.6 b/ponyquotes/ironwill.6 deleted file mode 100644 index bf925a2..0000000 --- a/ponyquotes/ironwill.6 +++ /dev/null @@ -1 +0,0 @@ -You apologise, I penalise. diff --git a/ponyquotes/ironwill.7 b/ponyquotes/ironwill.7 deleted file mode 100644 index 9ec8a05..0000000 --- a/ponyquotes/ironwill.7 +++ /dev/null @@ -1 +0,0 @@ -You make me lose, I blow my fuse. diff --git a/ponyquotes/lily.0 b/ponyquotes/lily.0 deleted file mode 100644 index cb35efc..0000000 --- a/ponyquotes/lily.0 +++ /dev/null @@ -1 +0,0 @@ -The horror, the horror! diff --git a/ponyquotes/luna.0 b/ponyquotes/luna.0 deleted file mode 100644 index 2675aa3..0000000 --- a/ponyquotes/luna.0 +++ /dev/null @@ -1 +0,0 @@ -Ha, ha! The fun has been doubled! diff --git a/ponyquotes/luna.1 b/ponyquotes/luna.1 deleted file mode 100644 index 57c7e73..0000000 --- a/ponyquotes/luna.1 +++ /dev/null @@ -1 +0,0 @@ -I missed you so much! diff --git a/ponyquotes/luna.2 b/ponyquotes/luna.2 deleted file mode 100644 index 871c3a4..0000000 --- a/ponyquotes/luna.2 +++ /dev/null @@ -1 +0,0 @@ -I'm so sorry! diff --git a/ponyquotes/luna.3 b/ponyquotes/luna.3 deleted file mode 100644 index 5667400..0000000 --- a/ponyquotes/luna.3 +++ /dev/null @@ -1 +0,0 @@ -TOGETHER, WE SHALL TURN THIS DREADFUL NIGHT INTO A GLORIOUS FEEEEAAAAST! diff --git a/ponyquotes/luna.4 b/ponyquotes/luna.4 deleted file mode 100644 index bf93e70..0000000 --- a/ponyquotes/luna.4 +++ /dev/null @@ -1 +0,0 @@ -OH MOST WON... I mean, oh most wonderful of nights! diff --git a/ponyquotes/luna.5 b/ponyquotes/luna.5 deleted file mode 100644 index ef8599d..0000000 --- a/ponyquotes/luna.5 +++ /dev/null @@ -1 +0,0 @@ -WE COULD NOT BE HAPPIER! IS THAT NOT CLEAR? diff --git a/ponyquotes/luna.6 b/ponyquotes/luna.6 deleted file mode 100644 index 602cd76..0000000 --- a/ponyquotes/luna.6 +++ /dev/null @@ -1 +0,0 @@ -THIS IS THE TRADITIONAL ROYAL CANTERLOT VOICE! diff --git a/ponyquotes/nightmare.0 b/ponyquotes/nightmare.0 deleted file mode 100644 index 1588fe2..0000000 --- a/ponyquotes/nightmare.0 +++ /dev/null @@ -1 +0,0 @@ -Don't you know who I am? diff --git a/ponyquotes/nightmare.1 b/ponyquotes/nightmare.1 deleted file mode 100644 index b4319ec..0000000 --- a/ponyquotes/nightmare.1 +++ /dev/null @@ -1 +0,0 @@ -Oh, my beloved subjects! diff --git a/ponyquotes/nightmare.2 b/ponyquotes/nightmare.2 deleted file mode 100644 index e022af3..0000000 --- a/ponyquotes/nightmare.2 +++ /dev/null @@ -1 +0,0 @@ -The night will last FOREVER! Muhahaha! diff --git a/ponyquotes/nightmare.3 b/ponyquotes/nightmare.3 deleted file mode 100644 index ef4e471..0000000 --- a/ponyquotes/nightmare.3 +++ /dev/null @@ -1 +0,0 @@ -You little foal! diff --git a/ponyquotes/nightmare.4 b/ponyquotes/nightmare.4 deleted file mode 100644 index aed400a..0000000 --- a/ponyquotes/nightmare.4 +++ /dev/null @@ -1 +0,0 @@ -You're kidding. You're kidding, right? diff --git a/ponyquotes/nightmare.5 b/ponyquotes/nightmare.5 deleted file mode 100644 index 1d24f09..0000000 --- a/ponyquotes/nightmare.5 +++ /dev/null @@ -1 +0,0 @@ -Why, am I not royal enough for you? Don't you know who I am? diff --git a/ponyquotes/photofinish.0 b/ponyquotes/photofinish.0 deleted file mode 100644 index bf9bf62..0000000 --- a/ponyquotes/photofinish.0 +++ /dev/null @@ -1 +0,0 @@ -...It is time to make DE MAGICKS!! diff --git a/ponyquotes/photofinish.1 b/ponyquotes/photofinish.1 deleted file mode 100644 index a3cbcc4..0000000 --- a/ponyquotes/photofinish.1 +++ /dev/null @@ -1 +0,0 @@ -I, Photo Finish... have arrived! diff --git a/ponyquotes/photofinish.2 b/ponyquotes/photofinish.2 deleted file mode 100644 index 814d6f1..0000000 --- a/ponyquotes/photofinish.2 +++ /dev/null @@ -1 +0,0 @@ -I only need to point and shoot, and I capture... DE MAGICKS! diff --git a/ponyquotes/photofinish.3 b/ponyquotes/photofinish.3 deleted file mode 100644 index b0e5b5d..0000000 --- a/ponyquotes/photofinish.3 +++ /dev/null @@ -1 +0,0 @@ -Flootershay! diff --git a/ponyquotes/photofinish.4 b/ponyquotes/photofinish.4 deleted file mode 100644 index 572ea13..0000000 --- a/ponyquotes/photofinish.4 +++ /dev/null @@ -1 +0,0 @@ -Oh, wunderbar! diff --git a/ponyquotes/pinkie.0 b/ponyquotes/pinkie.0 deleted file mode 100644 index a7b29c2..0000000 --- a/ponyquotes/pinkie.0 +++ /dev/null @@ -1,2 +0,0 @@ -Ooh! Ooh! More guessing games! Um... Pokey Smokes! -How about Queen Meanie? No! Black Snooty, Black Snooty! diff --git a/ponyquotes/pinkie.1 b/ponyquotes/pinkie.1 deleted file mode 100644 index 33f8399..0000000 --- a/ponyquotes/pinkie.1 +++ /dev/null @@ -1,2 +0,0 @@ -Don't you worry your pretty little head about mean old Gilda! -Your Aunty Pinkie Pie's got it all taken care of! diff --git a/ponyquotes/pinkie.10 b/ponyquotes/pinkie.10 deleted file mode 100644 index 9654c0c..0000000 --- a/ponyquotes/pinkie.10 +++ /dev/null @@ -1 +0,0 @@ -Too old for free candy?! NEVER! diff --git a/ponyquotes/pinkie.11 b/ponyquotes/pinkie.11 deleted file mode 100644 index aadb94d..0000000 --- a/ponyquotes/pinkie.11 +++ /dev/null @@ -1 +0,0 @@ -I never leave home without my party cannon! diff --git a/ponyquotes/pinkie.12 b/ponyquotes/pinkie.12 deleted file mode 100644 index 1050549..0000000 --- a/ponyquotes/pinkie.12 +++ /dev/null @@ -1 +0,0 @@ -I'm not giving him cake! I'm ASSAULTING him with cake! diff --git a/ponyquotes/pinkie.13 b/ponyquotes/pinkie.13 deleted file mode 100644 index 9570839..0000000 --- a/ponyquotes/pinkie.13 +++ /dev/null @@ -1 +0,0 @@ -Hold on to your hooves, I'm about to be BRILLIANT! diff --git a/ponyquotes/pinkie.14 b/ponyquotes/pinkie.14 deleted file mode 100644 index 4f22a20..0000000 --- a/ponyquotes/pinkie.14 +++ /dev/null @@ -1 +0,0 @@ -APPLEJACK!!! YOU PINKIE PROMISED!!!! diff --git a/ponyquotes/pinkie.15 b/ponyquotes/pinkie.15 deleted file mode 100644 index bb18e3d..0000000 --- a/ponyquotes/pinkie.15 +++ /dev/null @@ -1 +0,0 @@ -Twitchy tail! Twitchy tail!! diff --git a/ponyquotes/pinkie.16 b/ponyquotes/pinkie.16 deleted file mode 100644 index d39c011..0000000 --- a/ponyquotes/pinkie.16 +++ /dev/null @@ -1 +0,0 @@ -When I was a little filly and the sun was going down~ diff --git a/ponyquotes/pinkie.17 b/ponyquotes/pinkie.17 deleted file mode 100644 index f3dbbe5..0000000 --- a/ponyquotes/pinkie.17 +++ /dev/null @@ -1 +0,0 @@ -All you have to do is take a cup of flour and add it to the mix~ diff --git a/ponyquotes/pinkie.18 b/ponyquotes/pinkie.18 deleted file mode 100644 index 2ca9cd1..0000000 --- a/ponyquotes/pinkie.18 +++ /dev/null @@ -1 +0,0 @@ -Oh the Grand Galloping Gala is the best place for me~ diff --git a/ponyquotes/pinkie.19 b/ponyquotes/pinkie.19 deleted file mode 100644 index 466fc20..0000000 --- a/ponyquotes/pinkie.19 +++ /dev/null @@ -1 +0,0 @@ -Ugh, a parasprite! diff --git a/ponyquotes/pinkie.2 b/ponyquotes/pinkie.2 deleted file mode 100644 index ec015bd..0000000 --- a/ponyquotes/pinkie.2 +++ /dev/null @@ -1 +0,0 @@ -You've got a real problem all right, and a banjo is the only answer! diff --git a/ponyquotes/pinkie.20 b/ponyquotes/pinkie.20 deleted file mode 100644 index 717de8a..0000000 --- a/ponyquotes/pinkie.20 +++ /dev/null @@ -1 +0,0 @@ -Cross my heart and hope to fly, stick a cupcake in my eye! diff --git a/ponyquotes/pinkie.21 b/ponyquotes/pinkie.21 deleted file mode 100644 index 1e6e640..0000000 --- a/ponyquotes/pinkie.21 +++ /dev/null @@ -1 +0,0 @@ -Are you loco in the coco? diff --git a/ponyquotes/pinkie.22 b/ponyquotes/pinkie.22 deleted file mode 100644 index 3924bad..0000000 --- a/ponyquotes/pinkie.22 +++ /dev/null @@ -1 +0,0 @@ -Hay, that's what I said! diff --git a/ponyquotes/pinkie.23 b/ponyquotes/pinkie.23 deleted file mode 100644 index c33b5a7..0000000 --- a/ponyquotes/pinkie.23 +++ /dev/null @@ -1 +0,0 @@ -And that's how Equestria was made. diff --git a/ponyquotes/pinkie.24 b/ponyquotes/pinkie.24 deleted file mode 100644 index f7e25aa..0000000 --- a/ponyquotes/pinkie.24 +++ /dev/null @@ -1 +0,0 @@ -I never felt joy like that before! diff --git a/ponyquotes/pinkie.25 b/ponyquotes/pinkie.25 deleted file mode 100644 index dc7901b..0000000 --- a/ponyquotes/pinkie.25 +++ /dev/null @@ -1 +0,0 @@ -Oatmeal, are you crazy? diff --git a/ponyquotes/pinkie.26 b/ponyquotes/pinkie.26 deleted file mode 100644 index 0d337f8..0000000 --- a/ponyquotes/pinkie.26 +++ /dev/null @@ -1 +0,0 @@ -This calls for extreme measures! Pinkie Pie style! diff --git a/ponyquotes/pinkie.27 b/ponyquotes/pinkie.27 deleted file mode 100644 index 171d490..0000000 --- a/ponyquotes/pinkie.27 +++ /dev/null @@ -1 +0,0 @@ -This may look like fun, but it's not! diff --git a/ponyquotes/pinkie.28 b/ponyquotes/pinkie.28 deleted file mode 100644 index ea4873b..0000000 --- a/ponyquotes/pinkie.28 +++ /dev/null @@ -1 +0,0 @@ -You really need to get out more. diff --git a/ponyquotes/pinkie.29 b/ponyquotes/pinkie.29 deleted file mode 100644 index bd89fa4..0000000 --- a/ponyquotes/pinkie.29 +++ /dev/null @@ -1 +0,0 @@ -I don't need my friends... *Twitch* diff --git a/ponyquotes/pinkie.3 b/ponyquotes/pinkie.3 deleted file mode 100644 index 0121eb5..0000000 --- a/ponyquotes/pinkie.3 +++ /dev/null @@ -1 +0,0 @@ -You look like you'd be good at eating cupcakes! diff --git a/ponyquotes/pinkie.30 b/ponyquotes/pinkie.30 deleted file mode 100644 index 78a0976..0000000 --- a/ponyquotes/pinkie.30 +++ /dev/null @@ -1 +0,0 @@ -Thank you for being here today... *Twitch* diff --git a/ponyquotes/pinkie.31 b/ponyquotes/pinkie.31 deleted file mode 100644 index be356a2..0000000 --- a/ponyquotes/pinkie.31 +++ /dev/null @@ -1 +0,0 @@ -Aha! I knew it! diff --git a/ponyquotes/pinkie.32 b/ponyquotes/pinkie.32 deleted file mode 100644 index a04b606..0000000 --- a/ponyquotes/pinkie.32 +++ /dev/null @@ -1 +0,0 @@ -My friends don't like my parties and they don't wanna be my friends anymore... diff --git a/ponyquotes/pinkie.33 b/ponyquotes/pinkie.33 deleted file mode 100644 index abb6b8a..0000000 --- a/ponyquotes/pinkie.33 +++ /dev/null @@ -1 +0,0 @@ -I know how it goes, all right! diff --git a/ponyquotes/pinkie.34 b/ponyquotes/pinkie.34 deleted file mode 100644 index c349f48..0000000 --- a/ponyquotes/pinkie.34 +++ /dev/null @@ -1 +0,0 @@ -I'm just glad none of them ponies showed up! diff --git a/ponyquotes/pinkie.35 b/ponyquotes/pinkie.35 deleted file mode 100644 index ae4da82..0000000 --- a/ponyquotes/pinkie.35 +++ /dev/null @@ -1 +0,0 @@ -Oui! Zhat is correct, madame. diff --git a/ponyquotes/pinkie.36 b/ponyquotes/pinkie.36 deleted file mode 100644 index bcc5542..0000000 --- a/ponyquotes/pinkie.36 +++ /dev/null @@ -1,2 +0,0 @@ -You know what this calls for? -A party! diff --git a/ponyquotes/pinkie.4 b/ponyquotes/pinkie.4 deleted file mode 100644 index 3e7abb7..0000000 --- a/ponyquotes/pinkie.4 +++ /dev/null @@ -1 +0,0 @@ -She'll become a crazy cat lady! diff --git a/ponyquotes/pinkie.5 b/ponyquotes/pinkie.5 deleted file mode 100644 index fef7225..0000000 --- a/ponyquotes/pinkie.5 +++ /dev/null @@ -1 +0,0 @@ -Give her time... diff --git a/ponyquotes/pinkie.6 b/ponyquotes/pinkie.6 deleted file mode 100644 index 59001e5..0000000 --- a/ponyquotes/pinkie.6 +++ /dev/null @@ -1 +0,0 @@ -FOREVER!!! diff --git a/ponyquotes/pinkie.7 b/ponyquotes/pinkie.7 deleted file mode 100644 index 0314d14..0000000 --- a/ponyquotes/pinkie.7 +++ /dev/null @@ -1 +0,0 @@ -Secrets and lies! It's all secrets and lies with those ponies! diff --git a/ponyquotes/pinkie.8 b/ponyquotes/pinkie.8 deleted file mode 100644 index 0c5b97e..0000000 --- a/ponyquotes/pinkie.8 +++ /dev/null @@ -1 +0,0 @@ -Hold on a second! Eternal chaos comes with chocolate rain, guys! Chocolate rain! diff --git a/ponyquotes/pinkie.9 b/ponyquotes/pinkie.9 deleted file mode 100644 index 2cae39a..0000000 --- a/ponyquotes/pinkie.9 +++ /dev/null @@ -1 +0,0 @@ -No I'm not, I'm a chicken! BAGAWK! diff --git a/ponyquotes/pipsqueak.0 b/ponyquotes/pipsqueak.0 deleted file mode 100644 index 22daed4..0000000 --- a/ponyquotes/pipsqueak.0 +++ /dev/null @@ -1 +0,0 @@ -Pipsqueak the pirate, at your service diff --git a/ponyquotes/pipsqueak.2 b/ponyquotes/pipsqueak.2 deleted file mode 100644 index bd76e6a..0000000 --- a/ponyquotes/pipsqueak.2 +++ /dev/null @@ -1 +0,0 @@ -It's really fun! Scary, but fun. diff --git a/ponyquotes/ponies b/ponyquotes/ponies deleted file mode 100644 index c689c1b..0000000 --- a/ponyquotes/ponies +++ /dev/null @@ -1,196 +0,0 @@ -ace -airheart -allie -aloe -angel -applebloom+applebloomdance -applebumpkin -applecore -applefritter -applejack+applejackscarecrow+fillyjack+fillyjacktravel -archer -basil -bastionyorsets+georgewashingtony -berrypunch -bigmac -blaze -blinkie -blossomforth -blueberry -blueberrycake -blueharvest -bonbon+bonbonstand+bonbonlyra+lyrabonbon -boxxy+craftycrate -braeburn -cadance+fillycadance -caesar -candymane -candylicious -caramel -carecake -carrot+carrottop+goldenharvest -celestia+fillistia+fillycelestia+celestiasmall -changeling -cheerilee+cheerilee80 -cerberus -cherryberry -cherrycola -chrysalis+changelingqueen -clockwork+quickfix+epona -cloudkicker -cow -clyde -colton -cottoncloudy -cracky -cupcake -cutiemarkcrusaders -daisy -daringdo -davenport -derpy+derpysit+derpystand+derpystandwing+derpybags+derpycloud+derpysad -diamondmint -diamondtiara -dinky -discord+discordpuppetmaster+discordamused -doctor+doctornohat+timeturner+drhooves -elsie+prettyvision -fancypants -fido -fillydash+fillydashfly -filthyrich -firestreak -flam -fleurdelis+fleurdelishair+fleurdelislay -flim -flowertrio -fluttershy+fluttershygala+fluttershyshy+fluttershystare+fillyshy -forestspirit -frederickhorseshoepin -gilda+gildastand -gingergold -granny+grannychair+grannysleep -gummy -gustavelegrand -hayfever -highscore -hoity -hollydash -horsemd -horte -hughjelly -inky -ironwillwalk -jeffletroski -jesuspezuna -joe+joetuxedo -junebug -laflour -lemonhearts -lightning -lily -lintsalot -lotus+lotusbloosom -luna+lunafly -lyra+lyrasit+harpass+heartstrings -manticore -maredowellfly+maredowellgallop -master -mayor -meadowsong -meliot -minuette+colgate -milkyway -mjolna -mrsparkle+nightlight -mrssparkle+twilightvelvet -nightmare -noi -noteworthy+blues -octavia -opal -orange -owl+owlowiscious -parasprite -peppermoon -perry+perrypierce -persnickety -petunia -philomena -philomenaphoenix -photofinish -pictureperfect -pigpen -pinacolada -pinkamina -pinkie+pinkiecannonfront+pinkiecannon+pinkiebounce+pinkiecannonhappy+pinkiegala+pinkiechicken+pinkiehugfluttershy+pinkiegummy+pinkietongue+pinkiesilly -pinkie+pinkiepartycannon+pinkieprincess+pinkiehugsfluttershy+pinkiewhoops+oinkoinkoink+pinkiewhoopsout+pinkiewhoopseat+fillypinkie+fillypinkiecurly+pinkieoink -pinkie+pinkiegummydisguise+pinkacopter+pinkiefly+pinkieparade+pinkieumbrellahat+pinkieumbrelahatfear -pipsqueak -pokey+pokeypierce -ponet -poppycock -purplehaze -raggedy -rainbow+rainbowdrag+rainbowfly+rainbowgala+rainbowsalute+rainbowsleep+fillydashfly+fillydash+rainbowhurricane+rainbowshadowbolt -rainbowshine -raindrops -rarity+raritydrama+rarityfly+rarityponder+fillyrarity+raritygala+raritycomplaining -raritysdad+magnum -raritysmom+pearl -redheart -rhyme -rocky -rose+roseluck -rover -royalguard -royalnightguard -ruby+berrypinch -sapphire -scootaloo -screwball -screwloose -seaswirl -shadowbolts -shiningarmor+shiningarmorguard+shiningarmorwedding -silverspeed -silverspoon -silverstar -sindy+powderrouge -skyra -snails -snips -snowflake+horsepower -soarin+soarinofficer -soigne -sparkler+amethyststar -spike+spikefloat+spikelove+spikemustache -spitfire -spot -starlight -stella -stevenmagnet+stevenmagnettrue -strongheart -sue+suedance -sunirays -surprise -sweetie+sweatiesing -tank -tenderheart -theodoredonaldkerabatsos -thunderlane -tom -tornadobolt -trixie+trixiestage+trixiestand+lulamoon+trixielulamoon -truffleshuffle -turf -turnip -twilight+twilightcrazyfromball+twilightrage+twilightzero+fillytwilight+twilightthebearded+twilighttime+twilightspike -twist -vinyl+djpon-3 -violet+royalribbon -waltercoltchak -wildfire -winona -woona -zecora+zecorabalance diff --git a/ponyquotes/rainbow.0 b/ponyquotes/rainbow.0 deleted file mode 100644 index 94d47fa..0000000 --- a/ponyquotes/rainbow.0 +++ /dev/null @@ -1 +0,0 @@ -I could clear the sky in 10 seconds flat! diff --git a/ponyquotes/rainbow.1 b/ponyquotes/rainbow.1 deleted file mode 100644 index 4f8cdbb..0000000 --- a/ponyquotes/rainbow.1 +++ /dev/null @@ -1 +0,0 @@ -Are you a SPY? diff --git a/ponyquotes/rainbow.10 b/ponyquotes/rainbow.10 deleted file mode 100644 index eac4d85..0000000 --- a/ponyquotes/rainbow.10 +++ /dev/null @@ -1 +0,0 @@ -I'm just glad I haven't been replaced by a bucket of turnips. diff --git a/ponyquotes/rainbow.11 b/ponyquotes/rainbow.11 deleted file mode 100644 index f84298d..0000000 --- a/ponyquotes/rainbow.11 +++ /dev/null @@ -1 +0,0 @@ -You don't wanna know. diff --git a/ponyquotes/rainbow.12 b/ponyquotes/rainbow.12 deleted file mode 100644 index d4d0052..0000000 --- a/ponyquotes/rainbow.12 +++ /dev/null @@ -1 +0,0 @@ -Sure thing, Spike! diff --git a/ponyquotes/rainbow.13 b/ponyquotes/rainbow.13 deleted file mode 100644 index 0671125..0000000 --- a/ponyquotes/rainbow.13 +++ /dev/null @@ -1 +0,0 @@ -Aww right, Princess! diff --git a/ponyquotes/rainbow.14 b/ponyquotes/rainbow.14 deleted file mode 100644 index b83950e..0000000 --- a/ponyquotes/rainbow.14 +++ /dev/null @@ -1 +0,0 @@ -NO! NOTHING! In the name of Celestia, just sit there and do nothing! diff --git a/ponyquotes/rainbow.15 b/ponyquotes/rainbow.15 deleted file mode 100644 index 87854f4..0000000 --- a/ponyquotes/rainbow.15 +++ /dev/null @@ -1 +0,0 @@ -Pinkie Pie, you are so random! diff --git a/ponyquotes/rainbow.16 b/ponyquotes/rainbow.16 deleted file mode 100644 index 6132737..0000000 --- a/ponyquotes/rainbow.16 +++ /dev/null @@ -1 +0,0 @@ -This really is the BEST DAY EVER! diff --git a/ponyquotes/rainbow.17 b/ponyquotes/rainbow.17 deleted file mode 100644 index 2be4135..0000000 --- a/ponyquotes/rainbow.17 +++ /dev/null @@ -1 +0,0 @@ -I am the iron pony! diff --git a/ponyquotes/rainbow.18 b/ponyquotes/rainbow.18 deleted file mode 100644 index 54beefd..0000000 --- a/ponyquotes/rainbow.18 +++ /dev/null @@ -1 +0,0 @@ -I know, it is gonna be so awesome! diff --git a/ponyquotes/rainbow.19 b/ponyquotes/rainbow.19 deleted file mode 100644 index e389272..0000000 --- a/ponyquotes/rainbow.19 +++ /dev/null @@ -1 +0,0 @@ -Time to take out the adorable trash! diff --git a/ponyquotes/rainbow.2 b/ponyquotes/rainbow.2 deleted file mode 100644 index 66b1850..0000000 --- a/ponyquotes/rainbow.2 +++ /dev/null @@ -1 +0,0 @@ -I love fun things! diff --git a/ponyquotes/rainbow.20 b/ponyquotes/rainbow.20 deleted file mode 100644 index 17d42ea..0000000 --- a/ponyquotes/rainbow.20 +++ /dev/null @@ -1 +0,0 @@ -Who are you calling a chump, chump? diff --git a/ponyquotes/rainbow.21 b/ponyquotes/rainbow.21 deleted file mode 100644 index b3fbc1c..0000000 --- a/ponyquotes/rainbow.21 +++ /dev/null @@ -1 +0,0 @@ -Oh, you wanna do this the hard way? We'll do this the hard way! diff --git a/ponyquotes/rainbow.3 b/ponyquotes/rainbow.3 deleted file mode 100644 index 0892cfa..0000000 --- a/ponyquotes/rainbow.3 +++ /dev/null @@ -1 +0,0 @@ -No, I just want my dress to be cool. diff --git a/ponyquotes/rainbow.4 b/ponyquotes/rainbow.4 deleted file mode 100644 index b7b354c..0000000 --- a/ponyquotes/rainbow.4 +++ /dev/null @@ -1 +0,0 @@ -The color's fine, just make it look cooler. diff --git a/ponyquotes/rainbow.5 b/ponyquotes/rainbow.5 deleted file mode 100644 index c016aad..0000000 --- a/ponyquotes/rainbow.5 +++ /dev/null @@ -1,2 +0,0 @@ -The shape's fine, just make the whole thing ... you know, cooler. -It needs to be about 20% cooler. diff --git a/ponyquotes/rainbow.6 b/ponyquotes/rainbow.6 deleted file mode 100644 index 36449a7..0000000 --- a/ponyquotes/rainbow.6 +++ /dev/null @@ -1 +0,0 @@ -Now that you know the elements of a good cheer, let's hear one! diff --git a/ponyquotes/rainbow.7 b/ponyquotes/rainbow.7 deleted file mode 100644 index 841b110..0000000 --- a/ponyquotes/rainbow.7 +++ /dev/null @@ -1 +0,0 @@ -Ugh. You're going to cheer for me like that? Louder! diff --git a/ponyquotes/rainbow.8 b/ponyquotes/rainbow.8 deleted file mode 100644 index f7d2603..0000000 --- a/ponyquotes/rainbow.8 +++ /dev/null @@ -1 +0,0 @@ -Louder!! diff --git a/ponyquotes/rainbow.9 b/ponyquotes/rainbow.9 deleted file mode 100644 index 6b8a6c0..0000000 --- a/ponyquotes/rainbow.9 +++ /dev/null @@ -1 +0,0 @@ -LOUDER!!! diff --git a/ponyquotes/rarity.0 b/ponyquotes/rarity.0 deleted file mode 100644 index f8d4e83..0000000 --- a/ponyquotes/rarity.0 +++ /dev/null @@ -1 +0,0 @@ -I don't have time for some silly scavenger hunt! I've got a real problem... diff --git a/ponyquotes/rarity.1 b/ponyquotes/rarity.1 deleted file mode 100644 index 9fc4a32..0000000 --- a/ponyquotes/rarity.1 +++ /dev/null @@ -1 +0,0 @@ -Aren't you going to tell me to change something too? diff --git a/ponyquotes/rarity.10 b/ponyquotes/rarity.10 deleted file mode 100644 index 74bc560..0000000 --- a/ponyquotes/rarity.10 +++ /dev/null @@ -1 +0,0 @@ -Out of all things that could happen, this is THE WORST POSSIBLE THING! diff --git a/ponyquotes/rarity.11 b/ponyquotes/rarity.11 deleted file mode 100644 index 950fe9d..0000000 --- a/ponyquotes/rarity.11 +++ /dev/null @@ -1 +0,0 @@ -Let me guess. Applesauce? diff --git a/ponyquotes/rarity.12 b/ponyquotes/rarity.12 deleted file mode 100644 index 17501c4..0000000 --- a/ponyquotes/rarity.12 +++ /dev/null @@ -1 +0,0 @@ -Watch the mane, please. diff --git a/ponyquotes/rarity.13 b/ponyquotes/rarity.13 deleted file mode 100644 index 35acf4e..0000000 --- a/ponyquotes/rarity.13 +++ /dev/null @@ -1 +0,0 @@ -Thread by thread, stitching it together~ diff --git a/ponyquotes/rarity.14 b/ponyquotes/rarity.14 deleted file mode 100644 index 140612f..0000000 --- a/ponyquotes/rarity.14 +++ /dev/null @@ -1 +0,0 @@ -Stay back, and my dress doesn't get hurt! diff --git a/ponyquotes/rarity.15 b/ponyquotes/rarity.15 deleted file mode 100644 index 0103cca..0000000 --- a/ponyquotes/rarity.15 +++ /dev/null @@ -1 +0,0 @@ -Afraid to get dirty? diff --git a/ponyquotes/rarity.16 b/ponyquotes/rarity.16 deleted file mode 100644 index 09cf3a4..0000000 --- a/ponyquotes/rarity.16 +++ /dev/null @@ -1 +0,0 @@ -I simply cannot let such a crime against fabulosity go uncorrected! diff --git a/ponyquotes/rarity.17 b/ponyquotes/rarity.17 deleted file mode 100644 index 1e08d9f..0000000 --- a/ponyquotes/rarity.17 +++ /dev/null @@ -1 +0,0 @@ -Gently, please! diff --git a/ponyquotes/rarity.18 b/ponyquotes/rarity.18 deleted file mode 100644 index 62132d0..0000000 --- a/ponyquotes/rarity.18 +++ /dev/null @@ -1 +0,0 @@ -How can you be so insensitive? diff --git a/ponyquotes/rarity.19 b/ponyquotes/rarity.19 deleted file mode 100644 index 9fdab33..0000000 --- a/ponyquotes/rarity.19 +++ /dev/null @@ -1 +0,0 @@ -I'm so pathetic! diff --git a/ponyquotes/rarity.2 b/ponyquotes/rarity.2 deleted file mode 100644 index a283383..0000000 --- a/ponyquotes/rarity.2 +++ /dev/null @@ -1 +0,0 @@ -Do you not like the colour? diff --git a/ponyquotes/rarity.20 b/ponyquotes/rarity.20 deleted file mode 100644 index 85f5ac1..0000000 --- a/ponyquotes/rarity.20 +++ /dev/null @@ -1 +0,0 @@ -Ideaaaaa! diff --git a/ponyquotes/rarity.21 b/ponyquotes/rarity.21 deleted file mode 100644 index 9a71b46..0000000 --- a/ponyquotes/rarity.21 +++ /dev/null @@ -1 +0,0 @@ -MINE!!! diff --git a/ponyquotes/rarity.22 b/ponyquotes/rarity.22 deleted file mode 100644 index b154083..0000000 --- a/ponyquotes/rarity.22 +++ /dev/null @@ -1 +0,0 @@ -Oh, it is ON! diff --git a/ponyquotes/rarity.23 b/ponyquotes/rarity.23 deleted file mode 100644 index f821785..0000000 --- a/ponyquotes/rarity.23 +++ /dev/null @@ -1 +0,0 @@ -Try it, punk! diff --git a/ponyquotes/rarity.24 b/ponyquotes/rarity.24 deleted file mode 100644 index 5ae215b..0000000 --- a/ponyquotes/rarity.24 +++ /dev/null @@ -1 +0,0 @@ -Take that you ruffian! diff --git a/ponyquotes/rarity.25 b/ponyquotes/rarity.25 deleted file mode 100644 index cf58fe7..0000000 --- a/ponyquotes/rarity.25 +++ /dev/null @@ -1 +0,0 @@ -Some of us DO have standards! diff --git a/ponyquotes/rarity.3 b/ponyquotes/rarity.3 deleted file mode 100644 index 35b7560..0000000 --- a/ponyquotes/rarity.3 +++ /dev/null @@ -1 +0,0 @@ -Do you not like the shape? diff --git a/ponyquotes/rarity.4 b/ponyquotes/rarity.4 deleted file mode 100644 index 627ac2c..0000000 --- a/ponyquotes/rarity.4 +++ /dev/null @@ -1,5 +0,0 @@ -Whining? I am not ‘whining’. I am complaining. Do you want to hear ‘whining’? -(whines obnoxiously) This is whining! Ooohhhh! This harness is too tight! -It's going to chafe! Can't you loosen it?! OH! It hurts and it's so rusty! -Why didn't you clean it first?! It's gonna leave a stain, and the wagon's -getting heavy! Why do I have to pull it?! diff --git a/ponyquotes/rarity.5 b/ponyquotes/rarity.5 deleted file mode 100644 index 26ce196..0000000 --- a/ponyquotes/rarity.5 +++ /dev/null @@ -1 +0,0 @@ -BUT I THOUGHT YOU WAAANTED WHINING!!! diff --git a/ponyquotes/rarity.6 b/ponyquotes/rarity.6 deleted file mode 100644 index 8e43799..0000000 --- a/ponyquotes/rarity.6 +++ /dev/null @@ -1 +0,0 @@ -Heavens, no! We're getting dressed! diff --git a/ponyquotes/rarity.7 b/ponyquotes/rarity.7 deleted file mode 100644 index 6a0b629..0000000 --- a/ponyquotes/rarity.7 +++ /dev/null @@ -1 +0,0 @@ -Oh, Fluttershy. Would you be a dear and FLY FASTER, PLEASE? diff --git a/ponyquotes/rarity.8 b/ponyquotes/rarity.8 deleted file mode 100644 index 41bd1e8..0000000 --- a/ponyquotes/rarity.8 +++ /dev/null @@ -1 +0,0 @@ -How in Equestria can she think that tiny patch of cloud is Cloudsdale? diff --git a/ponyquotes/rarity.9 b/ponyquotes/rarity.9 deleted file mode 100644 index 29fcd22..0000000 --- a/ponyquotes/rarity.9 +++ /dev/null @@ -1 +0,0 @@ -...I thought we agreed never to speak of that again. diff --git a/ponyquotes/rose.0 b/ponyquotes/rose.0 deleted file mode 100644 index cb35efc..0000000 --- a/ponyquotes/rose.0 +++ /dev/null @@ -1 +0,0 @@ -The horror, the horror! diff --git a/ponyquotes/scootaloo.0 b/ponyquotes/scootaloo.0 deleted file mode 100644 index 04eda0a..0000000 --- a/ponyquotes/scootaloo.0 +++ /dev/null @@ -1 +0,0 @@ -The possibilities are, like, endless! diff --git a/ponyquotes/scootaloo.1 b/ponyquotes/scootaloo.1 deleted file mode 100644 index 1127c86..0000000 --- a/ponyquotes/scootaloo.1 +++ /dev/null @@ -1 +0,0 @@ -I'll do whatever you want, Rainbow Dash! diff --git a/ponyquotes/scootaloo.2 b/ponyquotes/scootaloo.2 deleted file mode 100644 index f9e9f99..0000000 --- a/ponyquotes/scootaloo.2 +++ /dev/null @@ -1 +0,0 @@ -I'am liking this idea. diff --git a/ponyquotes/scootaloo.3 b/ponyquotes/scootaloo.3 deleted file mode 100644 index 77083c7..0000000 --- a/ponyquotes/scootaloo.3 +++ /dev/null @@ -1 +0,0 @@ -You've got a problem with blank flanks? diff --git a/ponyquotes/scootaloo.4 b/ponyquotes/scootaloo.4 deleted file mode 100644 index 1dc554c..0000000 --- a/ponyquotes/scootaloo.4 +++ /dev/null @@ -1 +0,0 @@ -That is not how you call a chicken. diff --git a/ponyquotes/scootaloo.5 b/ponyquotes/scootaloo.5 deleted file mode 100644 index a446381..0000000 --- a/ponyquotes/scootaloo.5 +++ /dev/null @@ -1 +0,0 @@ -TLC as in Tender Loving Care or Totally Lost Cause? diff --git a/ponyquotes/scootaloo.6 b/ponyquotes/scootaloo.6 deleted file mode 100644 index a02f417..0000000 --- a/ponyquotes/scootaloo.6 +++ /dev/null @@ -1 +0,0 @@ -We were making a table? diff --git a/ponyquotes/scootaloo.7 b/ponyquotes/scootaloo.7 deleted file mode 100644 index 43e020d..0000000 --- a/ponyquotes/scootaloo.7 +++ /dev/null @@ -1 +0,0 @@ -It's no use. No matter what we try we always end up without our cutie marks; and surprisingly often covered in tree sap. diff --git a/ponyquotes/soarin.0 b/ponyquotes/soarin.0 deleted file mode 100644 index 65caeab..0000000 --- a/ponyquotes/soarin.0 +++ /dev/null @@ -1 +0,0 @@ -As a horse. diff --git a/ponyquotes/soarin.1 b/ponyquotes/soarin.1 deleted file mode 100644 index c0de8df..0000000 --- a/ponyquotes/soarin.1 +++ /dev/null @@ -1 +0,0 @@ -My pie! diff --git a/ponyquotes/soarin.2 b/ponyquotes/soarin.2 deleted file mode 100644 index a088318..0000000 --- a/ponyquotes/soarin.2 +++ /dev/null @@ -1 +0,0 @@ -You saved it! diff --git a/ponyquotes/spike.0 b/ponyquotes/spike.0 deleted file mode 100644 index af9cd04..0000000 --- a/ponyquotes/spike.0 +++ /dev/null @@ -1 +0,0 @@ -Is it... ZOMBIES?! diff --git a/ponyquotes/spike.1 b/ponyquotes/spike.1 deleted file mode 100644 index c5a95da..0000000 --- a/ponyquotes/spike.1 +++ /dev/null @@ -1 +0,0 @@ -Ugh ... come on, you guys! Let me in! diff --git a/ponyquotes/spike.2 b/ponyquotes/spike.2 deleted file mode 100644 index dcd9646..0000000 --- a/ponyquotes/spike.2 +++ /dev/null @@ -1 +0,0 @@ -Do I have to? diff --git a/ponyquotes/spike.3 b/ponyquotes/spike.3 deleted file mode 100644 index 5a18e6a..0000000 --- a/ponyquotes/spike.3 +++ /dev/null @@ -1 +0,0 @@ -Don't tell anypony, but I have a crush on... Rarity! diff --git a/ponyquotes/spike.4 b/ponyquotes/spike.4 deleted file mode 100644 index eb687b8..0000000 --- a/ponyquotes/spike.4 +++ /dev/null @@ -1 +0,0 @@ -Another donut! Extra sprinkles! diff --git a/ponyquotes/spike.5 b/ponyquotes/spike.5 deleted file mode 100644 index ebddb32..0000000 --- a/ponyquotes/spike.5 +++ /dev/null @@ -1 +0,0 @@ -Can you do that? Can you explode twice? diff --git a/ponyquotes/spike.6 b/ponyquotes/spike.6 deleted file mode 100644 index c98b9af..0000000 --- a/ponyquotes/spike.6 +++ /dev/null @@ -1 +0,0 @@ -Whoa! Dude, that's creepy. diff --git a/ponyquotes/spike.7 b/ponyquotes/spike.7 deleted file mode 100644 index d768642..0000000 --- a/ponyquotes/spike.7 +++ /dev/null @@ -1 +0,0 @@ -Hey! Say it, don't spray it. diff --git a/ponyquotes/sweetie.0 b/ponyquotes/sweetie.0 deleted file mode 100644 index b09aac3..0000000 --- a/ponyquotes/sweetie.0 +++ /dev/null @@ -1 +0,0 @@ -That doesn't look like a table... diff --git a/ponyquotes/sweetie.1 b/ponyquotes/sweetie.1 deleted file mode 100644 index 46623c9..0000000 --- a/ponyquotes/sweetie.1 +++ /dev/null @@ -1 +0,0 @@ -I really like her... mane? diff --git a/ponyquotes/sweetie.2 b/ponyquotes/sweetie.2 deleted file mode 100644 index 7dc4c66..0000000 --- a/ponyquotes/sweetie.2 +++ /dev/null @@ -1 +0,0 @@ -Nope. Toast! diff --git a/ponyquotes/sweetie.3 b/ponyquotes/sweetie.3 deleted file mode 100644 index 27a4932..0000000 --- a/ponyquotes/sweetie.3 +++ /dev/null @@ -1 +0,0 @@ -I know this one! diff --git a/ponyquotes/sweetie.4 b/ponyquotes/sweetie.4 deleted file mode 100644 index a7bc3e7..0000000 --- a/ponyquotes/sweetie.4 +++ /dev/null @@ -1 +0,0 @@ -Oh my, sounds serious. diff --git a/ponyquotes/sweetie.5 b/ponyquotes/sweetie.5 deleted file mode 100644 index 5e96c74..0000000 --- a/ponyquotes/sweetie.5 +++ /dev/null @@ -1 +0,0 @@ -We are the Cutie Mark Crusaders! diff --git a/ponyquotes/sweetie.6 b/ponyquotes/sweetie.6 deleted file mode 100644 index 5409ee2..0000000 --- a/ponyquotes/sweetie.6 +++ /dev/null @@ -1 +0,0 @@ -We could form our own secret society! diff --git a/ponyquotes/trixie.0 b/ponyquotes/trixie.0 deleted file mode 100644 index 5d5769d..0000000 --- a/ponyquotes/trixie.0 +++ /dev/null @@ -1 +0,0 @@ -Anything you can do, I can do better. diff --git a/ponyquotes/trixie.1 b/ponyquotes/trixie.1 deleted file mode 100644 index 49d29b5..0000000 --- a/ponyquotes/trixie.1 +++ /dev/null @@ -1 +0,0 @@ -It's true my enthusiastic little admirers. diff --git a/ponyquotes/trixie.2 b/ponyquotes/trixie.2 deleted file mode 100644 index 8489cdf..0000000 --- a/ponyquotes/trixie.2 +++ /dev/null @@ -1 +0,0 @@ -Well, come on. Show Trixie what you've got! diff --git a/ponyquotes/trixie.3 b/ponyquotes/trixie.3 deleted file mode 100644 index af6b609..0000000 --- a/ponyquotes/trixie.3 +++ /dev/null @@ -1 +0,0 @@ -The Great and Powerful Trixie! diff --git a/ponyquotes/trixie.4 b/ponyquotes/trixie.4 deleted file mode 100644 index ebd5c55..0000000 --- a/ponyquotes/trixie.4 +++ /dev/null @@ -1 +0,0 @@ -Was there ever any doubt? diff --git a/ponyquotes/trixie.5 b/ponyquotes/trixie.5 deleted file mode 100644 index 34d0103..0000000 --- a/ponyquotes/trixie.5 +++ /dev/null @@ -1 +0,0 @@ -Watch in awe as Trixies performs the most amazing feat for magic every witnessed by pony eyes! diff --git a/ponyquotes/trixie.6 b/ponyquotes/trixie.6 deleted file mode 100644 index 01f81bf..0000000 --- a/ponyquotes/trixie.6 +++ /dev/null @@ -1 +0,0 @@ -Well, well, well. It seems we have some “neigh-sayers” in the audience. diff --git a/ponyquotes/twilight.0 b/ponyquotes/twilight.0 deleted file mode 100644 index 5d95e70..0000000 --- a/ponyquotes/twilight.0 +++ /dev/null @@ -1 +0,0 @@ -All the ponies in this town are CRAZY! diff --git a/ponyquotes/twilight.1 b/ponyquotes/twilight.1 deleted file mode 100644 index d8438f7..0000000 --- a/ponyquotes/twilight.1 +++ /dev/null @@ -1 +0,0 @@ -Um, not very likely. diff --git a/ponyquotes/twilight.10 b/ponyquotes/twilight.10 deleted file mode 100644 index 364903a..0000000 --- a/ponyquotes/twilight.10 +++ /dev/null @@ -1,3 +0,0 @@ -Rainbow must be angry with Applejack. -She must hate her guts. -Ohh ... how wonderful! diff --git a/ponyquotes/twilight.11 b/ponyquotes/twilight.11 deleted file mode 100644 index ed02231..0000000 --- a/ponyquotes/twilight.11 +++ /dev/null @@ -1 +0,0 @@ -Cross my heart and hope to fly, stick a cupcake in my ... OW! diff --git a/ponyquotes/twilight.12 b/ponyquotes/twilight.12 deleted file mode 100644 index 438af60..0000000 --- a/ponyquotes/twilight.12 +++ /dev/null @@ -1 +0,0 @@ -Yesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes! diff --git a/ponyquotes/twilight.13 b/ponyquotes/twilight.13 deleted file mode 100644 index 92c88db..0000000 --- a/ponyquotes/twilight.13 +++ /dev/null @@ -1 +0,0 @@ -Your faithful student, Twilight Sparkle. diff --git a/ponyquotes/twilight.14 b/ponyquotes/twilight.14 deleted file mode 100644 index 18c2310..0000000 --- a/ponyquotes/twilight.14 +++ /dev/null @@ -1 +0,0 @@ -Please don't hate me. diff --git a/ponyquotes/twilight.15 b/ponyquotes/twilight.15 deleted file mode 100644 index 9ae10f3..0000000 --- a/ponyquotes/twilight.15 +++ /dev/null @@ -1 +0,0 @@ -Pardon me, Princess. diff --git a/ponyquotes/twilight.16 b/ponyquotes/twilight.16 deleted file mode 100644 index 90629a2..0000000 --- a/ponyquotes/twilight.16 +++ /dev/null @@ -1 +0,0 @@ -You told me it was all an old pony tale. diff --git a/ponyquotes/twilight.17 b/ponyquotes/twilight.17 deleted file mode 100644 index 0a273e9..0000000 --- a/ponyquotes/twilight.17 +++ /dev/null @@ -1 +0,0 @@ -Look out, here comes Tom! diff --git a/ponyquotes/twilight.18 b/ponyquotes/twilight.18 deleted file mode 100644 index 2fab25e..0000000 --- a/ponyquotes/twilight.18 +++ /dev/null @@ -1 +0,0 @@ -It's the perfect plan. diff --git a/ponyquotes/twilight.19 b/ponyquotes/twilight.19 deleted file mode 100644 index b969d79..0000000 --- a/ponyquotes/twilight.19 +++ /dev/null @@ -1 +0,0 @@ -We will do everything by the book! diff --git a/ponyquotes/twilight.2 b/ponyquotes/twilight.2 deleted file mode 100644 index d6bb2d4..0000000 --- a/ponyquotes/twilight.2 +++ /dev/null @@ -1,5 +0,0 @@ -Scarf? Check. -Saddle? Check. -Boots? Check. -‘Spike refusing to get up and go back to sleep’? Check. -It's a good thing I'm so organised. I'm ready! diff --git a/ponyquotes/twilight.20 b/ponyquotes/twilight.20 deleted file mode 100644 index 7ec946a..0000000 --- a/ponyquotes/twilight.20 +++ /dev/null @@ -1 +0,0 @@ -Ooh! Doesn't that hurt? diff --git a/ponyquotes/twilight.21 b/ponyquotes/twilight.21 deleted file mode 100644 index 69dcd1d..0000000 --- a/ponyquotes/twilight.21 +++ /dev/null @@ -1 +0,0 @@ -Are you crazy? diff --git a/ponyquotes/twilight.22 b/ponyquotes/twilight.22 deleted file mode 100644 index ec3b22f..0000000 --- a/ponyquotes/twilight.22 +++ /dev/null @@ -1 +0,0 @@ -I uh, I think I hear my laundry calling! Sorry, gotta go. diff --git a/ponyquotes/twilight.3 b/ponyquotes/twilight.3 deleted file mode 100644 index 8750017..0000000 --- a/ponyquotes/twilight.3 +++ /dev/null @@ -1 +0,0 @@ -She only has one cat. diff --git a/ponyquotes/twilight.4 b/ponyquotes/twilight.4 deleted file mode 100644 index 880ec3e..0000000 --- a/ponyquotes/twilight.4 +++ /dev/null @@ -1 +0,0 @@ -I never thought it would happen. My friends ... have turned into complete JERKS! diff --git a/ponyquotes/twilight.5 b/ponyquotes/twilight.5 deleted file mode 100644 index d83a6e4..0000000 --- a/ponyquotes/twilight.5 +++ /dev/null @@ -1 +0,0 @@ -If you can't catch her, Discord wins! diff --git a/ponyquotes/twilight.6 b/ponyquotes/twilight.6 deleted file mode 100644 index 6e5463c..0000000 --- a/ponyquotes/twilight.6 +++ /dev/null @@ -1 +0,0 @@ -Get back! All of you! This is my book. And I'm going to READ IT! diff --git a/ponyquotes/twilight.7 b/ponyquotes/twilight.7 deleted file mode 100644 index a5526ce..0000000 --- a/ponyquotes/twilight.7 +++ /dev/null @@ -1 +0,0 @@ -Pinkie Pie, you're a genius! diff --git a/ponyquotes/twilight.8 b/ponyquotes/twilight.8 deleted file mode 100644 index ae82b9f..0000000 --- a/ponyquotes/twilight.8 +++ /dev/null @@ -1 +0,0 @@ -I'm going to do what I do best: lecture her! diff --git a/ponyquotes/twilight.9 b/ponyquotes/twilight.9 deleted file mode 100644 index 364f9d3..0000000 --- a/ponyquotes/twilight.9 +++ /dev/null @@ -1 +0,0 @@ -Pinkie Pie, aren't you a little old for this? diff --git a/ponyquotes/zecora.0 b/ponyquotes/zecora.0 deleted file mode 100644 index 24c23bb..0000000 --- a/ponyquotes/zecora.0 +++ /dev/null @@ -1 +0,0 @@ -Beware! Beware you pony folk! Those leaves of blue are not a joke! diff --git a/ponyquotes/zecora.1 b/ponyquotes/zecora.1 deleted file mode 100644 index 82ea422..0000000 --- a/ponyquotes/zecora.1 +++ /dev/null @@ -1 +0,0 @@ -Have you gone mad? diff --git a/ponyquotes/zecora.2 b/ponyquotes/zecora.2 deleted file mode 100644 index 894d6c8..0000000 --- a/ponyquotes/zecora.2 +++ /dev/null @@ -1 +0,0 @@ -Is that a parasprite before my eyes? diff --git a/ponyquotes/zecora.3 b/ponyquotes/zecora.3 deleted file mode 100644 index 0465f7a..0000000 --- a/ponyquotes/zecora.3 +++ /dev/null @@ -1 +0,0 @@ -Your actions will make my anger explode! diff --git a/ponyquotes/zecora.4 b/ponyquotes/zecora.4 deleted file mode 100644 index 059e881..0000000 --- a/ponyquotes/zecora.4 +++ /dev/null @@ -1 +0,0 @@ -My Lair! My Lair! diff --git a/ponyquotes/zecora.5 b/ponyquotes/zecora.5 deleted file mode 100644 index f0723ed..0000000 --- a/ponyquotes/zecora.5 +++ /dev/null @@ -1,3 +0,0 @@ -Ponies, what is this... -No, you know not what you do. -You've gone and spilled my precious brew. diff --git a/ponyquotes/zecora.6 b/ponyquotes/zecora.6 deleted file mode 100644 index 2da018c..0000000 --- a/ponyquotes/zecora.6 +++ /dev/null @@ -1,3 +0,0 @@ -How dare you! -You destroy my home, destroy my works, -an then accuse me, of being a jerk? diff --git a/ponysay-old.py b/ponysay-old.py new file mode 100755 index 0000000..5f77ed0 --- /dev/null +++ b/ponysay-old.py @@ -0,0 +1,2458 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +''' +ponysay.py - Ponysay, cowsay reimplementation for ponies +Copyright (C) 2012 Erkin Batu Altunbaş et al. + +This program is free software. It comes without any warranty, to +the extent permitted by applicable law. You can redistribute it +and/or modify it under the terms of the Do What The Fuck You Want +To Public License, Version 2, as published by Sam Hocevar. See +http://sam.zoy.org/wtfpl/COPYING for more details. + + +Authors of ponysay.py: + + Erkin Batu Altunbaş: Project leader, helped write the first implementation + Mattias "maandree" Andrée: Major contributor of both implementions + Elis "etu" Axelsson: Major contributor of current implemention and patcher of the first implementation + Sven-Hendrik "svenstaro" Haase: Major contributor of the first implementation + Jan Alexander "heftig" Steffens: Major contributor of the first implementation + Kyah "L-four" Rindlisbacher: Patched the first implementation +''' + +import os +import shutil +import sys +import random +from subprocess import Popen, PIPE + + + +''' +The version of ponysay +''' +VERSION = 'dev' # this line should not be edited, it is fixed by the build system + + + +''' +Hack to enforce UTF-8 in output (in the future, if you see anypony not using utf-8 in +programs by default, report them to Princess Celestia so she can banish them to the moon) + +@param text:str The text to print (empty string is default) +@param end:str The appendix to the text to print (line breaking is default) +''' +def print(text = '', end = '\n'): + sys.stdout.buffer.write((str(text) + end).encode('utf-8')) + +''' +stderr equivalent to print() + +@param text:str The text to print (empty string is default) +@param end:str The appendix to the text to print (line breaking is default) +''' +def printerr(text = '', end = '\n'): + sys.stderr.buffer.write((str(text) + end).encode('utf-8')) + +fd3 = None +''' +/proc/self/fd/3 equivalent to print() + +@param text:str The text to print (empty string is default) +@param end:str The appendix to the text to print (line breaking is default) +''' +def printinfo(text = '', end = '\n'): + global fd3 + if os.path.exists('/proc/self/fd/3'): + if fd3 is None: + fd3 = os.fdopen(3, 'w') + fd3.write(str(text) + end) + + +''' +Checks whether a text ends with a specific text, but has more + +@param text The text to test +@param ending The desired end of the text +@return :bool The result of the test +''' +def endswith(text, ending): + return text.endswith(ending) and not (text == ending) + + + +''' +This is the mane class of ponysay +''' +class Ponysay(): + ''' + Starts the part of the program the arguments indicate + + @param args:ArgParser Parsed command line arguments + ''' + def __init__(self, args): + if (args.argcount == 0) and not pipelinein: + args.help() + exit(254) + return + + ## Modifyable global variables + global linuxvt + global usekms + global mode + global ponydirs + global extraponydirs + + ## Emulate termial capabilities + if args.opts['-X'] is not None: (linuxvt, usekms) = (False, False) + elif args.opts['-V'] is not None: (linuxvt, usekms) = (True, False) + elif args.opts['-K'] is not None: (linuxvt, usekms) = (True, True) + ponydirs = vtponydirs if linuxvt and not usekms else xponydirs + extraponydirs = extravtponydirs if linuxvt and not usekms else extraxponydirs + + ## Variadic variants of -f, -F and -q + if args.opts['--f'] is not None: + if args.opts['-f'] is not None: args.opts['-f'] += args.opts['--f'] + else: args.opts['-f'] = args.opts['--f'] + if args.opts['--F'] is not None: + if args.opts['-F'] is not None: args.opts['-F'] += args.opts['--F'] + else: args.opts['-F'] = args.opts['--F'] + if args.opts['--q'] is not None: + if args.opts['-q'] is not None: args.opts['-q'] += args.opts['--q'] + else: args.opts['-q'] = args.opts['--q'] + + ## Run modes + if args.opts['-h'] is not None: args.help() + elif args.opts['--quoters'] is not None: self.quoters() + elif args.opts['--onelist'] is not None: self.onelist() + elif args.opts['-v'] is not None: self.version() + elif args.opts['-l'] is not None: self.list() + elif args.opts['-L'] is not None: self.linklist() + elif args.opts['-B'] is not None: self.balloonlist() + elif args.opts['++onelist'] is not None: self.__extraponies(); self.onelist() + elif args.opts['+l'] is not None: self.__extraponies(); self.list() + elif args.opts['+L'] is not None: self.__extraponies(); self.linklist() + elif args.opts['-A'] is not None: self.list(); self.__extraponies(); self.list() + elif args.opts['+A'] is not None: self.linklist(); self.__extraponies(); self.linklist() + else: + ## Colouring features + if args.opts['--colour-pony'] is not None: + mode += '\033[' + ';'.join(args.opts['--colour-pony']) + 'm' + else: + mode += '\033[0m' + if args.opts['+c'] is not None: + if args.opts['--colour-msg'] is None: args.opts['--colour-msg'] = args.opts['+c'] + if args.opts['--colour-link'] is None: args.opts['--colour-link'] = args.opts['+c'] + if args.opts['--colour-bubble'] is None: args.opts['--colour-bubble'] = args.opts['+c'] + + ## Other extra features + self.__extraponies(args) + self.__bestpony(args) + self.__ucsremap(args) + if args.opts['-o'] is not None: + mode += '$/= $$\\= $' + args.message = '' + + ## The stuff + if args.opts['-q'] is not None: + warn = (args.opts['-f'] is not None) or (args.opts['-F'] is not None) + if (len(args.opts['-q']) == 1) and ((args.opts['-q'][0] == '-f') or (args.opts['-q'][0] == '-F')): + warn = True + if args.opts['-q'][0] == '-f': + args.opts['-q'] = args.files + if args.opts['-f'] is not None: + args.opts['-q'] += args.opts['-f'] + self.quote(args) + if warn: + printerr('-q cannot be used at the same time as -f or -F.') + elif not unrecognised: + self.print_pony(args) + else: + args.help() + exit(255) + return + + + ############################################## + ## Methods that run before the mane methods ## + ############################################## + + ''' + Use extra ponies + + @param args:ArgParser Parsed command line arguments, may be `None` + ''' + def __extraponies(self, args = None): + ## If extraponies are used, change ponydir to extraponydir + if args is None: + ponydirs[:] = extraponydirs + elif args.opts['-F'] is not None: + args.opts['-f'] = args.opts['-F'] + ponydirs[:] = extraponydirs + + + ''' + Use best.pony if nothing else is set + + @param args:ArgParser Parsed command line arguments + ''' + def __bestpony(self, args): + ## Set best.pony as the pony to display if none is selected + if (args.opts['-f'] is None) or (args.opts['-q'] is None) or (len(args.opts['-q']) == 0): + for ponydir in ponydirs: + if os.path.isfile(ponydir + 'best.pony') or os.path.islink(ponydir + 'best.pony'): + pony = os.path.realpath(ponydir + 'best.pony') # Canonical path + args.opts['-f' if args.opts['-q'] is None else '-q'] = [pony] + break + + + ''' + Apply pony name remapping to args according to UCS settings + + @param args:ArgParser Parsed command line arguments + ''' + def __ucsremap(self, args): + ## Read UCS configurations + env_ucs = os.environ['PONYSAY_UCS_ME'] if 'PONYSAY_UCS_ME' in os.environ else '' + ucs_conf = 0 + if env_ucs in ('yes', 'y', '1'): ucs_conf = 1 + elif env_ucs in ('harder', 'h', '2'): ucs_conf = 2 + + ## Stop UCS is not used + if ucs_conf == 0: + return + + ## Read all lines in all UCS → ASCII map files + maplines = [] + for ucsmap in ucsmaps: + if os.path.isfile(ucsmap): + with open(ucsmap, 'rb') as mapfile: + maplines += [line.replace('\n', '') for line in mapfile.read().decode('utf8', 'replace').split('\n')] + + ## Create UCS → ASCII mapping from read lines + map = {} + stripset = ' \t' # must be string, wtf! and way doesn't python's doc say so + for line in maplines: + if (len(line) > 0) and not (line[0] == '#'): + s = line.index('→') + ucs = line[:s] .strip(stripset) + ascii = line[s + 1:].strip(stripset) + map[ucs] = ascii + + ## Apply UCS → ASCII mapping to -f and -q arguments + for flag in ('-f', '-q'): + if args.opts[flag] is not None: + for i in range(0, len(args.opts[flag])): + if args.opts[flag][i] in map: + args.opts[flag][i] = map[args.opts[flag][i]] + + + ####################### + ## Auxiliary methods ## + ####################### + + ''' + Apply UCS:ise pony names according to UCS settings + + @param ponies:list List of all ponies (of interrest) + @param links:map Map to fill with simulated symlink ponies, may be `None` + ''' + def __ucsise(self, ponies, links = None): + ## Read UCS configurations + env_ucs = os.environ['PONYSAY_UCS_ME'] if 'PONYSAY_UCS_ME' in os.environ else '' + ucs_conf = 0 + if env_ucs in ('yes', 'y', '1'): ucs_conf = 1 + elif env_ucs in ('harder', 'h', '2'): ucs_conf = 2 + + ## Stop UCS is not used + if ucs_conf == 0: + return + + ## Read all lines in all UCS → ASCII map files + maplines = [] + for ucsmap in ucsmaps: + if os.path.isfile(ucsmap): + with open(ucsmap, 'rb') as mapfile: + maplines += [line.replace('\n', '') for line in mapfile.read().decode('utf8', 'replace').split('\n')] + + ## Create UCS → ASCII mapping from read lines + map = {} + stripset = ' \t' # must be string, wtf! and way doesn't python's doc say so + for line in maplines: + if not line.startswith('#'): + s = line.index('→') + ucs = line[:s] .strip(stripset) + ascii = line[s + 1:].strip(stripset) + map[ascii] = ucs + + ## Apply UCS → ACII mapping to ponies, by alias if weak settings + if ucs_conf == 1: + for pony in ponies: + if pony in map: + ponies.append(map[pony]) + if links is not None: + links[map[pony]] = pony + else: + for j in range(0, len(ponies)): + if ponies[j] in map: + ponies[j] = map[ponies[j]] + + + ''' + Returns one file with full path, names is filter for names, also accepts filepaths + + @param names:list Ponies to choose from, may be `None` + @param alt:bool For method internal use... + @return :str The file name of a pony + ''' + def __getponypath(self, names = None, alt = False): + ponies = {} + + ## List all pony files, without the .pony ending + for ponydir in ponydirs: + for ponyfile in os.listdir(ponydir): + if endswith(ponyfile, ".pony"): + pony = ponyfile[:-5] + if pony not in ponies: + ponies[pony] = ponydir + ponyfile + + ## Support for explicit pony file names + if names is not None: + for name in names: + if os.path.exists(name): + ponies[name] = name + + ## If there is not select ponies, choose all of them + if (names is None) or (len(names) == 0): + names = list(ponies.keys()) + + ## Select a random pony of the choosen onles + pony = names[random.randrange(0, len(names))] + if pony not in ponies: + if not alt: + autocorrect = SpelloCorrecter(ponydirs, '.pony') + (alternatives, dist) = autocorrect.correct(pony) + if (len(alternatives) > 0) and (dist <= 5): # TODO the limit `dist` should be configureable + return self.__getponypath(alternatives, True) + sys.stderr.write('I have never heard of anypony named %s\n' % (pony)); + exit(1) + else: + return ponies[pony] + + + ''' + Returns a set with all ponies that have quotes and are displayable + + @return :set All ponies that have quotes and are displayable + ''' + def __quoters(self): + ## List all unique quote files + quotes = [] + quoteshash = set() + _quotes = [] + for quotedir in quotedirs: + _quotes += [item[:item.index('.')] for item in os.listdir(quotedir)] + for quote in _quotes: + if not quote == '': + if not quote in quoteshash: + quoteshash.add(quote) + quotes.append(quote) + + ## Create a set of all ponyes that have quotes + ponies = set() + for ponydir in ponydirs: + for pony in os.listdir(ponydir): + if not pony[0] == '.': + p = pony[:-5] # remove .pony + for quote in quotes: + if ('+' + p + '+') in ('+' + quote + '+'): + if not p in ponies: + ponies.add(p) + + return ponies + + + ''' + Returns a list with all (pony, quote file) pairs + + @return (pony, quote):(str, str) All ponies–quote file-pairs + ''' + def __quotes(self): + ## Get all ponyquote files + quotes = [] + for quotedir in quotedirs: + quotes += [quotedir + item for item in os.listdir(quotedir)] + + ## Create list of all pony–quote file-pairs + rc = [] + for ponydir in ponydirs: + for pony in os.listdir(ponydir): + if not pony[0] == '.': + p = pony[:-5] # remove .pony + for quote in quotes: + q = quote[quote.rindex('/') + 1:] + q = q[:q.rindex('.')] + if ('+' + p + '+') in ('+' + q + '+'): + rc.append((p, quote)) + + return rc + + + ''' + Gets the size of the terminal in (rows, columns) + + @return (rows, columns):(int, int) The number or lines and the number of columns in the terminal's display area + ''' + def __gettermsize(self): + ## Call `stty` to determine the size of the terminal, this way is better then using python's ncurses + for channel in (sys.stderr, sys.stdout, sys.stdin): + termsize = Popen(['stty', 'size'], stdout=PIPE, stdin=channel, stderr=PIPE).communicate()[0] + if len(termsize) > 0: + termsize = termsize.decode('utf8', 'replace')[:-1].split(' ') # [:-1] removes a \n + termsize = [int(item) for item in termsize] + return termsize + return (24, 80) # fall back to minimal sane size + + + + ##################### + ## Listing methods ## + ##################### + + ''' + Columnise a list and prints it + + @param ponies:list<(str, str)> All items to list, each item should have to elements: unformated name, formated name + ''' + def __columnise(self, ponies): + ## Get terminal width, and a 2 which is the space between columns + termwidth = self.__gettermsize()[1] + 2 + ## Sort the ponies, and get the cells' widths, and the largest width + 2 + ponies.sort(key = lambda pony : pony[0]) + widths = [UCS.dispLen(pony[0]) for pony in ponies] + width = max(widths) + 2 # longest pony file name + space between columns + + ## Calculate the number of rows and columns, can create a list of empty columns + cols = termwidth // width # do not believe electricians, this means ⌊termwidth / width⌋ + rows = (len(ponies) + cols - 1) // cols + columns = [] + for c in range(0, cols): columns.append([]) + + ## Fill the columns with cells of ponies + (y, x) = (0, 0) + for j in range(0, len(ponies)): + cell = ponies[j][1] + ' ' * (width - widths[j]); + columns[x].append(cell) + y += 1 + if y == rows: + x += 1 + y = 0 + + ## Make the columnisation nicer by letting the last row be partially empty rather than the last column + diff = rows * cols - len(ponies) + if diff > 2: + c = cols - 1 + diff -= 1 + while diff > 0: + columns[c] = columns[c - 1][-diff:] + columns[c] + c -= 1 + columns[c] = columns[c][:-diff] + diff -= 1 + + ## Create rows from columns + lines = [] + for r in range(0, rows): + lines.append([]) + for c in range(0, cols): + if r < len(columns[c]): + line = lines[r].append(columns[c][r]) + + ## Print the matrix, with one extra blank row + print('\n'.join([''.join(line)[:-2] for line in lines])) + print() + + + ''' + Lists the available ponies + ''' + def list(self): + ## Get all quoters + quoters = self.__quoters() + + for ponydir in ponydirs: # Loop ponydirs + ## Get all ponies in the directory + _ponies = os.listdir(ponydir) + + ## Remove .pony from all files and skip those that does not have .pony + ponies = [] + for pony in _ponies: + if endswith(pony, '.pony'): + ponies.append(pony[:-5]) + + ## UCS:ise pony names, they are already sorted + self.__ucsise(ponies) + + ## If ther directory is not empty print its name and all ponies, columnised + if len(ponies) == 0: + continue + print('\033[1mponies located in ' + ponydir + '\033[21m') + self.__columnise([(pony, '\033[1m' + pony + '\033[21m' if pony in quoters else pony) for pony in ponies]) + + + ''' + Lists the available ponies with alternatives inside brackets + ''' + def linklist(self): + ## Get the size of the terminal and all ponies with quotes + termsize = self.__gettermsize() + quoters = self.__quoters() + + for ponydir in ponydirs: # Loop ponydirs + ## Get all pony files in the directory + _ponies = os.listdir(ponydir) + + ## Remove .pony from all files and skip those that does not have .pony + ponies = [] + for pony in _ponies: + if endswith(pony, '.pony'): + ponies.append(pony[:-5]) + + ## If there are no ponies in the directory skip to next directory, otherwise, print the directories name + if len(ponies) == 0: + continue + print('\033[1mponies located in ' + ponydir + '\033[21m') + + ## UCS:ise pony names + pseudolinkmap = {} + self.__ucsise(ponies, pseudolinkmap) + + ## Create target–link-pair, with `None` as link if the file is not a symlink or in `pseudolinkmap` + pairs = [] + for pony in ponies: + if pony in pseudolinkmap: + pairs.append((pony, pseudolinkmap[pony] + '.pony')); + else: + pairs.append((pony, os.path.realpath(ponydir + pony + '.pony') if os.path.islink(ponydir + pony + '.pony') else None)) + + ## Create map from source pony to alias ponies for each pony + ponymap = {} + for pair in pairs: + if (pair[1] is None) or (pair[1] == ''): + if pair[0] not in ponymap: + ponymap[pair[0]] = [] + else: + target = pair[1][:-5] + if '/' in target: + target = target[target.rindex('/') + 1:] + if target in ponymap: + ponymap[target].append(pair[0]) + else: + ponymap[target] = [pair[0]] + + ## Create list of source ponies concatenated with alias ponies in brackets + ponies = {} + for pony in ponymap: + w = UCS.dispLen(pony) + item = '\033[1m' + pony + '\033[21m' if (pony in quoters) else pony + syms = ponymap[pony] + syms.sort() + if len(syms) > 0: + w += 2 + len(syms) + item += ' (' + first = True + for sym in syms: + w += UCS.dispLen(sym) + if first: first = False + else: item += ' ' + item += '\033[1m' + sym + '\033[21m' if (sym in quoters) else sym + item += ')' + ponies[(item.replace('\033[1m', '').replace('\033[21m', ''), item)] = w + + ## Print the ponies, columnised + self.__columnise(list(ponies)) + + + ''' + Lists with all ponies that have quotes and are displayable, on one column without anything bold or otherwise formated + ''' + def quoters(self): + ## Get all quoters + ponies = self.__quoters() + + ## UCS:ise and sort + self.__ucsise(ponies) + ponies.sort() + + ## Print each one on a seperate line, but skip duplicates + last = '' + for pony in ponies: + if not pony == last: + last = pony + print(pony) + + + ''' + Lists the available ponies on one column without anything bold or otherwise formated + ''' + def onelist(self): + ## Get all pony files + _ponies = [] + for ponydir in ponydirs: # Loop ponydirs + _ponies += os.listdir(ponydir) + + ## Remove .pony from all files and skip those that does not have .pony + ponies = [] + for pony in _ponies: + if endswith(pony, '.pony'): + ponies.append(pony[:-5]) + + ## UCS:ise and sort + self.__ucsise(ponies) + ponies.sort() + + ## Print each one on a seperate line, but skip duplicates + last = '' + for pony in ponies: + if not pony == last: + last = pony + print(pony) + + + ##################### + ## Balloon methods ## + ##################### + + ''' + Prints a list of all balloons + ''' + def balloonlist(self): + ## Get the size of the terminal + termsize = self.__gettermsize() + + ## Get all balloons + balloonset = set() + for balloondir in balloondirs: + for balloon in os.listdir(balloondir): + ## Use .think if running ponythink, otherwise .say + if isthink and endswith(balloon, '.think'): + balloon = balloon[:-6] + elif (not isthink) and endswith(balloon, '.say'): + balloon = balloon[:-4] + else: + continue + + ## Add the balloon if there is none with the same name + if balloon not in balloonset: + balloonset.add(balloon) + + ## Print all balloos, columnised + self.__columnise([(balloon, balloon) for balloon in list(balloonset)]) + + + ''' + Returns one file with full path, names is filter for style names, also accepts filepaths + + @param names:list Balloons to choose from, may be `None` + @param alt:bool For method internal use + @param :str The file name of the balloon, will be `None` iff `names` is `None` + ''' + def __getballoonpath(self, names, alt = False): + ## Stop if their is no choosen balloon + if names is None: + return None + + ## Get all balloons + balloons = {} + for balloondir in balloondirs: + for balloon in os.listdir(balloondir): + balloonfile = balloon + ## Use .think if running ponythink, otherwise .say + if isthink and endswith(balloon, '.think'): + balloon = balloon[:-6] + elif (not isthink) and endswith(balloon, '.say'): + balloon = balloon[:-4] + else: + continue + + ## Add the balloon if there is none with the same name + if balloon not in balloons: + balloons[balloon] = balloondir + balloonfile + + ## Support for explicit balloon file names + for name in names: + if os.path.exists(name): + balloons[name] = name + + ## Select a random balloon of the choosen ones + balloon = names[random.randrange(0, len(names))] + if balloon not in balloons: + if not alt: + autocorrect = SpelloCorrecter(balloondirs, '.think' if isthink else '.say') + (alternatives, dist) = autocorrect.correct(balloon) + if (len(alternatives) > 0) and (dist <= 5): # TODO the limit `dist` should be configureable + return self.__getballoonpath(alternatives, True) + sys.stderr.write('That balloon style %s does not exist\n' % (balloon)); + exit(1) + else: + return balloons[balloon] + + + ''' + Creates the balloon style object + + @param balloonfile:str The file with the balloon style, may be `None` + @return :Balloon Instance describing the balloon's style + ''' + def __getballoon(self, balloonfile): + ## Use default balloon if none is specified + if balloonfile is None: + if isthink: + return Balloon('o', 'o', '( ', ' )', [' _'], ['_'], ['_'], ['_'], ['_ '], ' )', ' )', ' )', ['- '], ['-'], ['-'], ['-'], [' -'], '( ', '( ', '( ') + return Balloon('\\', '/', '< ', ' >', [' _'], ['_'], ['_'], ['_'], ['_ '], ' \\', ' |', ' /', ['- '], ['-'], ['-'], ['-'], [' -'], '\\ ', '| ', '/ ') + + ## Initialise map for balloon parts + map = {} + for elem in ('\\', '/', 'ww', 'ee', 'nw', 'nnw', 'n', 'nne', 'ne', 'nee', 'e', 'see', 'se', 'sse', 's', 'ssw', 'sw', 'sww', 'w', 'nww'): + map[elem] = [] + + ## Read all lines in the balloon file + with open(balloonfile, 'rb') as balloonstream: + data = balloonstream.read().decode('utf8', 'replace') + data = [line.replace('\n', '') for line in data.split('\n')] + + ## Parse the balloon file, and fill the map + last = None + for line in data: + if len(line) > 0: + if line[0] == ':': + map[last].append(line[1:]) + else: + last = line[:line.index(':')] + value = line[len(last) + 1:] + map[last].append(value) + + ## Return the balloon + return Balloon(map['\\'][0], map['/'][0], map['ww'][0], map['ee'][0], map['nw'], map['nnw'], map['n'], + map['nne'], map['ne'], map['nee'][0], map['e'][0], map['see'][0], map['se'], map['sse'], + map['s'], map['ssw'], map['sw'], map['sww'][0], map['w'][0], map['nww'][0]) + + + + ######################## + ## Displaying methods ## + ######################## + + ''' + Prints the name of the program and the version of the program + ''' + def version(self): + ## Prints the "ponysay $VERSION", if this is modified, ./dev/dist.sh must be modified accordingly + print('%s %s' % ('ponysay', VERSION)) + + + ''' + Print the pony with a speech or though bubble. message, pony and wrap from args are used. + + @param args:ArgParser Parsed command line arguments + ''' + def print_pony(self, args): + ## Get message and remove tailing whitespace from stdin (but not for each line) + if args.message == None: + msg = ''.join(sys.stdin.readlines()).rstrip() + else: + msg = args.message + if args.opts['--colour-msg'] is not None: + msg = '\033[' + ';'.join(args.opts['--colour-msg']) + 'm' + msg + + ## This algorithm should give some result as cowsay's (according to tests) + if args.opts['-c'] is not None: + buf = '' + last = ' ' + CHARS = '\t \n' + for c in msg: + if (c in CHARS) and (last in CHARS): + if last == '\n': + buf += last + last = c + else: + buf += c + last = c + msg = buf.strip(CHARS) + buf = '' + for c in msg: + if (c != '\n') or (last != '\n'): + buf += c + last = c + msg = buf.replace('\n', '\n\n') + + ## Get the pony + pony = self.__getponypath(args.opts['-f']) + printinfo('pony file: ' + pony) + + ## Use PNG file as pony file + if endswith(pony.lower(), '.png'): + pony = '\'' + pony.replace('\'', '\'\\\'\'') + '\'' + pngcmd = ('img2ponysay -p -- ' if linuxvt else 'img2ponysay -- ') + pony + pngpipe = os.pipe() + Popen(pngcmd, stdout=os.fdopen(pngpipe[1], 'w'), shell=True).wait() + pony = '/proc/' + str(os.getpid()) + '/fd/' + str(pngpipe[0]) + + ## If KMS is utilies, select a KMS pony file and create it if necessary + pony = self.__kms(pony) + + ## If in Linux VT clean the terminal (See info/pdf-manual [Printing in TTY with KMS]) + if linuxvt: + print('\033[H\033[2J', end='') + + ## Get width truncation and wrapping + env_width = os.environ['PONYSAY_FULL_WIDTH'] if 'PONYSAY_FULL_WIDTH' in os.environ else None + if env_width is None: env_width = '' + widthtruncation = self.__gettermsize()[1] if env_width not in ('yes', 'y', '1') else None + messagewrap = 40 + if (args.opts['-W'] is not None) and (len(args.opts['-W'][0]) > 0): + messagewrap = args.opts['-W'][0] + if messagewrap[0] in 'nmsNMS': # m is left to n on QWERTY and s is left to n on Dvorak + messagewrap = None + elif messagewrap[0] in 'iouIOU': # o is left to i on QWERTY and u is right to i on Dvorak + messagewrap = self.__gettermsize()[1] + else: + messagewrap = int(args.opts['-W'][0]) + + ## Get balloon object + balloonfile = self.__getballoonpath(args.opts['-b']) + printinfo('balloon style file: ' + str(balloonfile)) + balloon = self.__getballoon(balloonfile) if args.opts['-o'] is None else None + + ## Get hyphen style + hyphencolour = '' + if args.opts['--colour-wrap'] is not None: + hyphencolour = '\033[' + ';'.join(args.opts['--colour-wrap']) + 'm' + hyphen = '\033[31m' + hyphencolour + '-' # TODO make configurable + + ## Link and balloon colouring + linkcolour = '' + if args.opts['--colour-link'] is not None: + linkcolour = '\033[' + ';'.join(args.opts['--colour-link']) + 'm' + ballooncolour = '' + if args.opts['--colour-bubble'] is not None: + ballooncolour = '\033[' + ';'.join(args.opts['--colour-bubble']) + 'm' + + + ## Run cowsay replacement + backend = Backend(message = msg, ponyfile = pony, wrapcolumn = messagewrap, width = widthtruncation, + balloon = balloon, hyphen = hyphen, linkcolour = linkcolour, ballooncolour = ballooncolour) + backend.parse() + output = backend.output + if output.endswith('\n'): + output = output[:-1] + + + ## Load height trunction settings + env_bottom = os.environ['PONYSAY_BOTTOM'] if 'PONYSAY_BOTTOM' in os.environ else None + if env_bottom is None: env_bottom = '' + + env_height = os.environ['PONYSAY_TRUNCATE_HEIGHT'] if 'PONYSAY_TRUNCATE_HEIGHT' in os.environ else None + if env_height is None: env_height = '' + + env_lines = os.environ['PONYSAY_SHELL_LINES'] if 'PONYSAY_SHELL_LINES' in os.environ else None + if (env_lines is None) or (env_lines == ''): env_lines = '2' + + ## Print the output, truncated on height is so set + lines = self.__gettermsize()[0] - int(env_lines) + if linuxvt or (env_height is ('yes', 'y', '1')): + if env_bottom is ('yes', 'y', '1'): + for line in output.split('\n')[: -lines]: + print(line) + else: + for line in output.split('\n')[: lines]: + print(line) + else: + print(output) + + + ''' + Print the pony with a speech or though bubble and a self quote + + @param args:ArgParser Parsed command line arguments + ''' + def quote(self, args): + ## Get all quotes, and if any pony is choosen just keep them + pairs = self.__quotes() + if len(args.opts['-q']) > 0: + ponyset = {} + for pony in args.opts['-q']: + if endswith(pony, '.pony'): + ponyname = pony[:-5] + if '/' in ponyname: + ponyname = ponyname[ponyname.rindex('/') + 1:] + ponyset[ponyname] = pony + else: + ponyset[pony] = pony + alts = [] + for pair in pairs: + if pair[0] in ponyset: + alts.append((ponyset[pair[0]], pair[1])) + pairs = alts + + ## Select a random pony–quote-pair, load it and print it + if not len(pairs) == 0: + pair = pairs[random.randrange(0, len(pairs))] + printinfo('quote file: ' + pair[1]) + with open(pair[1], 'rb') as qfile: + args.message = qfile.read().decode('utf8', 'replace').strip() + args.opts['-f'] = [pair[0]] + elif len(args.opts['-q']) == 0: + sys.stderr.write('Princess Celestia! All the ponies are mute!\n') + exit(1) + else: + args.opts['-f'] = [args.opts['-q'][random.randrange(0, len(args.opts['-q']))]] + args.message = 'Zecora! Help me, I am mute!' + + self.print_pony(args) + + + ''' + Identifies whether KMS support is utilised + ''' + @staticmethod + def isUsingKMS(): + ## KMS is not utilised if Linux VT is not used + if not linuxvt: + return False + + ## Read the PONYSAY_KMS_PALETTE environment variable + env_kms = os.environ['PONYSAY_KMS_PALETTE'] if 'PONYSAY_KMS_PALETTE' in os.environ else None + if env_kms is None: env_kms = '' + + ## Read the PONYSAY_KMS_PALETTE_CMD environment variable, and run it + env_kms_cmd = os.environ['PONYSAY_KMS_PALETTE_CMD'] if 'PONYSAY_KMS_PALETTE_CMD' in os.environ else None + if (env_kms_cmd is not None) and (not env_kms_cmd == ''): + env_kms = Popen(shlex.split(env_kms_cmd), stdout=PIPE, stdin=sys.stderr).communicate()[0].decode('utf8', 'replace') + if env_kms[-1] == '\n': + env_kms = env_kms[:-1] + + ## If the palette string is empty KMS is not utilised + return env_kms != '' + + + ''' + Returns the file name of the input pony converted to a KMS pony, or if KMS is not used, the input pony itself + + @param pony:str Choosen pony file + @return :str Pony file to display + ''' + def __kms(self, pony): + ## If not in Linux VT, return the pony as is + if not linuxvt: + return pony + + ## KMS support version constant + KMS_VERSION = '1' + + ## Read the PONYSAY_KMS_PALETTE environment variable + env_kms = os.environ['PONYSAY_KMS_PALETTE'] if 'PONYSAY_KMS_PALETTE' in os.environ else None + if env_kms is None: env_kms = '' + + ## Read the PONYSAY_KMS_PALETTE_CMD environment variable, and run it + env_kms_cmd = os.environ['PONYSAY_KMS_PALETTE_CMD'] if 'PONYSAY_KMS_PALETTE_CMD' in os.environ else None + if (env_kms_cmd is not None) and (not env_kms_cmd == ''): + env_kms = Popen(shlex.split(env_kms_cmd), stdout=PIPE, stdin=sys.stderr).communicate()[0].decode('utf8', 'replace') + if env_kms[-1] == '\n': + env_kms = env_kms[:-1] + + ## If not using KMS, return the pony as is + if env_kms == '': + return pony + + ## Store palette string and a clong with just the essentials + palette = env_kms + palettefile = env_kms.replace('\033]P', '') + + ## Get and in necessary make cache directory + cachedir = '/var/cache/ponysay' + shared = True + if not os.path.isdir(cachedir): + cachedir = HOME + '/.cache/ponysay' + shared = False + if not os.path.isdir(cachedir): + os.makedirs(cachedir) + _cachedir = '\'' + cachedir.replace('\'', '\'\\\'\'') + '\'' + + ## KMS support version control, clean everything if not matching + newversion = False + if not os.path.isfile(cachedir + '/.version'): + newversion = True + else: + with open(cachedir + '/.version', 'rb') as cachev: + if cachev.read().decode('utf8', 'replace').replace('\n', '') != KMS_VERSION: + newversion = True + if newversion: + for cached in os.listdir(cachedir): + cached = cachedir + '/' + cached + if os.path.isdir(cached) and not os.path.islink(cached): + shutil.rmtree(cached, False) + else: + os.remove(cached) + with open(cachedir + '/.version', 'w+') as cachev: + cachev.write(KMS_VERSION) + if shared: + Popen('chmod 666 -- ' + _cachedir + '/.version', shell=True).wait() + + ## Get kmspony directory and kmspony file + kmsponies = cachedir + '/kmsponies/' + palettefile + kmspony = (kmsponies + pony).replace('//', '/') + + ## If the kmspony is missing, create it + if not os.path.isfile(kmspony): + ## Protokmsponies are uncolourful ttyponies + protokmsponies = cachedir + '/protokmsponies/' + protokmspony = (protokmsponies + pony).replace('//', '/') + protokmsponydir = protokmspony[:protokmspony.rindex('/')] + kmsponydir = kmspony[: kmspony.rindex('/')] + + ## Change file names to be shell friendly + _protokmspony = '\'' + protokmspony.replace('\'', '\'\\\'\'') + '\'' + _kmspony = '\'' + kmspony.replace('\'', '\'\\\'\'') + '\'' + _pony = '\'' + pony.replace('\'', '\'\\\'\'') + '\'' + + ## Create protokmspony is missing + if not os.path.isfile(protokmspony): + if not os.path.isdir(protokmsponydir): + os.makedirs(protokmsponydir) + if shared: + Popen('chmod -R 6777 -- ' + _cachedir, shell=True).wait() + if not os.system('ponysay2ttyponysay < ' + _pony + ' > ' + _protokmspony) == 0: + sys.stderr.write('Unable to run ponysay2ttyponysay successfully, you need util-say for KMS support\n') + exit(1) + if shared: + Popen('chmod 666 -- ' + _protokmspony, shell=True).wait() + + ## Create kmspony + if not os.path.isdir(kmsponydir): + os.makedirs(kmsponydir) + if shared: + Popen('chmod -R 6777 -- ' + _cachedir, shell=True).wait() + if not os.system('tty2colourfultty -p ' + palette + ' < ' + _protokmspony + ' > ' + _kmspony) == 0: + sys.stderr.write('Unable to run tty2colourfultty successfully, you need util-say for KMS support\n') + exit(1) + if shared: + Popen('chmod 666 -- ' + _kmspony, shell=True).wait() + + return kmspony + + + +''' +Option takes no arguments +''' +ARGUMENTLESS = 0 + +''' +Option takes one argument per instance +''' +ARGUMENTED = 1 + +''' +Option consumes all following arguments +''' +VARIADIC = 2 + +''' +Simple argument parser +''' +class ArgParser(): + ''' + Constructor. + The short description is printed on same line as the program name + + @param program:str The name of the program + @param description:str Short, single-line, description of the program + @param usage:str Formated, multi-line, usage text + @param longdescription:str Long, multi-line, description of the program, may be `None` + ''' + def __init__(self, program, description, usage, longdescription = None): + self.__program = program + self.__description = description + self.__usage = usage + self.__longdescription = longdescription + self.__arguments = [] + self.opts = {} + self.optmap = {} + + + ''' + Add option that takes no arguments + + @param alternatives:list Option names + @param help:str Short description, use `None` to hide the option + ''' + def add_argumentless(self, alternatives, help = None): + ARGUMENTLESS + self.__arguments.append((ARGUMENTLESS, alternatives, None, help)) + stdalt = alternatives[0] + self.opts[stdalt] = None + for alt in alternatives: + self.optmap[alt] = (stdalt, ARGUMENTLESS) + + ''' + Add option that takes one argument + + @param alternatives:list Option names + @param arg:str The name of the takes argument, one word + @param help:str Short description, use `None` to hide the option + ''' + def add_argumented(self, alternatives, arg, help = None): + self.__arguments.append((ARGUMENTED, alternatives, arg, help)) + stdalt = alternatives[0] + self.opts[stdalt] = None + for alt in alternatives: + self.optmap[alt] = (stdalt, ARGUMENTED) + + ''' + Add option that takes all following argument + + @param alternatives:list Option names + @param arg:str The name of the takes arguments, one word + @param help:str Short description, use `None` to hide the option + ''' + def add_variadic(self, alternatives, arg, help = None): + self.__arguments.append((VARIADIC, alternatives, arg, help)) + stdalt = alternatives[0] + self.opts[stdalt] = None + for alt in alternatives: + self.optmap[alt] = (stdalt, VARIADIC) + + + ''' + Parse arguments + + @param args:list The command line arguments, should include the execute file at index 0, `sys.argv` is default + @return :bool Whether no unrecognised option is used + ''' + def parse(self, argv = sys.argv): + self.argcount = len(argv) - 1 + self.files = [] + + argqueue = [] + optqueue = [] + deque = [] + for arg in argv[1:]: + deque.append(arg) + + dashed = False + tmpdashed = False + get = 0 + dontget = 0 + self.rc = True + + def unrecognised(arg): + sys.stderr.write('%s: warning: unrecognised option %s\n' % (self.__program, arg)) + self.rc = False + + while len(deque) != 0: + arg = deque[0] + deque = deque[1:] + if (get > 0) and (dontget == 0): + get -= 1 + argqueue.append(arg) + elif tmpdashed: + self.files.append(arg) + tmpdashed = False + elif dashed: self.files.append(arg) + elif arg == '++': tmpdashed = True + elif arg == '--': dashed = True + elif (len(arg) > 1) and (arg[0] in ('-', '+')): + if (len(arg) > 2) and (arg[:2] in ('--', '++')): + if dontget > 0: + dontget -= 1 + elif (arg in self.optmap) and (self.optmap[arg][1] == ARGUMENTLESS): + optqueue.append(arg) + argqueue.append(None) + elif '=' in arg: + arg_opt = arg[:arg.index('=')] + if (arg_opt in self.optmap) and (self.optmap[arg_opt][1] >= ARGUMENTED): + optqueue.append(arg_opt) + argqueue.append(arg[arg.index('=') + 1:]) + if self.optmap[arg_opt][1] == VARIADIC: + dashed = True + else: + unrecognised(arg) + elif (arg in self.optmap) and (self.optmap[arg][1] == ARGUMENTED): + optqueue.append(arg) + get += 1 + elif (arg in self.optmap) and (self.optmap[arg][1] == VARIADIC): + optqueue.append(arg) + argqueue.append(None) + dashed = True + else: + unrecognised(arg) + else: + sign = arg[0] + i = 1 + n = len(arg) + while i < n: + narg = sign + arg[i] + i += 1 + if (narg in self.optmap): + if self.optmap[narg][1] == ARGUMENTLESS: + optqueue.append(narg) + argqueue.append(None) + elif self.optmap[narg][1] == ARGUMENTED: + optqueue.append(narg) + nargarg = arg[i:] + if len(nargarg) == 0: + get += 1 + else: + argqueue.append(nargarg) + break + elif self.optmap[narg][1] == VARIADIC: + optqueue.append(narg) + nargarg = arg[i:] + argqueue.append(nargarg if len(nargarg) > 0 else None) + dashed = True + break + else: + unrecognised(arg) + else: + self.files.append(arg) + + i = 0 + n = len(optqueue) + while i < n: + opt = optqueue[i] + arg = argqueue[i] + i += 1 + opt = self.optmap[opt][0] + if (opt not in self.opts) or (self.opts[opt] is None): + self.opts[opt] = [] + self.opts[opt].append(arg) + + for arg in self.__arguments: + if (arg[0] == VARIADIC): + varopt = self.opts[arg[1][0]] + if varopt is not None: + additional = ','.join(self.files).split(',') if len(self.files) > 0 else [] + if varopt[0] is None: + self.opts[arg[1][0]] = additional + else: + self.opts[arg[1][0]] = varopt[0].split(',') + additional + self.files = [] + break + + self.message = ' '.join(self.files) if len(self.files) > 0 else None + + return self.rc + + + ''' + Prints a colourful help message + ''' + def help(self): + print('\033[1m%s\033[21m %s %s' % (self.__program, '-' if linuxvt else '—', self.__description)) + print() + if self.__longdescription is not None: + print(self.__longdescription) + print() + + print('\033[1mUSAGE:\033[21m', end='') + first = True + for line in self.__usage.split('\n'): + if first: + first = False + else: + print(' or', end='') + print('\t%s' % (line)) + print() + + print('\033[1mSYNOPSIS:\033[21m') + (lines, lens) = ([], []) + for opt in self.__arguments: + opt_type = opt[0] + opt_alts = opt[1] + opt_arg = opt[2] + opt_help = opt[3] + if opt_help is None: + continue + (line, l) = ('', 0) + first = opt_alts[0] + last = opt_alts[-1] + alts = ('', last) if first is last else (first, last) + for opt_alt in alts: + if opt_alt is alts[-1]: + line += '%colour%' + opt_alt + l += len(opt_alt) + if opt_type == ARGUMENTED: line += ' \033[4m%s\033[24m' % (opt_arg); l += len(opt_arg) + 1 + elif opt_type == VARIADIC: line += ' [\033[4m%s\033[24m...]' % (opt_arg); l += len(opt_arg) + 6 + else: + line += ' \033[2m%s\033[22m ' % (opt_alt) + l += len(opt_alt) + 6 + lines.append(line) + lens.append(l) + + col = max(lens) + col += 8 - ((col - 4) & 7) + index = 0 + for opt in self.__arguments: + opt_help = opt[3] + if opt_help is None: + continue + first = True + colour = '36' if (index & 1) == 0 else '34' + print(lines[index].replace('%colour%', '\033[%s;1m' % (colour)), end=' ' * (col - lens[index])) + for line in opt_help.split('\n'): + if first: + first = False + print('%s' % (line), end='\033[21;39m\n') + else: + print('%s\033[%sm%s\033[39m' % (' ' * col, colour, line)) + index += 1 + + print() + + + +''' +Balloon format class +''' +class Balloon(): + ''' + Constructor + + @param link:str The \-directional balloon line character + @param linkmirror:str The /-directional balloon line character + @param ww:str See the info manual + @param ee:str See the info manual + @param nw:list See the info manual + @param nnw:list See the info manual + @param n:list See the info manual + @param nne:list See the info manual + @param ne:list See the info manual + @param nee:str See the info manual + @param e:str See the info manual + @param see:str See the info manual + @param se:list See the info manual + @param sse:list See the info manual + @param s:list See the info manual + @param ssw:list See the info manual + @param sw:list See the info manual + @param sww:str See the info manual + @param w:str See the info manual + @param nww:str See the info manual + ''' + def __init__(self, link, linkmirror, ww, ee, nw, nnw, n, nne, ne, nee, e, see, se, sse, s, ssw, sw, sww, w, nww): + (self.link, self.linkmirror) = (link, linkmirror) + (self.ww, self.ee) = (ww, ee) + (self.nw, self.ne, self.se, self.sw) = (nw, ne, se, sw) + (self.nnw, self.n, self.nne) = (nnw, n, nne) + (self.nee, self.e, self.see) = (nee, e, see) + (self.sse, self.s, self.ssw) = (sse, s, ssw) + (self.sww, self.w, self.nww) = (sww, w, nww) + + _ne = max(ne, key = UCS.dispLen) + _nw = max(nw, key = UCS.dispLen) + _se = max(se, key = UCS.dispLen) + _sw = max(sw, key = UCS.dispLen) + + minE = UCS.dispLen(max([_ne, nee, e, see, _se, ee], key = UCS.dispLen)) + minW = UCS.dispLen(max([_nw, nww, e, sww, _sw, ww], key = UCS.dispLen)) + minN = len(max([ne, nne, n, nnw, nw], key = len)) + minS = len(max([se, sse, s, ssw, sw], key = len)) + + self.minwidth = minE + minE + self.minheight = minN + minS + + + ''' + Generates a balloon with a message + + @param minw:int The minimum number of columns of the balloon + @param minh:int The minimum number of lines of the balloon + @param lines:list The text lines to display + @param lencalc:int(str) Function used to compute the length of a text line + @return :str The balloon as a formated string + ''' + def get(self, minw, minh, lines, lencalc): + h = self.minheight + len(lines) + w = self.minwidth + lencalc(max(lines, key = lencalc)) + if w < minw: w = minw + if h < minh: h = minh + + if len(lines) > 1: + (ws, es) = ({0 : self.nww, len(lines) - 1 : self.sww}, {0 : self.nee, len(lines) - 1 : self.see}) + for j in range(1, len(lines) - 1): + ws[j] = self.w + es[j] = self.e + else: + (ws, es) = ({0 : self.ww}, {0 : self.ee}) + + rc = [] + + for j in range(0, len(self.n)): + outer = UCS.dispLen(self.nw[j]) + UCS.dispLen(self.ne[j]) + inner = UCS.dispLen(self.nnw[j]) + UCS.dispLen(self.nne[j]) + if outer + inner <= w: + rc.append(self.nw[j] + self.nnw[j] + self.n[j] * (w - outer - inner) + self.nne[j] + self.ne[j]) + else: + rc.append(self.nw[j] + self.n[j] * (w - outer) + self.ne[j]) + + for j in range(0, len(lines)): + rc.append(ws[j] + lines[j] + ' ' * (w - lencalc(lines[j]) - UCS.dispLen(self.w) - UCS.dispLen(self.e)) + es[j]) + + for j in range(0, len(self.s)): + outer = UCS.dispLen(self.sw[j]) + UCS.dispLen(self.se[j]) + inner = UCS.dispLen(self.ssw[j]) + UCS.dispLen(self.sse[j]) + if outer + inner <= w: + rc.append(self.sw[j] + self.ssw[j] + self.s[j] * (w - outer - inner) + self.sse[j] + self.se[j]) + else: + rc.append(self.sw[j] + self.s[j] * (w - outer) + self.se[j]) + + return '\n'.join(rc) + + + +''' +Super-ultra-extreme-awesomazing replacement for cowsay +''' +class Backend(): + ''' + Constructor + + @param message:str The message spoken by the pony + @param ponyfile:str The pony file + @param wrapcolumn:int The column at where to wrap the message, `None` for no wrapping + @param width:int The width of the screen, `None` if truncation should not be applied + @param balloon:Balloon The balloon style object, `None` if only the pony should be printed + @param hyphen:str How hyphens added by the wordwrapper should be printed + @param linkcolour:str How to colour the link character, empty string if none + @param ballooncolour:str How to colour the balloon, empty string if none + ''' + def __init__(self, message, ponyfile, wrapcolumn, width, balloon, hyphen, linkcolour, ballooncolour): + self.message = message + self.ponyfile = ponyfile + self.wrapcolumn = None if wrapcolumn is None else wrapcolumn - (0 if balloon is None else balloon.minwidth) + self.width = width + self.balloon = balloon + self.hyphen = hyphen + self.ballooncolour = ballooncolour + + if self.balloon is not None: + self.link = {'\\' : linkcolour + self.balloon.link, + '/' : linkcolour + self.balloon.linkmirror} + else: + self.link = {} + + self.output = '' + self.pony = None + + + ''' + Process all data + ''' + def parse(self): + self.__expandMessage() + self.__unpadMessage() + self.__loadFile() + + if self.pony.startswith('$$$\n'): + self.pony = self.pony[4:] + infoend = self.pony.index('\n$$$\n') + printinfo(self.pony[:infoend]) + self.pony = self.pony[infoend + 5:] + self.pony = mode + self.pony + + self.__processPony() + self.__truncate() + + + ''' + Remove padding spaces fortune cookies are padded with whitespace (damn featherbrains) + ''' + def __unpadMessage(self): + lines = self.message.split('\n') + for spaces in (8, 4, 2, 1): + padded = True + for line in lines: + if not line.startswith(' ' * spaces): + padded = False + break + if padded: + for i in range(0, len(lines)): + line = lines[i] + while line.startswith(' ' * spaces): + line = line[spaces:] + lines[i] = line + lines = [line.rstrip(' ') for line in lines] + self.message = '\n'.join(lines) + + + ''' + Converts all tabs in the message to spaces by expanding + ''' + def __expandMessage(self): + lines = self.message.split('\n') + buf = '' + for line in lines: + (i, n, x) = (0, len(line), 0) + while i < n: + c = line[i] + i += 1 + if c == '\033': + colour = self.__getcolour(line, i - 1) + i += len(colour) - 1 + buf += colour + elif c == '\t': + nx = 8 - (x & 7) + buf += ' ' * nx + x += nx + else: + buf += c + if not UCS.isCombining(c): + x += 1 + buf += '\n' + self.message = buf[:-1] + + + ''' + Loads the pony file + ''' + def __loadFile(self): + with open(self.ponyfile, 'rb') as ponystream: + self.pony = ponystream.read().decode('utf8', 'replace') + + + ''' + Truncate output to the width of the screen + ''' + def __truncate(self): + if self.width is None: + return + lines = self.output.split('\n') + self.output = '' + for line in lines: + (i, n, x) = (0, len(line), 0) + while i < n: + c = line[i] + i += 1 + if c == '\033': + colour = self.__getcolour(line, i - 1) + i += len(colour) - 1 + self.output += colour + else: + if x < self.width: + self.output += c + if not UCS.isCombining(c): + x += 1 + self.output += '\n' + self.output = self.output[:-1] + + + ''' + Process the pony file and generate output to self.output + ''' + def __processPony(self): + self.output = '' + + AUTO_PUSH = '\033[01010~' + AUTO_POP = '\033[10101~' + + variables = {'' : '$'} + for key in self.link: + variables[key] = AUTO_PUSH + self.link[key] + AUTO_POP + + indent = 0 + dollar = None + balloonLines = None + colourstack = ColourStack(AUTO_PUSH, AUTO_POP) + + (i, n, lineindex, skip, nonskip) = (0, len(self.pony), 0, 0, 0) + while i < n: + c = self.pony[i] + if c == '\t': + n += 7 - (indent & 7) + ed = ' ' * (8 - (indent & 7)) + c = ' ' + self.pony = self.pony[:i] + ed + self.pony[i + 1:] + i += 1 + if c == '$': + if dollar is not None: + if '=' in dollar: + name = dollar[:dollar.find('=')] + value = dollar[dollar.find('=') + 1:] + variables[name] = value + elif not dollar.startswith('balloon'): + data = variables[dollar].replace('$', '$$') + if data == '$$': # if not handled specially we will get an infinity loop + if (skip == 0) or (nonskip > 0): + if nonskip > 0: + nonskip -= 1 + self.output += '$' + indent += 1 + else: + skip -= 1 + else: + n += len(data) + self.pony = self.pony[:i] + data + self.pony[i:] + elif self.balloon is not None: + (w, h) = (0, 0) + props = dollar[7:] + if len(props) > 0: + if ',' in props: + if props[0] is not ',': + w = int(props[:props.index(',')]) + h = int(props[props.index(',') + 1:]) + else: + w = int(props) + balloon = self.__getballoon(w, h, indent) + balloon = balloon.split('\n') + balloon = [AUTO_PUSH + self.ballooncolour + item + AUTO_POP for item in balloon] + for b in balloon[0]: + self.output += b + colourstack.feed(b) + if lineindex == 0: + balloonpre = '\n' + (' ' * indent) + for line in balloon[1:]: + self.output += balloonpre; + for b in line: + self.output += b + colourstack.feed(b); + indent = 0 + elif len(balloon) > 1: + balloonLines = balloon + balloonLine = 0 + balloonIndent = indent + indent += self.__len(balloonLines[0]) + balloonLines[0] = None + dollar = None + else: + dollar = '' + elif dollar is not None: + if c == '\033': + c = self.pony[i] + i += 1 + dollar += c + elif c == '\033': + colour = self.__getcolour(self.pony, i - 1) + for b in colour: + self.output += b + colourstack.feed(b); + i += len(colour) - 1 + elif c == '\n': + self.output += c + indent = 0 + (skip, nonskip) = (0, 0) + lineindex += 1 + if balloonLines is not None: + balloonLine += 1 + if balloonLine == len(balloonLines): + balloonLines = None + else: + if (balloonLines is not None) and (balloonLines[balloonLine] is not None) and (balloonIndent == indent): + data = balloonLines[balloonLine] + datalen = self.__len(data) + skip += datalen + nonskip += datalen + data = data.replace('$', '$$') + n += len(data) + self.pony = self.pony[:i] + data + self.pony[i:] + balloonLines[balloonLine] = None + else: + if (skip == 0) or (nonskip > 0): + if nonskip > 0: + nonskip -= 1 + self.output += c + colourstack.feed(c); + if not UCS.isCombining(c): + indent += 1 + else: + skip -= 1 + + if balloonLines is not None: + for line in balloonLines[balloonLine:]: + data = ' ' * (balloonIndent - indent) + line + '\n' + for b in data: + self.output += b + colourstack.feed(b); + indent = 0 + + self.output = self.output.replace(AUTO_PUSH, '').replace(AUTO_POP, '') + + + ''' + Gets colour code att the currect offset in a buffer + + @param input:str The input buffer + @param offset:int The offset at where to start reading, a escape must begin here + @return :str The escape sequence + ''' + def __getcolour(self, input, offset): + (i, n) = (offset, len(input)) + rc = input[i] + i += 1 + if i == n: return rc + c = input[i] + i += 1 + rc += c + + if c == ']': + if i == n: return rc + c = input[i] + i += 1 + rc += c + if c == 'P': + di = 0 + while (di < 7) and (i < n): + c = input[i] + i += 1 + di += 1 + rc += c + elif c == '[': + while i < n: + c = input[i] + i += 1 + rc += c + if (c == '~') or (('a' <= c) and (c <= 'z')) or (('A' <= c) and (c <= 'Z')): + break + + return rc + + + ''' + Calculates the number of visible characters in a text + + @param input:str The input buffer + @return :int The number of visible characters + ''' + def __len(self, input): + (rc, i, n) = (0, 0, len(input)) + while i < n: + c = input[i] + if c == '\033': + i += len(self.__getcolour(input, i)) + else: + i += 1 + if not UCS.isCombining(c): + rc += 1 + return rc + + + ''' + Generates a balloon with the message + + @param width:int The minimum width of the balloon + @param height:int The minimum height of the balloon + @param left:int The column where the balloon starts + @return :str The balloon the the message as a string + ''' + def __getballoon(self, width, height, left): + wrap = None + if self.wrapcolumn is not None: + wrap = self.wrapcolumn - left + if wrap < 8: + wrap = 8 + + msg = self.message + if wrap is not None: + msg = self.__wrapMessage(msg, wrap) + + msg = msg.replace('\n', '\033[0m%s\n' % (self.ballooncolour)) + '\033[0m' + self.ballooncolour + + return self.balloon.get(width, height, msg.split('\n'), self.__len); + + + ''' + Wraps the message + + @param message:str The message to wrap + @param wrap:int The width at where to force wrapping + @return :str The message wrapped + ''' + def __wrapMessage(self, message, wrap): + buf = '' + try: + AUTO_PUSH = '\033[01010~' + AUTO_POP = '\033[10101~' + msg = message.replace('\n', AUTO_PUSH + '\n' + AUTO_POP); + cstack = ColourStack(AUTO_PUSH, AUTO_POP) + for c in msg: + buf += c + cstack.feed(c) + lines = buf.replace(AUTO_PUSH, '').replace(AUTO_POP, '').split('\n') + buf = '' + + for line in lines: + b = [None] * len(line) + map = {0 : 0} + (bi, cols, w) = (0, 0, wrap) + (indent, indentc) = (-1, 0) + + (i, n) = (0, len(line)) + while i <= n: + d = None + if i < n: + d = line[i] + i += 1 + if d == '\033': # TODO this should use self.__getcolour() + ## Invisible stuff + b[bi] = d + bi += 1 + b[bi] = line[i] + d = line[i] + bi += 1 + i += 1 + if d == '[': + while True: + b[bi] = line[i] + d = line[i] + bi += 1 + i += 1 + if (('a' <= d) and (d <= 'z')) or (('A' <= d) and (d <= 'Z')) or (d == '~'): + break + elif d == ']': + b[bi] = line[i] + d = line[i] + bi += 1 + i += 1 + if d == 'P': + for j in range(0, 7): + b[bi] = line[i] + bi += 1 + i += 1 + elif (d is not None) and (d != ' '): + ## Fetch word + if indent == -1: + indent = i - 1 + for j in range(0, indent): + if line[j] == ' ': + indentc += 1 + b[bi] = d + bi += 1 + if (not UCS.isCombining(d)) and (d != '­'): + cols += 1 + map[cols] = bi + else: + ## Wrap? + mm = 0 + bisub = 0 + iwrap = wrap - (0 if indent == 1 else indentc) + + while ((w > 8) and (cols > w + 5)) or (cols > iwrap): # TODO make configurable + ## wrap + x = w; + if mm + x not in map: # Too much whitespace ? + cols = 0 + break + nbsp = b[map[mm + x]] == ' ' + m = map[mm + x] + + if ('­' in b[bisub : m]) and not nbsp: + hyphen = m - 1 + while b[hyphen] != '­': + hyphen -= 1 + while map[mm + x] > hyphen: ## Only looking backward, if foreward is required the word is probabily not hyphenated correctly + x -= 1 + x += 1 + m = map[mm + x] + + mm += x - (0 if nbsp else 1) ## − 1 so we have space for a hythen + + for bb in b[bisub : m]: + buf += bb + buf += '\n' if nbsp else '\0\n' + cols -= x - (0 if nbsp else 1) + bisub = m + + w = iwrap + if indent != -1: + buf += line[:indent] + + for j in range(bisub, bi): + b[j - bisub] = b[j] + bi -= bisub + + if cols > w: + buf += '\n' + w = wrap + if indent != -1: + buf += line[:indent] + w -= indentc + for bb in b[:bi]: + buf += bb + w -= cols + cols = 0 + bi = 0 + if d is None: + i += 1 + else: + if w > 0: + buf += ' ' + w -= 1 + else: + buf += '\n' + w = wrap + if indent != -1: + buf + line[:indent] + w -= indentc + buf += '\n' + + rc = '\n'.join(line.rstrip() for line in buf[:-1].split('\n')); + rc = rc.replace('­', ''); # remove soft hyphens + rc = rc.replace('\0', '%s%s%s' % (AUTO_PUSH, self.hyphen, AUTO_POP)) + return rc + except Exception as err: + import traceback + errormessage = ''.join(traceback.format_exception(type(err), err, None)) + rc = '\n'.join(line.rstrip() for line in buf.split('\n')); + rc = rc.replace('\0', '%s%s%s' % (AUTO_PUSH, self.hyphen, AUTO_POP)) + errormessage += '\n---- WRAPPING BUFFER ----\n\n' + rc + try: + if os.readlink('/proc/self/fd/2') != os.readlink('/proc/self/fd/1'): + printerr(errormessage, end='') + return message + except: + pass + return message + '\n\n\033[0;1;31m---- EXCEPTION IN PONYSAY WHILE WRAPPING ----\033[0m\n\n' + errormessage + + +''' +ANSI colour stack + +This is used to make layers with independent coloursations +''' +class ColourStack(): + ''' + Constructor + + @param autopush:str String that, when used, will create a new independently colourised layer + @param autopop:str String that, when used, will end the current layer and continue of the previous layer + ''' + def __init__(self, autopush, autopop): + self.autopush = autopush + self.autopop = autopop + self.lenpush = len(autopush) + self.lenpop = len(autopop) + self.bufproto = ' ' * (self.lenpush if self.lenpush > self.lenpop else self.lenpop) + self.stack = [] + self.push() + self.seq = None + + + ''' + Create a new independently colourised layer + + @return :str String that should be inserted into your buffer + ''' + def push(self): + self.stack.insert(0, [self.bufproto, None, None, [False] * 9]) + if len(self.stack) == 1: + return None + return '\033[0m' + + + ''' + End the current layer and continue of the previous layer + + @return :str String that should be inserted into your buffer + ''' + def pop(self): + old = self.stack.pop(0) + rc = '\033[0;' + if len(self.stack) == 0: # last resort in case something made it pop too mush + push() + new = self.stack[0] + if new[1] is not None: rc += new[1] + ';' + if new[2] is not None: rc += new[2] + ';' + for i in range(0, 9): + if new[3][i]: + rc += str(i + 1) + ';' + return rc[:-1] + 'm' + + + ''' + Use this, in sequence, for which character in your buffer that contains yor autopush and autopop + string, the automatically get push and pop string to insert after each character + + @param :chr One character in your buffer + @return :str The text to insert after the input character + ''' + def feed(self, char): + if self.seq is not None: + self.seq += char + if (char == '~') or (('a' <= char) and (char <= 'z')) or (('A' <= char) and (char <= 'Z')): + if (self.seq[0] == '[') and (self.seq[-1] == 'm'): + self.seq = self.seq[1:-1].split(';') + (i, n) = (0, len(self.seq)) + while i < n: + part = self.seq[i] + p = 0 if part == '' else int(part) + i += 1 + if p == 0: self.stack[0][1:] = [None, None, [False] * 9] + elif (1 <= p) and (p <= 9): self.stack[0][3][p - 1] = True + elif (21 <= p) and (p <= 29): self.stack[0][3][p - 21] = False + elif p == 39: self.stack[0][1] = None + elif p == 49: self.stack[0][2] = None + elif (30 <= p) and (p <= 37): self.stack[0][1] = part + elif (90 <= p) and (p <= 97): self.stack[0][1] = part + elif (40 <= p) and (p <= 47): self.stack[0][2] = part + elif (100 <= p) and (p <= 107): self.stack[0][2] = part + elif p == 38: + self.stack[0][1] = '%s;%s;%s' % (part, self.seq[i], self.seq[i + 1]) + i += 2 + elif p == 48: + self.stack[0][2] = '%s;%s;%s' % (part, self.seq[i], self.seq[i + 1]) + i += 2 + self.seq = None + elif char == '\033': + self.seq = '' + buf = self.stack[0][0] + buf = buf[1:] + char + rc = '' + if buf[-self.lenpush:] == self.autopush: rc = self.push() + elif buf[-self.lenpop:] == self.autopop: rc = self.pop() + self.stack[0][0] = buf + return rc + + + +''' +UCS utility class +''' +class UCS(): + ''' + Checks whether a character is a combining character + + @param char:chr The character to test + @return :bool Whether the character is a combining character + ''' + @staticmethod + def isCombining(char): + o = ord(char) + if (0x0300 <= o) and (o <= 0x036F): return True + if (0x20D0 <= o) and (o <= 0x20FF): return True + if (0x1DC0 <= o) and (o <= 0x1DFF): return True + if (0xFE20 <= o) and (o <= 0xFE2F): return True + return False + + + ''' + Gets the number of combining characters in a string + + @param string:str A text to count combining characters in + @return :int The number of combining characters in the string + ''' + @staticmethod + def countCombining(string): + rc = 0 + for char in string: + if UCS.isCombining(char): + rc += 1 + return rc + + + ''' + Gets length of a string not counting combining characters + + @param string:str The text of which to determine the monospaced width + @return The determine the monospaced width of the text, provided it does not have escape sequnces + ''' + @staticmethod + def dispLen(string): + return len(string) - UCS.countCombining(string) + + + +''' +Class used for correcting spellos and typos, + +Note that this implementation will not find that correctly spelled word are correct faster than it corrects words. +It is also limited to words of size 0 to 127 (inclusive) +''' +class SpelloCorrecter(): # Naïvely and quickly proted and adapted from optimised Java, may not be the nicest, or even fast, Python code + ''' + Constructor + + @param directories:list List of directories that contains the file names with the correct spelling + @param ending:str The file name ending of the correctly spelled file names, this is removed for the name + ''' + def __init__(self, directories, ending): + self.weights = {'k' : {'c' : 0.25, 'g' : 0.75, 'q' : 0.125}, + 'c' : {'k' : 0.25, 'g' : 0.75, 's' : 0.5, 'z' : 0.5, 'q' : 0.125}, + 's' : {'z' : 0.25, 'c' : 0.5}, + 'z' : {'s' : 0.25, 'c' : 0.5}, + 'g' : {'k' : 0.75, 'c' : 0.75, 'q' : 0.9}, + 'o' : {'u' : 0.5}, + 'u' : {'o' : 0.5, 'v' : 0.75, 'w' : 0.5}, + 'b' : {'v' : 0.75}, + 'v' : {'b' : 0.75, 'w' : 0.5, 'u' : 0.7}, + 'w' : {'v' : 0.5, 'u' : 0.5}, + 'q' : {'c' : 0.125, 'k' : 0.125, 'g' : 0.9}} + + self.corrections = None + self.dictionary = [None] * 513 + self.reusable = [0] * 512 + self.dictionaryEnd = 512 + self.closestDistance = 0 + + self.M = [None] * 128 + for y in range(0, 128): + self.M[y] = [0] * 128 + self.M[y][0] = y + m0 = self.M[0] + x = 127 + while x > -1: + m0[x] = x + x -= 1 + + previous = '' + self.dictionary[-1] = previous; + + for directory in directories: + for filename in os.listdir(directory): + if (not endswith(filename, ending)) or (len(filename) - len(ending) > 127): + continue + proper = filename[:-len(ending)] + + if self.dictionaryEnd == 0: + self.dictionaryEnd = len(self.dictionary) + self.reusable = [0] * self.dictionaryEnd + self.reusable + self.dictionary = [None] * self.dictionaryEnd + self.dictionary + + self.dictionaryEnd -= 1 + self.dictionary[self.dictionaryEnd] = proper + + prevCommon = min(len(previous), len(proper)) + for i in range(0, prevCommon): + if previous[i] != proper[i]: + prevCommon = i + break + previous = proper + self.reusable[self.dictionaryEnd] = prevCommon + #part = self.dictionary[self.dictionaryEnd : len(self.dictionary) - 1] + #part.sort() + #self.dictionary[self.dictionaryEnd : len(self.dictionary) - 1] = part + # + #index = len(self.dictionary) - 1 + #while index >= self.dictionaryEnd: + # proper = self.dictionary[index] + # prevCommon = min(len(previous), len(proper)) + # for i in range(0, prevCommon): + # if previous[i] != proper[i]: + # prevCommon = i + # break + # previous = proper + # self.reusable[self.dictionaryEnd] = prevCommon + # index -= 1; + + + ''' + Finds the closests correct spelled word + + @param used:str The word to correct + @return (words, distance):(list, int) A list the closest spellings and the weighted distance + ''' + def correct(self, used): + if len(used) > 127: + return ([used], 0) + + self.__correct(used) + return (self.corrections, self.closestDistance) + + + ''' + Finds the closests correct spelled word + + @param used:str The word to correct, it must satisfy all restrictions + ''' + def __correct(self, used): + self.closestDistance = 0x7FFFFFFF + previous = self.dictionary[-1] + prevLen = 0 + usedLen = len(used) + + proper = None + prevCommon = 0 + + d = len(self.dictionary) - 1 + while d > self.dictionaryEnd: + d -= 1 + proper = self.dictionary[d] + if abs(len(proper) - usedLen) <= self.closestDistance: + if previous == self.dictionary[d + 1]: + prevCommon = self.reusable[d]; + else: + prevCommon = min(prevLen, len(proper)) + for i in range(0, prevCommon): + if previous[i] != proper[i]: + prevCommon = i + break + + skip = min(prevLen, len(proper)) + i = prevCommon + while i < skip: + for u in range(0, usedLen): + if (used[u] == previous[i]) or (used[u] == proper[i]): + skip = i + break + i += 1 + + common = min(skip, min(usedLen, len(proper))) + for i in range(0, common): + if used[i] != proper[i]: + common = i + break + + distance = self.__distance(proper, skip, len(proper), used, common, usedLen) + + if self.closestDistance > distance: + self.closestDistance = distance + self.corrections = [proper] + elif self.closestDistance == distance: + self.corrections.append(proper) + + previous = proper; + if distance >= 0x7FFFFF00: + prevLen = distance & 255 + else: + prevLen = len(proper) + + + ''' + Calculate the distance between a correct word and a incorrect word + + @param proper:str The correct word + @param y0:int The offset for `proper` + @param yn:int The length, before applying `y0`, of `proper` + @param used:str The incorrect word + @param x0:int The offset for `used` + @param xn:int The length, before applying `x0`, of `used` + @return :float The distance between the words + ''' + def __distance(self, proper, y0, yn, used, x0, xn): + my = self.M[y0] + for y in range(y0, yn): + best = 0x7FFFFFFF + p = proper[y] + myy = self.M[y + 1] # only one array bound check, and at most one + ☺ + x = x0 + while x < xn: + change = my[x] + u = used[x] + if p == u: + # commence black magick … twilight would be so disappointed + x += 1 + myy[x] = change + best = min(best, change) + remove = myy[x] + add = my[x + 1] + + cw = 1 + if my[x] in self.weights: + if p in self.weights[u]: + cw = self.weights[u][p] + x += 1 + + myy[x] = min(cw + change, 1 + min(remove, add)) + if best > myy[x]: + best = myy[x] + + if best > self.closestDistance: + return 0x7FFFFF00 | y + my = myy + return my[xn] + + + + +''' +The user's home directory +''' +HOME = os.environ['HOME'] if 'HOME' in os.environ else os.path.expanduser('~') + + +''' +Whether the program is execute in Linux VT (TTY) +''' +linuxvt = ('TERM' in os.environ) and (os.environ['TERM'] == 'linux') + + +''' +Whether the script is executed as ponythink +''' +isthink = (len(__file__) >= len('think')) and (__file__.endswith('think')) +isthink = ((len(__file__) >= len('think.py')) and (__file__.endswith('think.py'))) or isthink + + +''' +Whether stdin is piped +''' +pipelinein = not sys.stdin.isatty() + +''' +Whether stdout is piped +''' +pipelineout = not sys.stdout.isatty() + +''' +Whether stderr is piped +''' +pipelineerr = not sys.stderr.isatty() + + +''' +Whether KMS is used +''' +usekms = Ponysay.isUsingKMS() + + +''' +Mode string that modifies or adds $ variables in the pony image +''' +mode = '' + + +''' +The directories where pony files are stored, ttyponies/ are used if the terminal is Linux VT (also known as TTY) and not with KMS +''' +appendset = set() +xponydirs = [] +_ponydirs = [HOME + '/.local/share/ponysay/ponies/', '/usr/share/ponysay/ponies/'] +for ponydir in _ponydirs: + if os.path.isdir(ponydir) and (ponydir not in appendset): + xponydirs.append(ponydir) + appendset.add(ponydir) +appendset = set() +vtponydirs = [] +_ponydirs = [HOME + '/.local/share/ponysay/ttyponies/', '/usr/share/ponysay/ttyponies/'] +for ponydir in _ponydirs: + if os.path.isdir(ponydir) and (ponydir not in appendset): + vtponydirs.append(ponydir) + appendset.add(ponydir) + + +''' +The directories where pony files are stored, extrattyponies/ are used if the terminal is Linux VT (also known as TTY) and not with KMS +''' +appendset = set() +extraxponydirs = [] +_extraponydirs = [HOME + '/.local/share/ponysay/extraponies/', '/usr/share/ponysay/extraponies/'] +for extraponydir in _extraponydirs: + if os.path.isdir(extraponydir) and (extraponydir not in appendset): + extraxponydirs.append(extraponydir) + appendset.add(extraponydir) +appendset = set() +extravtponydirs = [] +_extraponydirs = [HOME + '/.local/share/ponysay/extrattyponies/', '/usr/share/ponysay/extrattyponies/'] +for extraponydir in _extraponydirs: + if os.path.isdir(extraponydir) and (extraponydir not in appendset): + extravtponydirs.append(extraponydir) + appendset.add(extraponydir) + + +''' +The directories where quotes files are stored +''' +appendset = set() +quotedirs = [] +_quotedirs = [HOME + '/.local/share/ponysay/quotes/', '/usr/share/ponysay/quotes/'] +for quotedir in _quotedirs: + if os.path.isdir(quotedir) and (quotedir not in appendset): + quotedirs.append(quotedir) + appendset.add(quotedir) + + +''' +The directories where balloon style files are stored +''' +appendset = set() +balloondirs = [] +_balloondirs = [HOME + '/.local/share/ponysay/balloons/', '/usr/share/ponysay/balloons/'] +for balloondir in _balloondirs: + if os.path.isdir(balloondir) and (balloondir not in appendset): + balloondirs.append(balloondir) + appendset.add(balloondir) + + +''' +ucsmap files +''' +appendset = set() +ucsmaps = [] +_ucsmaps = [HOME + '/.local/share/ponysay/ucsmap', '/usr/share/ponysay/ucsmap'] +for ucsmap in _ucsmaps: + if os.path.isdir(ucsmap) and (ucsmap not in appendset): + ucsmaps.append(ucsmap) + appendset.add(ucsmap) + + + +usage_saythink = '\033[34;1m(ponysay | ponythink)\033[21;39m' +usage_common = '[-c] [-W\033[4mCOLUMN\033[24m] [-b\033[4mSTYLE\033[24m]' +usage_listhelp = '(-l | -L | -B | +l | +L | -v | -h)' +usage_file = '[-f\033[4mPONY\033[24m]* [[--] \033[4mmessage\033[24m]' +usage_xfile = '(-F\033[4mPONY\033[24m)* [[--] \033[4mmessage\033[24m]' +usage_quote = '(-q \033[4mPONY\033[24m)*' + +usage = '%s %s\n%s %s %s\n%s %s %s\n%s %s %s' % (usage_saythink, usage_listhelp, + usage_saythink, usage_common, usage_file, + usage_saythink, usage_common, usage_xfile, + usage_saythink, usage_common, usage_quote) + +usage = usage.replace('\033[', '\0') +for sym in ('[', ']', '(', ')', '|', '...', '*'): + usage = usage.replace(sym, '\033[2m' + sym + '\033[22m') +usage = usage.replace('\0', '\033[') + +''' +Argument parsing +''' +opts = ArgParser(program = 'ponythink' if isthink else 'ponysay', + description = 'cowsay reimplemention for ponies', + usage = usage, + longdescription = +'''Ponysay displays an image of a pony saying some text provided by the user. +If \033[4mmessage\033[24m is not provided, it accepts standard input. For an extensive +documentation run `info ponysay`, or for just a little more help than this +run `man ponysay`. Ponysay has so much more to offer than described here.''') + +opts.add_argumentless(['--quoters']) +opts.add_argumentless(['--onelist']) +opts.add_argumentless(['++onelist']) + +opts.add_argumentless(['-X', '--256-colours', '--256colours', '--x-colours']) +opts.add_argumentless(['-V', '--tty-colours', '--ttycolours', '--vt-colours']) +opts.add_argumentless(['-K', '--kms-colours', '--kmscolours']) + +opts.add_argumented(['+c', '--colour'], arg = 'COLOUR') +opts.add_argumented(['--colour-bubble', '--colour-balloon'], arg = 'COLOUR') +opts.add_argumented(['--colour-link'], arg = 'COLOUR') +opts.add_argumented(['--colour-msg', '--colour-message'], arg = 'COLOUR') +opts.add_argumented(['--colour-pony'], arg = 'COLOUR') +opts.add_argumented(['--colour-wrap', '--colour-hyphen'], arg = 'COLOUR') + +opts.add_argumentless(['-h', '--help'], help = 'Print this help message.') +opts.add_argumentless(['-v', '--version'], help = 'Print the version of the program.') +opts.add_argumentless(['-l', '--list'], help = 'List pony names.') +opts.add_argumentless(['-L', '--symlist', '--altlist'], help = 'List pony names with alternatives.') +opts.add_argumentless(['+l', '++list'], help = 'List non-MLP:FiM pony names.') +opts.add_argumentless(['+L', '++symlist', '++altlist'], help = 'List non-MLP:FiM pony names with alternatives.') +opts.add_argumentless(['-A', '--all'], help = 'List all pony names.') +opts.add_argumentless(['+A', '++all', '--symall', '--altall'], help = 'List all pony names with alternatives.') +opts.add_argumentless(['-B', '--bubblelist', '--balloonlist'], help = 'List balloon styles.') +opts.add_argumentless(['-c', '--compact'], help = 'Compress messages.') +opts.add_argumentless(['-o', '--pony-only', '--ponyonly'], help = 'Print only the pony.') +opts.add_argumented( ['-W', '--wrap'], arg = 'COLUMN', help = 'Specify column where the message should be wrapped.') +opts.add_argumented( ['-b', '--bubble', '--balloon'], arg = 'STYLE', help = 'Select a balloon style.') +opts.add_argumented( ['-f', '--file', '--pony'], arg = 'PONY', help = 'Select a pony.\nEither a file name or a pony name.') +opts.add_argumented( ['-F', '++file', '++pony'], arg = 'PONY', help = 'Select a non-MLP:FiM pony.') +opts.add_argumented( ['-q', '--quote'], arg = 'PONY', help = 'Select a pony which will quote herself.') +opts.add_variadic( ['--f', '--files', '--ponies'], arg = 'PONY') +opts.add_variadic( ['--F', '++files', '++ponies'], arg = 'PONY') +opts.add_variadic( ['--q', '--quotes'], arg = 'PONY') + +''' +Whether at least one unrecognised option was used +''' +unrecognised = not opts.parse() + + + +''' +Start the program from ponysay.__init__ if this is the executed file +''' +if __name__ == '__main__': + Ponysay(opts) diff --git a/ponysay.pdf b/ponysay.pdf deleted file mode 100644 index 01979df51c7e867151031582104fd0b91c748479..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420178 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%0D6+Cj=JZR7Mi7gWxk8N^M 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%0D{ z_Nl*fEYq;>txMpVcYqjCuSq7yUGH=Wh zq%OA@7%to7+h)u=gFr63&*Irj{;1?xCmfp7k;lB`TE@A_U7ZDYSdQ#q3|^_``^1qsO-cVObJ~ej z8x4KCB_A%k;mCew#_Tm`w#;xeckA7C^xpM^*>lA%uVy=)eB=w~!~p+S+YYWgrf`dI zhMsBOq73VVS$9HK8{g=>>#lrDF;nt`PtKm16*E^{Q3=)+mX&_CjbM zPwYM9GP^5~SN5{(KHn7~*%PYQTEyNqb$k>dv^wP0%PT8ZFO8W#A>vN(QYH_aHr>CE%RBes;yUlBHuG71zZD1UvABE;=Aq?wRK*ELBh9Ld-*P}IXTOs{OPL$ z3ARE$^2-8sCo$z*xW=XuwKz@o(rFXUg!R|?Hi#FRKDf1|YjNDVKJ{x>b6zdywA&lD zHD4)q!j~*lkMy%92bW*Z=D+D(Df?vC9QU8cF1TIlUb!)~+Ir;-+Z6q0r4zDj`BDnz zeZ4AqMoZn`4EIQdirLpA4m#xvPWS4xhW9%KAfDfrH0WzP+rsdCP{ zjvdr@u~kheySq26y@Mw%{eR_=-;YEyY%AVz?EL>JT=3;p2ARA~7Pa=X|6aSCd)|Ng znatVuR6JYjZeRGgZgun=@uK^V`yb9&Cuf+T@W`B(OVr}@^6sAx^SCWrYO3m^Pwf5n zILJW5=89Q>Vo}(0=gGUGavD}a^^IpKG zEw8K9s>SJK>bWD!^EhWs)Y^M3YGtaHZi?}?+aIpHtj<_{JRo~x%*KG{mQ&+q%)i)t z)aw1lzb^zb{PZRqlX=XNjYg`duh*T3z+)>;l&Km`6>|~y zUhi%C_eRbM=^t+wUy7MAeba=J#8s=VPw|jFd2+`ahgWe7ZQOVAg0B^8ryf))-x3=c z)%9Yc-}k*2I1(CvGyM|K6ZJk+GEHArh?PCy!tPuXrOAF=^NrRO=sgwKW&N(T&%5gP zDns#EOvdZ4ez^XNRn>R<;xEgjs=64Ko>P6VJ@ZG5-o?cePj`2-UR*p&=lCX%eNDfX=?l*4I%@uV z-Tdju#flZK=Wi!GJX$!B&tRSN((>IiH&{yw1ady{EbV%HOSLgZs=SrEagX)KJ9ZOx z>&+=vSRSsO=^r+=E_tiwy=5uOVq$K31*(Kz)^X>aSFy@wvCz*;?Ku}#cFa4IQC@ZK zltI*1<@kGg|2>cYomIKU`16ZbbDR0?F7A|k*<6~Ge0h49v|UU@)S-g~bycM^WzyH1 ztbFmKt|>bCzQ4Kc7uV}EmhOG-%P#I;Z*!!hb=MVlt>fp{Em~p0v-NfQ57pG;8)r#+ zA1F6py5zZ%wroI zGj0C+S0^v^mNRnqDM|47aw?I1&C9ckgLG3p7O&-4e$7pH;_~j|v{yg-drxVeh})pQ zHEu)IvQ1k=R)5&hxb4g3-5&Gqi+RnRdTigKg+b3hZGTlYd7aSv?a$l0A8&qI6Sz)H zUVhGk=hNA5&*p#s|Mk7|(NPO)%Ran|+2OQdtLcA@xVw#F? zs&9>@KixZc^YFJHcLn8wZ%k-$sx3Du{kOqphOB(vynVB`GQBCE{`MrdftPgAe(9F4 zjB@Vm+`A_IamzdP{^_mIvR-=F-g^O^alK+%5{`IGY% z{|f)ya_Io~PW|{(%#{T{>TaI8{wYB2T>9tWpKT@1Jx`;5ev|nBFX!p)pTApc)cc=Y zT)uhnw-CA0_n-RAI}u!2RddU!y?9Fcr#A@~=bgK?{d7>Y!Su~#g*Nrd{~P9=e_Hul zy=}gH{gmgMn?Eb>oN{`x>+Mrd+jrLJ|DPiN#Qmq|zvZ!K^k*G;IeW&Fd!Oay?bQDN z{@EVNm%+|n^3qssVgkdg#|yVcR#s$=j!Pyw>cU2WzMIu$L_J1 zGk=auNZ?}IN@wlewz~1Er{%&_V z?Vntosq^r~lN}x(TN_`lx=^zC?xT;3=a-e2pLBi1HNSsudq(oLM~a18+c&U!9B*DD z?)urhYghF5xHtd3q#vH^dYaSzH0N-YOYwD!|9kVU%gfe@zq5T;JpJ#tXS?sRp5J|I z@4tI_&-1sK-ueIU=I6QU7kS{#^KTN-#Q<;!nyy(tvK!Y{u`5eaqj`$B{mbEPfyu(@!rQzH^2MGz1!qd zUA_8EM#k?Af2J1*sDuP%);elc$t*ECwq}ynlk*;>Ebr%+ezQ*I)_b^XzMf~*Vu2qC z|4&}~X6E^;Xz82|kw5#xFZ`b>c=~jltHg~@?{ok7t({h~aYnty>Th4G-^ky1+$Y|? z`CCEVx6HzqIRb4He#GBf|NAVqKAxE|QXkJJH7~s+!%)G<0Qty4Lo)+&b65ut`OHB> zb7KP&aA%K;;F*IxUs(fUZeMHYW;&?2gFW+3Y}4-D(FGZIGVkbGsAODtAa&>N-Me=c zcl=I0ZCO44|K3&A-K)}S4q^PlH} z4yiu83C|w=^7+2p+TjG-i;Tpa4DJcWEHjyN?-@%;M=^)I>CtUa`2L^M@n|+5)6HUI zqg}gp8A;r-FuY+o>tpa`#u#0PXAG$egfCoV&0zYmIJIHVLf#MWuSq;O$++s7m|wkS z$QvKWb!~kP2X-I0bx0!P^_O>#aXD@3ww?e|mOm_VcXQKjn?KZZI|cyO>uvz1qz*nwvd+!IT&G&E6~h zs830A5NMd&+1WX{RhXfKf#Gh?S;_w%3tr{%{|P?%r~SuX_I&?p>*|J=)zS|6+`$ii z+gJFjJBuqYJbA(M<=da_kLo$+&6G??O5|aZU_7gn^YDM?KRvct|Bk-@{yyU&+mAzE z?CQ=iEVKXj@As15c8O|b+pfL)KjVMp(Vjy|r;;`mZK>b>Cw}RM4RfUrOrAGY*5Ul2 zb1VsIX^G4=b@d}4k^)vq4>mQu2_y2#||9*}C>mUEG*A^<@w(VcA z|JUgU|M%a!aO}{nzxmzYE6dpSzHggz_jlWkfAPV*58}CX*-bVUZ2P%CN^`=)-+df6 zXYD<2X=^OaEPOk@h+Dmo+k8RiBGwZ({;ZGubv|{^^9|cJuxj11jQsQQUgh_sq+j;C zzF#%oR#m^3GmK8Qo@^gBp>-~E!iyIfFZll3F}^>-_aUY3eyH$* z+w+zA5>hs7W!}4+;a>F@wi&l95B)FPDD#HFZK1tO{l#>K#V72KuqKH7)~`)tGU)p6 zyoSMTW&I1=t~2&W7!#)aZNHa%>aX)02DhK}FKn9+)pvfjZGL3`WuD_x`6On8RsWpd z|Ge^V;rE(X|1VVgto<)^y}Imh{R`XO7wx~~W&Vjzs=qFIJ92;gk$RQ-JM4>3?w=re zfa4E)Bty?KvHzF$UC;ieU!#BH&;AqN;x_Euz1Q-?{fqZg|9`7rf8|yDkGQ_C`#D=7P)_4M!NV=q4F*XUpS82=+~=H>k# zY#Cm}|A<@hdH;vK0n_UrRxe!l-)hNsr@Q}J-?#4i-}&G8=&^Hseed;u*~go|SN8WheS=|)%PP@f!=cV_38#mOx+0C=R?dlD|!=*RFxda~8?npY@ z86og$#?9`E8xGcKnl-DpUpkVs=~DD}uf7MzqSjP85+B_P3@Z(uK9hofx}Qtl(G5n$&+0i zf>*SrT#HhR(KNBWtmgWxMAM>7$X%iC$Aml9XAbSVx;?~)J#XX8KQCXrSiJX4=`F$k z{mpuOHj>Sp2TXqYO_w-#*?d*Q>uC!0TFT1>MHz$Um8_iG>3#C_Tn)|C&1@(C_44oa zly@=PH*rq>0nWcA#*6M;db}`GTsMa+-Y4Mf=Y-VdI`6bJCptVAZg+kW*&sask8H@% z55l3xytfq<7=`&?)l{stvh2^Z5Z&t+`1Dlqyvj=wc@|0+3~x30?Ug8(*&82mD6rt>ecCV@avJO`{+{PBeh^&_xq!Ubyi9TQzy30H2HMohSSL#77b#j zD|o^xyKdjl{WK%f{CLgP>x&I#7U~P$GG@OoIxR4>vZD3HpowHx> zh;+%#J(@2%y(b2kEHtg1oF|~hD*s~ZoVP7jnTb|^FYV~Hms#{%EaWV=VAtc1F+XoV z(lxzk^*2WOrS1%ewM9q1R9iT8ey^D3JY}9??1l&HSF#d$d1A5+d8;eA&pErr~^-ESP4z>LK zBxGwtuHdx1=PE^ax4bV4pVW8iqv)X-MiL8S{rIQkJpO4`KSg1V+ZublUwa?VH+5EW zp7NP9_vOd*LZbr#T9NMiW-WXBAV#zJXUj8YHvfJWX*m-vHYvTyW}-K5JY2JkTdvn_ zN${18N>5%d%9Wh6^Vw=C{x~`3^@d-H3g=bb1@bOrAaq0%AN1$vGJW;jX=~XVD2BthgH1=K3;AsS$Xa8mr{1;e-+2qZ zCmT#^K9^p9QmAh~G0`@ucuC~Z))W1#`y*4``~`Dkd}kW`a-8xaZAR?ZAM6`=?tgp! z`ISxU#P!E-_GJgKCT+0xPFx%8vv%eakAqKVWrb{M@G6-sSF-R{Uqoa_o$WNl_$rUs5}qC$*AFer>=&IO&?WuB2gTTQEPMxVQJd%o>Us?&Mqi zbIIDp@8(3CifdNvV%@g%`}fYcP3`loZ8_wB-_G~#QoCYadiqsY(H5?s=QFvKl5ZXh zQfxcRyW^~#=FFu}-bo*7cw#QZzQaSx^Ya1MOuZAox}z^$*mmb`=_ZEO7_Nk!NgDIs zsocLbwIyb~q`ul`U89dLo=ut+RCM5#g~g4Xi&;bd1ju+szREvvp!s3I;>`6W{Z;)uI-Akk9+a5CiMAb*AVAJ&%Q`X-oDv$h(Ra*-saW`4nH@(|11!bxYhhqgkFv} z`@T!}^i6Ip6?T6kE*`M^xY3J`iw^tA{jHgO(RlLqu;=?MxF)$oR4zGnv_fUp7M0{5 z-#*C3rbt##sDE|uNFn=HXYJFAyG`ptMEv_(I$mXNyqf{TD4bz1;b*tR&NZ!}}_E?_H;a>ACH6jlDcME#s_f_T|$uzuZ3>u4i@FF2>;4 z@l)ve>Y#Y0B39+o+UgFhpAAyC?|jh_sGoVuC00W4TlYhStaV%5OPf<{f_sX8@hyvg z+T!(hQ>@D3X^cEeB~7i51$>m%z#*JtaQoXM^_Am$crTXHneV5!)qTej0y^M6Y@ zzQ@Dmh*r$r*6)|9qCfMUo^dKd^UeC0rkhiC%>A8Ow_{t}53(K>%-eQ~X-?T{tMkW?pWaxr!MDx&0(11f@|({;-{j+T=njfi zsJs90@%s<9bGC4PW{&@IVp4iNU#s)s)2=SFb}f=tOHNd=WOP2Z!|1E-kCPK!UHsPi z*rjYawKF4fisT7KVegdUwwY0{8LV}dx#&B6DZHW?xUBA(@0I;uHibP8XP9rK{Y~N7 zVov*w*FHsjF$~`vvm!|JO9a#6Uu!(Srb$}7$r69N`oljimb9PEYt{ja#z_ss6 zZ|$xNzKpvpeUk+j%=Tkmwdgm)*UL}W+7;!ou9_9PknQvwmZNzhC$#2Yi(g%i-8rf2dAOMO(^Dree&zUkXz%&wL2u$>r%3<5sC@hq z6W7v~%4PbwD8C&O#_f<|#r#D(RbePhxACOzMh>k{@Ym$~LY{CDNol0DovPv7De{c4>QXqtTTuNN18s*z~-B0c>( z%ii8Cd3wfn&sM+w6Q7&zvz7ZDN=uPiD*ks%a6`4hGZ|}(g6fDZ3iCKReyNC=*+m`Q zHKk?B^!dH>3+^ADa&}&V_mz+*&x20MJ3Hqv{ovsJmlN-Pn#u6d=0dZ3?<_pdDxbYP z!$@+M;@O~Tlc(!WANa$to7au=Oy81}Tld*7YuY$X&SouqeEi4k(ly_|%6447#Uf*Q zZ1cIqP|=GC4Gy!6=FgdGe?lnL>Fh!ob{_F(U%Ae2XngPF)~|7E!IJMY+8NiD$KBpP zMXHe3bdBu^ZE;IB)5DXDPd><<^VK+KyUTyGM{fep`iXtySsr|(#O|R}gNk}%{%h}4 zH|e*L8BTkzaZdPx9_iU-xPZv0cC0{pRaJ8*$jiBP`=J%D0 zdzYk2Y~Fs@ySQ_o68E(0s}!HV-{Uy{!b8E;T1U@Do9%9|`TO{8~l=XHw$)_JjApYCq?{_2hWCa?UJWfe>Og5=|v7yis?Gm~#;+HpTlYDW5^ zfSy;1c3sbk_a;>HcT2a_%*fVH-DP}l{r!z+!{RvKOxVS{b$#LX06~e53FQpOLRZhQ zh}p-uUiZ*_JFTVOtBYOopQ(Mm-8k>2W`v$z-{y@`ueO>VI~jNT>69I!$D`e>O8l&k z#eB}6ExA61MOXUAv3q7;QiWOeKf5csyX>^TsRMgu_xc$bpAMMS$#dD4_P)4pEv=ky zG)3Fw-MKHeX=m(??l&+}`Z9IlQ6Jyb!U%0cQ`bca%llf|s*V_JO*|mFN!>pDQOCGDTRxiAF z>6hd4kB=8#S58`F%f*$Zzkkl0nHGxTYwS0#Tl8x+Tj$=-Ka3UbJ-ZcfbK=f|+S?z0 z?qrG$P-)?E)ZhD0c}3o5-^hN=|Jg@Y@Nm36Q@l;~rq7OFohfB|AH4Iq@?~B{^4#;< zO4~d#<^CNu`~KNgCe-@Q^bdLSoj9*(sEa#!-+!{uVzrPfi}9b_W5si_>|R(tS$#YI z*RHIDmYJnZ@u1n-7sH+C4b+GH_^GTzp^e^a5GW0 zed4CcN1teNYCqn1`)u&}J0%wDnVv3V?+}kH5NTn4V;9RKE~xmKd6Qj=);FDUy}EPB zihh2(l~bNQ{2jBT>rvx|4LVa5TNzyx#Tgqrmi##L^;u-c+hgxvh56N7({syyZ23T7 zPIFu+^Ifa8zn;u{9^88MkBErek065?ndYJ%QvI*iYW0g{IR&P_vfQ#d;qt~5=0*25 zcIcW5nV)BW>0lQessF@|;VtLaHd!y1UGruf%&jf_`><<@x6Z9|%P*f#uUodlNcZX% zzq65x>+vt@4kzTDiz-FN;tZQJ*)e^pO$H?PR7{ENoTm8&C9uew;$ zw5su-%{o<%_2sU{JM8_nyKLE_mT{YHIM#2|u(^DLeAwEg-k&zV&gb)#%c=0D@t)Wq zoPV<_Kz`!Gld6# zaR>;BTs>83xn`cH@_vVt2SYPIa3q9__8j$Z+gMh-KXzH{bLIb5jv|ql&OA!^@#m1| z(luRw+`s7+?lXP0!7k}irC-5<>kkfP-06u-W!kc@=H?tB7v^7Qxy<9j5~~@P%}&OOuFcx}=9t)W&Wbqj;O-?(~c z+2;k(WjhpJmtD4qUsq>zxywE*XqCu^g$Fp}_wNb%|I*{NOpl>>vg@ZgF-0=hOmzIN zhs*O$RH+cI>H90KJN?EH5vlGh{xcqj56ts8Te-#Q@$~gqH@`@|{9Rsu`GGTXKb$Jg zvzo7pOu6~%%PspYXT@$fy>KneOW43xK4L^~IkMfnBUs$-u=f6EjW2)Z*z7wr zXPXV<)F~97cMq_2r5L-t6}ce7 zePd0*#@}=ARx%NV9OD?Z;Nw!^>@u(s_L&Zg_HDaqo*z)7#3G?4P4O{+zA#j=%W+ z<&o<->+h8Ms(y|CQt@Qs9o4Hz3njumJy&q1-*@1>kj~?JxXxAf$m5k_>k{)MKki_e zx6i%foznHy9ZGI-g2K5LOF1;Yo;_(Z^)~1Hi)*bOKPoQ2bU&ppbcTL({TmPIqN`PF zvPvwT@*MA<-4W(+Fw4ts(bAVQbe12F+V(SO^RBfMZtn|-Vm@%opf**6OYU^;6vL9R zr8nN{8i>~1_^Ez|W$Uz?clZ>$U~|6qiwQD9 zt!%p=g(Rw!4legynX9+b_k=^~m$nB4J6EU2aM0r_&|E*M#qj zSRb_HZSsSKt(w1&WbEJ)ejaoDp6$(7-wH2zZQPyp(red(^&wk7t(f@bzrrrQI~`Mw zAAK3q=#*`fzT4-o)jqGyTz88PKVLcbUv#hXvA(crH6>HuFMT98!SQ0uTO)~%S8rk; zJqQuJ5a_XdOQ>R;-hw-7iODnAuGZ~O+Ss^#w&H`n7yoKc$t?R}d`cf}k z;OFXFT(<6#1wRWmZtM)>TD?o3vBYmpV%O_i_4$$FF^~|LtG~~W0q_QUbH<+NAb4)g~{UUx8zPx6Yq@Vb#Z}t_m#frjnngybIKf&zARF_3@>_il~S; z0$#g%4{db4&B2$w!pU)IfBLcGj&n{|G<>n!f8>S*=k`p!oo8LP*J9= z?4I!Ie|x+v1)O&+kU!vWtQ^>*Ah)?=_uG@oPMlk&8C~1LxZu)K-Ijus^Qyr)soghK zVsAcjax>KM&e`9~Rm&PC%HH_(`!l&sD%k=R2Ty-c2|Xm@%XG@_Q+>hju+J`k8fMDg z?f)U@m>2Rwt+H+TpS*?kccf3g$esN)IoeG5bdk>rVbiU0RS&tItUa0=_$bOn%6M7P z`$N19Su)GbH?ChJZ~v_NFyll?>5D0%vrUuJ*Dw3Tev4CIGkCGWd7aOOE*sZeV2J&8 zK!01w%D6eZTAnJ+EV-e3X!CF^RVJmMSG$%yy1}|#^KgMSPn&vYh|&@6*AEuC%{AZfLwV(eB-gx(?rBfdc_&Ay z?~P42lG5LJX8Ov&?9ShjJyBr_2eBWCL%^rR)PnAJ}Y465U?D6ZbKVirhbJu z6Z+`a;}^b7Z&Q9O`lRgXC*QeU^1IH-?xe0c>(4qy2*_F;^_`c`epU5BNUKxN^z6lj zT!lxDpUyZvv)*fq;O@yAuAiB4a?jm!SDt4cyIrVuAdTf^@D}AQAyZ%Gu&bml`@DSb z)`v@u?VTmIyUys+)9*$V)yMoLB}K|_P2aIvIChrj_d6eFoH&y8aBKg}zej4{o$j;E zOkdNUE`QT&i%{Y2(C$pl{)*&;Evfz=*lwmv%2ga(wekAG9^Riv>i=p@>r4^J=`va2 z{5JDK%<8Nz&U?FGRloL6<(nTm(uYrj|gKXQ^3pFgw|E$@cJ0*N#4d}WT853}g`*U!m_oo~D|6&$DUH4_Vlghaz>u08KZ4df)eB-Y5 zXJ%%|*Da7My^(FQ$j$b1?_AUWn?7@FpBW~ty!Ug>j~ySbeq_nteOg00D(`%Lm-@_m z*CVggPEqEZev8#x)Z<86o$(oM#*lPSCa44)l71+JHVRP_sA^wqLu89mJQt6UkSbtx_R^WF6XB!pEtWlmii^Bj61N35KVLgH>wT(% z1&3RG@cxda^Z4D56XF-vVr&S>_*A_fLaVH){{$Fuw*_n;&+pMZe~6y z+oR%?6n5Ti#-~O3-DVSm^KzcVML0g|QCzfZQNE98Bma`mSJ&`wXPHpx)ysMCpwp!u zIWErGB@rruldTe_pPJBB)W_%fdjj|4nG(PI?ARJjKCiKVU~;JRcH50-&jb}J3W{%; z)M$C%U!6Z;-|t82r%yRNb4+Ww%CG#q_}AnaOP0-WE?K-U@dUT_;k`jg4u)6eU5`o2 zsPmqrzd%&|y3v!E)$`qh&upwMx8E+fQ~HDQ>I9uNOF2{S{wiJgXvT%gO({0}Z0_4~ zE_ljjtEibWwfX+fg{9p+uQ)_s?s}N}tKpf?qLtnooXdW!P~Xv-;CE)*=?6v6!?Ks} z>M5^0oSWMEcRAbi=$}C+j;krZS*QGFmfJqdOTuNkX;(6nZZ1&}i|Cnm{K+BF#O8TH zQ!Z@zm9Qpd+gic>7nOgOyf~2^{o~%WVim19;-5p+iVi3JX4K2MJ%8REWwq0(;rfg3 z)XA!DoV<5;`-^C60g zUahcsd@7r);qOz*r}_GuFO^B^hiz^Ca(F|6kqUcuTX(#T{F(#nLw|ZtveXg1JHcnJ zU2ivs7T2Y9q3Myw?)@rr%FdBk$nW)Vm0#8^UD0>xd0PtmIJiC~_8(v4wAfxmc8OA+ zLDIVyi&y6eX>3)pjem9MK)z_+1)hWL?AK$W1+xG9`Sx`Sa29v-sWoZwZa+IwSM&VC zZ&!b&`b^3Fm)UILQ6&2{s{dqX!RyvTQaQ5S-KvpGqiloK6uz#B5>&2=uxE|7Of!^C z_xTYr`|Zi=q9&zboqO%?rk4I%`OVdNn)&skA4Rh#{ENsoUzxo!+9Kdju(5gP-v_P% zTkn1CtbS3(>z!%g6F+&E&_0GcD-PQ>|Eb7MHk#sS+4u2Jw&8NQeOxEZ-Byh9^1Ss6rDnaZl-AsK_bch2m@in? zlHk8}{&g9n#da+11%FpJ%l(TinlLFlWyR^sX&Z{>1ueh3SI+3k>EjH2XKNlLy}!(~ zr`c&@w~XNZ_U*TFZuZ`bI2_P1(ZV)0VzHypiG2BNyGuy|JvBzWDnCtrMA+o9O8>GH zZ1Me5nWbOY+{vDlbxKg_`jy8k+2h$IXX(`a+dSjZg4_CSd}mpTeT9$R-}O~j{KUyp z@7@gUHsAGTQai+rtC;LtSj3g4b9F6TaBlwhpv5_Ln>zL_6|$am(fx?Z8ds^MHR_67 zGu*ebzMjR9Zz7gdUU5{jZD;etSGI+g?^}d+y*95}@UKeQOvdTBS={EHQ%_?ZXX@Yk z__55;tyaRmFtN=~`g#VVZerNKi_H+w7avn@?PQ{6|k`&%%YrPdcAj(0)Ka_M*GXQLXZi0>1Y| zv|p_7tn+zzu&d(6^wuYDP6^$NlWOSPeai5!kHD)FJ3cJ!WHP+YXu|Vtf6mlOBMD2- zrcF-_FX{TSe^>2Px}K3#z_#U&_#C^0%9X#weH2$*KIGpZ$#u+j75nu`U*z7swDn)O zLF3e!d*5z$)TLb9Run$RWN*-{BL_`ZyQ)uBbGjY!>d&|2=HGD|f1hQC9q8NAHGf9K z{MPQB5476kZwi0(d!)h>cf%yG`|foq=fB+riv%zJ60+PMx}7<*Zd)Cjmq(Ct?9{2B zkLjLUlBO+w#B1USb&uW~qVuljWG9(9YV1D1$FL(W`F4=EmNAp!>zvre&Q%jqU$(8W zIr!np-qY#xg?_e7v-$0mI<+j>+xOA7e=p9SznDHxW>P^$V5`Uclj*X{G7S`Dt;-lS zKKo`X@0;lRK!7heSxenyf_-1BV*Cre`89Fu9~WKpRdt*y>C5taYWSh$pC`2Nw{^cM zGHP7?x@Ffxv5;sDjpfTsx$6vm#hrfgGWo@en{gAo(~p!KzV_wj?BosG8K3!mTv>CR z+j^c&!FLB=c*TiGIYo{y8*P8HU)t=l$JapMs!ju}nIrU$)>Szqe4 zW03}zyqM-zm4?~vKJOY8iakuzV{Ynx<>LQj%l+zzXZ%a~Iqf-#fv}cw=S!BHu19dE`Bd9!D~x=XU9msVB%kwc4lch=a~iaiz^>rQr4r z^;|-VSHZhs+0tFRDpRB+ue8l`tKXmCVD9H=7c*n~PqyY8SKC+ZUhW`$ru)dv;Lqoj zLK$5)-#0&>Jf~bQ<4);ve*d+(e~Z_iy|=P&zFtYklanhhJ!(|>{ahgH#Npi>Yy9G3 z$`)E@c{a>(IF#XfeDz@#m2F2Y_^X{?&e;*?y&O!_uYx#gix=#<}jJGbV=KKk)y>$*Rcd`+JNRQwu`8mG*?(U)wX|L~r%deqYX zh&M+UGf( z;w!as#p#;Qu6)?P9DiE7k!x2mmDziaQme0zM&;oANy4`!9}ADk*&*vY^x zcIu;8@nfa=2kw>$tVn$7{r}LcoRUu*%_Vk`(XX3XwX81P{`Z&VYhb_+&S-ndgB$gp zhrHI>bU^OORzB{kqi-j>sha;TnzH79=+Q@>pEg{1X7u;b(g!bjy%szzT_n8vi{P@D zRkKdc5xE&EuD*j^N+VhO<(Y-+&UUPp%JW^i|AF*lO;@pePL`dI_8gO2_JQxoJB{V> z)t<_YuR7`%HOaNQIfn-D{hI8xzI94BTm00&&+py*?9SnOWWlbewK5V}F%I55%KaTK z+|4WZ9(H~Cyr3%WOXJJn(i7%SPaU~`d>hxs5S}U>qgA&qMU| z#cORJ`)iEV{|0E@I(upR{><(@I)=?3YI}P3&G3D6#OqSa$>t4LZF2(_i1_@OTb)&4 zKjFr+x}MAhy)ORGCq|VsOYeR3BK7V5V^?||)UIseli^r@LT80dVB_t58k}ptIn}9} zE=z2&Q2+S%jB=mk<#U3D_rD)Kbm{fV>BqN9yxhf}@YXi@86cXJ(Y`zH4$Bc)ZkVa&HbzcQS7euedfWoAEHj*2h_)y{uv?Bo5UJ9X7QiM5Gej@86|vY z%e<34JHKCA_iyjCjm@eYKdLV*5Y~=3xwo~>esA`MJ#+U37Oc-)_Rr>toNO=ORPTH5 zmi_XT%)&QW69rmEnFh3riKR#{gIp40oX{2j-l_9?-AQE%)77Di9d(`i#X z#;d=G_tcbqnj7!vUbq?N?|MY>omc&n%p3Y&bzE|1N3CBZam(GM>sWm5{Jc#QqQW;H zx^(o^R-?Iri9ekL4{V& zl5R;~>oI%s?#s&Dy;Ga?;!mWo?`DW&wsy}wU4HzrBU8@;*BgyBQ$jxQDZiUou;{RC zX6Q{O;UxJrf)TQFtTug_`&&i4F}_QzSn2+WyHzfSpRVJ3$k+4aNY9F0C$>Fbde=7M ze945RrU{Spnr7~NaLj#j#cg(#S<+Qv`OKPi7BSUx#8-yP@fiz#(79oFAieu})c!NY zx`NZ~I(99a=YH*xtEEPnhJ1dBbZm$Iw{_23i`wQ(Ui? z^^ixDr*fF5+tDeO1wX3IlAiNjT)HhNVEIA=iS2(QOU{+ey!T_{CEwd}lY9M6Pk+C$ zQ7*t#|6H0{hpNf)v>J&&8bN)AqET#j_;yU{bKEL;GqIT?f^nMa1)-}~^wZxg`{UT1 z^U?99w26Oh`}rD;O6937s=Rem^d~>IdvJXH{OMNZwUU3U1ii{kHavJ7BiUn{p&S-G zBezhuQZhdsEL(zS6sQ&ORLl(R*vBmPv29{BGvg>(0i8 zQ_j3wT(M1m!S0ml;oEQi*fekLMh&j)TXv6rPpg`{Mp@RBHJjhh{@dC8U8c<`Pc&FE z6C*SB_$BYjJY1w;ETY`WyneIp_RUk@AMaejk{9Z8?@xIB2_v_cA1@o$KB}x<$kjik zU-Ippb6xLd1&5t=i?vw)IrGHJr0arqJHA;4={(AK_H3QSUb_av@>^Yg*Y6!@k?OQb zJLWHuaOy_N>HjBhFMS`nmscR;z=_7dJ!eu5&DRt>S#n z>HgNSerEQ4=7(>r{RT77Du*vKmOiI^@tA6rz~l#i&(^M~Xh>z%UOu5c-_5CjLw(H( z)3tVN(p7iAh=#4JiXI84|{Ezn6dTwTD1l?b#bK>Fj&Ci!fhv&ci@SwC( zCV%3IwdXp%$%LMs;@f{ADrDW>UzW`52X=3YD0d1xVaU`MtH1EmN2j0`wu$lkq*==* z&6u!FJLbIe_KhJ=gKHBfDJ*-OJ->Uao%yXm;WItA63ViY9G6b5b$)(y?UC)GGZdMg zCQNtqc=HmW*0u~*sc8G6(q;llx^)m;r+c89M+`Hu3- z&OVbLehVwLdsd~jT+BnE=2W?kwT5WR#dMRo{8MMIxGy}F?a}$Oev%*57IbbBisTho z5UuDEd(_VIZ<6Zb>02BZzOj_!**4|g-#=;2HEA9xsmbh~jE@U8f7e*^!*EBSH2804~@RDSy^kv zTDA|xC!R-nhThrmkH@F>nu*JnRs0{izwHy}`TpaJQ$OqFtk&btF8`S_O_)V_#sVeJ zH;;;QT;NUrJUHq|NCTlXsd+jeHtB~Dpqrf`)*3loZpo^?j9JbQv! zi`O}rDWfySW+LbHz3iDQGSahZ>Q7#J-qGr?$NhBV>_ZowmuK8(%e);V_HgovHB#I~ zJ^Ymu;za%Cu99Vn`+wtV_lq0XzcA-s;S)G!a^_8-h*IW?C3#Xy#on#?dR?+dB`9jo zZ#BKmcjSzuK3-kA%3Ve1SM<8I>J^WV-gPr`<2HV?`}M~K(>n_vF>Ujdd$WMWa^d;d z$+bMC({5b9zgXs#zQCj2RlgS)Po7;c>o#YS8>h3>*~kOi=5qd4;JH`!s^`)N=g&Qn zJeGSp?am~`Ez;7NbyPQm_f4ik{oS~|XJ}Kd52q$iTF-P^d17_Q@h>)P#(h`XTGq5GU3;_9)nVxe<(i47 zzQ@Zwdj9w1TodsEZ+Y(*<{5L?jx!lbEXX|&YoK^l%kR+VLmD>Gwpje&OCK|f9{P3udn%vGb~^B{M3(iPXzu{9?#qP!FU4yEG{>ZcP|** zUKOVoZ2xmF;=<*HkCaP`c)f*BMJV1i`@ZU1@HPpHjY>zRT((&h?5?^%_u{eIr}COB zG*TLsZdippG71Tru-`P`D%TYM)gRPv&b9TD=(%)K-tX-6{JX`e*|UVQ|M*HdKloc} z5~VUP0<1?jC` z*Pkq(w{81u{zF;TOQq~B;t&12ccAH5b4lB?PrJfatJXel{Wa3Atch_i@}+ByH9wk${hU4cX@fc zpYFtv4f+;-XA{Cbcxyf+*t|E1%iQwff6tVqn^bOYU3TfI-($`Rrs>iiu9nZ=U5dzQ z4p~-iCbhjL%k1sJn=9_j+-U09P_}=fJpb22m!2lQ*OwODUAJd}-u*Xo=f$pE_M;`k zvdiy9#f_+fsE+5)^Iv>XlQb2YzGL=^kIQ}-nx2kZyZQd#mv_Ehm0(=AZs9X2ueVD! zm^Fk{yxqL6bK;XnS66@iK3nsVe#DKLE$71So(ohD=($oTD{$rx$KmVubuu$v`cB#4 z&m{eMA>Y2O`RDU53E!EidSBWi{PEjO!M`5fNldc8(XgKegXg=G^;*Z9YFY*w`M~ z;U$+ZtF(3Iq^I4sr#33xJ6djjV|4#pHvpB|F%0Iwm+OGWi{{1e!+q>56lb+A6&)4qm2i zs!vYmc)9c}OO1*Zv%b&FwYONC&Lmk~?DX}rReRiPT{&Z3@0!d0TW#~#PTbM#Yo6-Z z66^FphUK)y%FB0MjC~EWlnC@h zsU#+6iB)9Jx!yI~**(c8Y0~Sz8}2TjX%VyR?17BZHL05(wsxGnZ?u20{OeWI*r)$e z+Q$3C@u}=J%R<)3wgW=yWz2Ku7|btxo!Tk*EOJfEPWk<8lCR$wg)G_nX=>DxQ@7_F zwb1F>Sa@gRffZ64Sj71S-&EUdZZ3`bCihxIWka`vrj*8qqP)JgV#Y;`b7m}($yfj0 z9Q9IpSQW&Er#hJvyK0#)ODKH~Ygy%b zc!nyHrS5|5%3q4j1O*g!|?_0lp$-GX< z3(4*C9_5Po-|FpNbISYX^Rm9UBlWHuo0@GMN}(boQqDe zxBDk_Z2Vr!pWBsOx8!s#cNcqp#ft@Njy?LFmw)Wc=bgGC9}>51MV)4Op5mV%${us#PS+2Ke8-t=pG#5%mt7C*?d6R8c&*do zPktw3p-^UA1Yc~8z~2q&u^iR+_ZMiKPva{tH&fBqUccv?ZQXo#hr6e3)m{hrWOC(3 ztXaD3)a359td^Gd=O@nUe9t>kfm>j<>g=uA7n&Zd$x%&iNx%2u<-T(-MP<58%LJ{q z6ueVpt@@)D#Nr*4((3v5fkI33o4cO^t#{|mlb`Z0;ew>dsoAYkwZ7k$o;-U+`|QTo zno0~IkIn~t?p$y{Y5OGAzRPoaS1z^NdXqgmsPRY2HjR_A%cHsv?3iGn@>yG`tzzyPMaFe0pB57rb-c?-wub9i4NH`TY+S4v7~becg9%J!8pC zJyX(s#UoUvi|?^$Z@$K=qpUZ*tURMtb50%#t@-+d?X2k&t$n(=Dt4ywanf@C^d6Ni z{WtH)sl?AL?*BwLdMnvp@cZNZc>BJ^i}fRaJ#YK&Cla#1-N!)XwWWT*9L<26Hk

kQ;;6F}sQV+|s5m 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 z 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 GH!c8It)0FA diff --git a/ponysay.py b/ponysay.py index 5f77ed0..b74ed64 100755 --- a/ponysay.py +++ b/ponysay.py @@ -1,2458 +1,98 @@ #!/usr/bin/env python3 -# -*- coding: utf-8 -*- -''' -ponysay.py - Ponysay, cowsay reimplementation for ponies -Copyright (C) 2012 Erkin Batu Altunbaş et al. - -This program is free software. It comes without any warranty, to -the extent permitted by applicable law. You can redistribute it -and/or modify it under the terms of the Do What The Fuck You Want -To Public License, Version 2, as published by Sam Hocevar. See -http://sam.zoy.org/wtfpl/COPYING for more details. - - -Authors of ponysay.py: - - Erkin Batu Altunbaş: Project leader, helped write the first implementation - Mattias "maandree" Andrée: Major contributor of both implementions - Elis "etu" Axelsson: Major contributor of current implemention and patcher of the first implementation - Sven-Hendrik "svenstaro" Haase: Major contributor of the first implementation - Jan Alexander "heftig" Steffens: Major contributor of the first implementation - Kyah "L-four" Rindlisbacher: Patched the first implementation -''' - -import os -import shutil -import sys -import random -from subprocess import Popen, PIPE - - - -''' -The version of ponysay -''' -VERSION = 'dev' # this line should not be edited, it is fixed by the build system - - - -''' -Hack to enforce UTF-8 in output (in the future, if you see anypony not using utf-8 in -programs by default, report them to Princess Celestia so she can banish them to the moon) - -@param text:str The text to print (empty string is default) -@param end:str The appendix to the text to print (line breaking is default) -''' -def print(text = '', end = '\n'): - sys.stdout.buffer.write((str(text) + end).encode('utf-8')) - -''' -stderr equivalent to print() - -@param text:str The text to print (empty string is default) -@param end:str The appendix to the text to print (line breaking is default) -''' -def printerr(text = '', end = '\n'): - sys.stderr.buffer.write((str(text) + end).encode('utf-8')) - -fd3 = None -''' -/proc/self/fd/3 equivalent to print() - -@param text:str The text to print (empty string is default) -@param end:str The appendix to the text to print (line breaking is default) -''' -def printinfo(text = '', end = '\n'): - global fd3 - if os.path.exists('/proc/self/fd/3'): - if fd3 is None: - fd3 = os.fdopen(3, 'w') - fd3.write(str(text) + end) - - -''' -Checks whether a text ends with a specific text, but has more - -@param text The text to test -@param ending The desired end of the text -@return :bool The result of the test -''' -def endswith(text, ending): - return text.endswith(ending) and not (text == ending) - - - -''' -This is the mane class of ponysay -''' -class Ponysay(): - ''' - Starts the part of the program the arguments indicate - - @param args:ArgParser Parsed command line arguments - ''' - def __init__(self, args): - if (args.argcount == 0) and not pipelinein: - args.help() - exit(254) - return - - ## Modifyable global variables - global linuxvt - global usekms - global mode - global ponydirs - global extraponydirs - - ## Emulate termial capabilities - if args.opts['-X'] is not None: (linuxvt, usekms) = (False, False) - elif args.opts['-V'] is not None: (linuxvt, usekms) = (True, False) - elif args.opts['-K'] is not None: (linuxvt, usekms) = (True, True) - ponydirs = vtponydirs if linuxvt and not usekms else xponydirs - extraponydirs = extravtponydirs if linuxvt and not usekms else extraxponydirs - - ## Variadic variants of -f, -F and -q - if args.opts['--f'] is not None: - if args.opts['-f'] is not None: args.opts['-f'] += args.opts['--f'] - else: args.opts['-f'] = args.opts['--f'] - if args.opts['--F'] is not None: - if args.opts['-F'] is not None: args.opts['-F'] += args.opts['--F'] - else: args.opts['-F'] = args.opts['--F'] - if args.opts['--q'] is not None: - if args.opts['-q'] is not None: args.opts['-q'] += args.opts['--q'] - else: args.opts['-q'] = args.opts['--q'] - - ## Run modes - if args.opts['-h'] is not None: args.help() - elif args.opts['--quoters'] is not None: self.quoters() - elif args.opts['--onelist'] is not None: self.onelist() - elif args.opts['-v'] is not None: self.version() - elif args.opts['-l'] is not None: self.list() - elif args.opts['-L'] is not None: self.linklist() - elif args.opts['-B'] is not None: self.balloonlist() - elif args.opts['++onelist'] is not None: self.__extraponies(); self.onelist() - elif args.opts['+l'] is not None: self.__extraponies(); self.list() - elif args.opts['+L'] is not None: self.__extraponies(); self.linklist() - elif args.opts['-A'] is not None: self.list(); self.__extraponies(); self.list() - elif args.opts['+A'] is not None: self.linklist(); self.__extraponies(); self.linklist() - else: - ## Colouring features - if args.opts['--colour-pony'] is not None: - mode += '\033[' + ';'.join(args.opts['--colour-pony']) + 'm' - else: - mode += '\033[0m' - if args.opts['+c'] is not None: - if args.opts['--colour-msg'] is None: args.opts['--colour-msg'] = args.opts['+c'] - if args.opts['--colour-link'] is None: args.opts['--colour-link'] = args.opts['+c'] - if args.opts['--colour-bubble'] is None: args.opts['--colour-bubble'] = args.opts['+c'] - - ## Other extra features - self.__extraponies(args) - self.__bestpony(args) - self.__ucsremap(args) - if args.opts['-o'] is not None: - mode += '$/= $$\\= $' - args.message = '' - - ## The stuff - if args.opts['-q'] is not None: - warn = (args.opts['-f'] is not None) or (args.opts['-F'] is not None) - if (len(args.opts['-q']) == 1) and ((args.opts['-q'][0] == '-f') or (args.opts['-q'][0] == '-F')): - warn = True - if args.opts['-q'][0] == '-f': - args.opts['-q'] = args.files - if args.opts['-f'] is not None: - args.opts['-q'] += args.opts['-f'] - self.quote(args) - if warn: - printerr('-q cannot be used at the same time as -f or -F.') - elif not unrecognised: - self.print_pony(args) - else: - args.help() - exit(255) - return - - - ############################################## - ## Methods that run before the mane methods ## - ############################################## - - ''' - Use extra ponies - - @param args:ArgParser Parsed command line arguments, may be `None` - ''' - def __extraponies(self, args = None): - ## If extraponies are used, change ponydir to extraponydir - if args is None: - ponydirs[:] = extraponydirs - elif args.opts['-F'] is not None: - args.opts['-f'] = args.opts['-F'] - ponydirs[:] = extraponydirs - - - ''' - Use best.pony if nothing else is set - - @param args:ArgParser Parsed command line arguments - ''' - def __bestpony(self, args): - ## Set best.pony as the pony to display if none is selected - if (args.opts['-f'] is None) or (args.opts['-q'] is None) or (len(args.opts['-q']) == 0): - for ponydir in ponydirs: - if os.path.isfile(ponydir + 'best.pony') or os.path.islink(ponydir + 'best.pony'): - pony = os.path.realpath(ponydir + 'best.pony') # Canonical path - args.opts['-f' if args.opts['-q'] is None else '-q'] = [pony] - break - - - ''' - Apply pony name remapping to args according to UCS settings - - @param args:ArgParser Parsed command line arguments - ''' - def __ucsremap(self, args): - ## Read UCS configurations - env_ucs = os.environ['PONYSAY_UCS_ME'] if 'PONYSAY_UCS_ME' in os.environ else '' - ucs_conf = 0 - if env_ucs in ('yes', 'y', '1'): ucs_conf = 1 - elif env_ucs in ('harder', 'h', '2'): ucs_conf = 2 - - ## Stop UCS is not used - if ucs_conf == 0: - return - - ## Read all lines in all UCS → ASCII map files - maplines = [] - for ucsmap in ucsmaps: - if os.path.isfile(ucsmap): - with open(ucsmap, 'rb') as mapfile: - maplines += [line.replace('\n', '') for line in mapfile.read().decode('utf8', 'replace').split('\n')] - - ## Create UCS → ASCII mapping from read lines - map = {} - stripset = ' \t' # must be string, wtf! and way doesn't python's doc say so - for line in maplines: - if (len(line) > 0) and not (line[0] == '#'): - s = line.index('→') - ucs = line[:s] .strip(stripset) - ascii = line[s + 1:].strip(stripset) - map[ucs] = ascii - - ## Apply UCS → ASCII mapping to -f and -q arguments - for flag in ('-f', '-q'): - if args.opts[flag] is not None: - for i in range(0, len(args.opts[flag])): - if args.opts[flag][i] in map: - args.opts[flag][i] = map[args.opts[flag][i]] - - - ####################### - ## Auxiliary methods ## - ####################### - - ''' - Apply UCS:ise pony names according to UCS settings - - @param ponies:list List of all ponies (of interrest) - @param links:map Map to fill with simulated symlink ponies, may be `None` - ''' - def __ucsise(self, ponies, links = None): - ## Read UCS configurations - env_ucs = os.environ['PONYSAY_UCS_ME'] if 'PONYSAY_UCS_ME' in os.environ else '' - ucs_conf = 0 - if env_ucs in ('yes', 'y', '1'): ucs_conf = 1 - elif env_ucs in ('harder', 'h', '2'): ucs_conf = 2 - - ## Stop UCS is not used - if ucs_conf == 0: - return - - ## Read all lines in all UCS → ASCII map files - maplines = [] - for ucsmap in ucsmaps: - if os.path.isfile(ucsmap): - with open(ucsmap, 'rb') as mapfile: - maplines += [line.replace('\n', '') for line in mapfile.read().decode('utf8', 'replace').split('\n')] - - ## Create UCS → ASCII mapping from read lines - map = {} - stripset = ' \t' # must be string, wtf! and way doesn't python's doc say so - for line in maplines: - if not line.startswith('#'): - s = line.index('→') - ucs = line[:s] .strip(stripset) - ascii = line[s + 1:].strip(stripset) - map[ascii] = ucs - - ## Apply UCS → ACII mapping to ponies, by alias if weak settings - if ucs_conf == 1: - for pony in ponies: - if pony in map: - ponies.append(map[pony]) - if links is not None: - links[map[pony]] = pony - else: - for j in range(0, len(ponies)): - if ponies[j] in map: - ponies[j] = map[ponies[j]] - - - ''' - Returns one file with full path, names is filter for names, also accepts filepaths - - @param names:list Ponies to choose from, may be `None` - @param alt:bool For method internal use... - @return :str The file name of a pony - ''' - def __getponypath(self, names = None, alt = False): - ponies = {} - - ## List all pony files, without the .pony ending - for ponydir in ponydirs: - for ponyfile in os.listdir(ponydir): - if endswith(ponyfile, ".pony"): - pony = ponyfile[:-5] - if pony not in ponies: - ponies[pony] = ponydir + ponyfile - - ## Support for explicit pony file names - if names is not None: - for name in names: - if os.path.exists(name): - ponies[name] = name - - ## If there is not select ponies, choose all of them - if (names is None) or (len(names) == 0): - names = list(ponies.keys()) - - ## Select a random pony of the choosen onles - pony = names[random.randrange(0, len(names))] - if pony not in ponies: - if not alt: - autocorrect = SpelloCorrecter(ponydirs, '.pony') - (alternatives, dist) = autocorrect.correct(pony) - if (len(alternatives) > 0) and (dist <= 5): # TODO the limit `dist` should be configureable - return self.__getponypath(alternatives, True) - sys.stderr.write('I have never heard of anypony named %s\n' % (pony)); - exit(1) - else: - return ponies[pony] - - - ''' - Returns a set with all ponies that have quotes and are displayable - - @return :set All ponies that have quotes and are displayable - ''' - def __quoters(self): - ## List all unique quote files - quotes = [] - quoteshash = set() - _quotes = [] - for quotedir in quotedirs: - _quotes += [item[:item.index('.')] for item in os.listdir(quotedir)] - for quote in _quotes: - if not quote == '': - if not quote in quoteshash: - quoteshash.add(quote) - quotes.append(quote) - - ## Create a set of all ponyes that have quotes - ponies = set() - for ponydir in ponydirs: - for pony in os.listdir(ponydir): - if not pony[0] == '.': - p = pony[:-5] # remove .pony - for quote in quotes: - if ('+' + p + '+') in ('+' + quote + '+'): - if not p in ponies: - ponies.add(p) - - return ponies - - - ''' - Returns a list with all (pony, quote file) pairs - - @return (pony, quote):(str, str) All ponies–quote file-pairs - ''' - def __quotes(self): - ## Get all ponyquote files - quotes = [] - for quotedir in quotedirs: - quotes += [quotedir + item for item in os.listdir(quotedir)] - - ## Create list of all pony–quote file-pairs - rc = [] - for ponydir in ponydirs: - for pony in os.listdir(ponydir): - if not pony[0] == '.': - p = pony[:-5] # remove .pony - for quote in quotes: - q = quote[quote.rindex('/') + 1:] - q = q[:q.rindex('.')] - if ('+' + p + '+') in ('+' + q + '+'): - rc.append((p, quote)) - - return rc - - - ''' - Gets the size of the terminal in (rows, columns) - - @return (rows, columns):(int, int) The number or lines and the number of columns in the terminal's display area - ''' - def __gettermsize(self): - ## Call `stty` to determine the size of the terminal, this way is better then using python's ncurses - for channel in (sys.stderr, sys.stdout, sys.stdin): - termsize = Popen(['stty', 'size'], stdout=PIPE, stdin=channel, stderr=PIPE).communicate()[0] - if len(termsize) > 0: - termsize = termsize.decode('utf8', 'replace')[:-1].split(' ') # [:-1] removes a \n - termsize = [int(item) for item in termsize] - return termsize - return (24, 80) # fall back to minimal sane size - - - - ##################### - ## Listing methods ## - ##################### - - ''' - Columnise a list and prints it - - @param ponies:list<(str, str)> All items to list, each item should have to elements: unformated name, formated name - ''' - def __columnise(self, ponies): - ## Get terminal width, and a 2 which is the space between columns - termwidth = self.__gettermsize()[1] + 2 - ## Sort the ponies, and get the cells' widths, and the largest width + 2 - ponies.sort(key = lambda pony : pony[0]) - widths = [UCS.dispLen(pony[0]) for pony in ponies] - width = max(widths) + 2 # longest pony file name + space between columns - - ## Calculate the number of rows and columns, can create a list of empty columns - cols = termwidth // width # do not believe electricians, this means ⌊termwidth / width⌋ - rows = (len(ponies) + cols - 1) // cols - columns = [] - for c in range(0, cols): columns.append([]) - - ## Fill the columns with cells of ponies - (y, x) = (0, 0) - for j in range(0, len(ponies)): - cell = ponies[j][1] + ' ' * (width - widths[j]); - columns[x].append(cell) - y += 1 - if y == rows: - x += 1 - y = 0 - - ## Make the columnisation nicer by letting the last row be partially empty rather than the last column - diff = rows * cols - len(ponies) - if diff > 2: - c = cols - 1 - diff -= 1 - while diff > 0: - columns[c] = columns[c - 1][-diff:] + columns[c] - c -= 1 - columns[c] = columns[c][:-diff] - diff -= 1 - - ## Create rows from columns - lines = [] - for r in range(0, rows): - lines.append([]) - for c in range(0, cols): - if r < len(columns[c]): - line = lines[r].append(columns[c][r]) - - ## Print the matrix, with one extra blank row - print('\n'.join([''.join(line)[:-2] for line in lines])) - print() - - - ''' - Lists the available ponies - ''' - def list(self): - ## Get all quoters - quoters = self.__quoters() - - for ponydir in ponydirs: # Loop ponydirs - ## Get all ponies in the directory - _ponies = os.listdir(ponydir) - - ## Remove .pony from all files and skip those that does not have .pony - ponies = [] - for pony in _ponies: - if endswith(pony, '.pony'): - ponies.append(pony[:-5]) - - ## UCS:ise pony names, they are already sorted - self.__ucsise(ponies) - - ## If ther directory is not empty print its name and all ponies, columnised - if len(ponies) == 0: - continue - print('\033[1mponies located in ' + ponydir + '\033[21m') - self.__columnise([(pony, '\033[1m' + pony + '\033[21m' if pony in quoters else pony) for pony in ponies]) - - - ''' - Lists the available ponies with alternatives inside brackets - ''' - def linklist(self): - ## Get the size of the terminal and all ponies with quotes - termsize = self.__gettermsize() - quoters = self.__quoters() - - for ponydir in ponydirs: # Loop ponydirs - ## Get all pony files in the directory - _ponies = os.listdir(ponydir) - - ## Remove .pony from all files and skip those that does not have .pony - ponies = [] - for pony in _ponies: - if endswith(pony, '.pony'): - ponies.append(pony[:-5]) - - ## If there are no ponies in the directory skip to next directory, otherwise, print the directories name - if len(ponies) == 0: - continue - print('\033[1mponies located in ' + ponydir + '\033[21m') - - ## UCS:ise pony names - pseudolinkmap = {} - self.__ucsise(ponies, pseudolinkmap) - - ## Create target–link-pair, with `None` as link if the file is not a symlink or in `pseudolinkmap` - pairs = [] - for pony in ponies: - if pony in pseudolinkmap: - pairs.append((pony, pseudolinkmap[pony] + '.pony')); - else: - pairs.append((pony, os.path.realpath(ponydir + pony + '.pony') if os.path.islink(ponydir + pony + '.pony') else None)) - - ## Create map from source pony to alias ponies for each pony - ponymap = {} - for pair in pairs: - if (pair[1] is None) or (pair[1] == ''): - if pair[0] not in ponymap: - ponymap[pair[0]] = [] - else: - target = pair[1][:-5] - if '/' in target: - target = target[target.rindex('/') + 1:] - if target in ponymap: - ponymap[target].append(pair[0]) - else: - ponymap[target] = [pair[0]] - - ## Create list of source ponies concatenated with alias ponies in brackets - ponies = {} - for pony in ponymap: - w = UCS.dispLen(pony) - item = '\033[1m' + pony + '\033[21m' if (pony in quoters) else pony - syms = ponymap[pony] - syms.sort() - if len(syms) > 0: - w += 2 + len(syms) - item += ' (' - first = True - for sym in syms: - w += UCS.dispLen(sym) - if first: first = False - else: item += ' ' - item += '\033[1m' + sym + '\033[21m' if (sym in quoters) else sym - item += ')' - ponies[(item.replace('\033[1m', '').replace('\033[21m', ''), item)] = w - - ## Print the ponies, columnised - self.__columnise(list(ponies)) - - - ''' - Lists with all ponies that have quotes and are displayable, on one column without anything bold or otherwise formated - ''' - def quoters(self): - ## Get all quoters - ponies = self.__quoters() - - ## UCS:ise and sort - self.__ucsise(ponies) - ponies.sort() - - ## Print each one on a seperate line, but skip duplicates - last = '' - for pony in ponies: - if not pony == last: - last = pony - print(pony) - - - ''' - Lists the available ponies on one column without anything bold or otherwise formated - ''' - def onelist(self): - ## Get all pony files - _ponies = [] - for ponydir in ponydirs: # Loop ponydirs - _ponies += os.listdir(ponydir) - - ## Remove .pony from all files and skip those that does not have .pony - ponies = [] - for pony in _ponies: - if endswith(pony, '.pony'): - ponies.append(pony[:-5]) - - ## UCS:ise and sort - self.__ucsise(ponies) - ponies.sort() - - ## Print each one on a seperate line, but skip duplicates - last = '' - for pony in ponies: - if not pony == last: - last = pony - print(pony) - - - ##################### - ## Balloon methods ## - ##################### - - ''' - Prints a list of all balloons - ''' - def balloonlist(self): - ## Get the size of the terminal - termsize = self.__gettermsize() - - ## Get all balloons - balloonset = set() - for balloondir in balloondirs: - for balloon in os.listdir(balloondir): - ## Use .think if running ponythink, otherwise .say - if isthink and endswith(balloon, '.think'): - balloon = balloon[:-6] - elif (not isthink) and endswith(balloon, '.say'): - balloon = balloon[:-4] - else: - continue - - ## Add the balloon if there is none with the same name - if balloon not in balloonset: - balloonset.add(balloon) - - ## Print all balloos, columnised - self.__columnise([(balloon, balloon) for balloon in list(balloonset)]) - - - ''' - Returns one file with full path, names is filter for style names, also accepts filepaths - - @param names:list Balloons to choose from, may be `None` - @param alt:bool For method internal use - @param :str The file name of the balloon, will be `None` iff `names` is `None` - ''' - def __getballoonpath(self, names, alt = False): - ## Stop if their is no choosen balloon - if names is None: - return None - - ## Get all balloons - balloons = {} - for balloondir in balloondirs: - for balloon in os.listdir(balloondir): - balloonfile = balloon - ## Use .think if running ponythink, otherwise .say - if isthink and endswith(balloon, '.think'): - balloon = balloon[:-6] - elif (not isthink) and endswith(balloon, '.say'): - balloon = balloon[:-4] - else: - continue - - ## Add the balloon if there is none with the same name - if balloon not in balloons: - balloons[balloon] = balloondir + balloonfile - - ## Support for explicit balloon file names - for name in names: - if os.path.exists(name): - balloons[name] = name - - ## Select a random balloon of the choosen ones - balloon = names[random.randrange(0, len(names))] - if balloon not in balloons: - if not alt: - autocorrect = SpelloCorrecter(balloondirs, '.think' if isthink else '.say') - (alternatives, dist) = autocorrect.correct(balloon) - if (len(alternatives) > 0) and (dist <= 5): # TODO the limit `dist` should be configureable - return self.__getballoonpath(alternatives, True) - sys.stderr.write('That balloon style %s does not exist\n' % (balloon)); - exit(1) - else: - return balloons[balloon] - - - ''' - Creates the balloon style object - - @param balloonfile:str The file with the balloon style, may be `None` - @return :Balloon Instance describing the balloon's style - ''' - def __getballoon(self, balloonfile): - ## Use default balloon if none is specified - if balloonfile is None: - if isthink: - return Balloon('o', 'o', '( ', ' )', [' _'], ['_'], ['_'], ['_'], ['_ '], ' )', ' )', ' )', ['- '], ['-'], ['-'], ['-'], [' -'], '( ', '( ', '( ') - return Balloon('\\', '/', '< ', ' >', [' _'], ['_'], ['_'], ['_'], ['_ '], ' \\', ' |', ' /', ['- '], ['-'], ['-'], ['-'], [' -'], '\\ ', '| ', '/ ') - - ## Initialise map for balloon parts - map = {} - for elem in ('\\', '/', 'ww', 'ee', 'nw', 'nnw', 'n', 'nne', 'ne', 'nee', 'e', 'see', 'se', 'sse', 's', 'ssw', 'sw', 'sww', 'w', 'nww'): - map[elem] = [] - - ## Read all lines in the balloon file - with open(balloonfile, 'rb') as balloonstream: - data = balloonstream.read().decode('utf8', 'replace') - data = [line.replace('\n', '') for line in data.split('\n')] - - ## Parse the balloon file, and fill the map - last = None - for line in data: - if len(line) > 0: - if line[0] == ':': - map[last].append(line[1:]) - else: - last = line[:line.index(':')] - value = line[len(last) + 1:] - map[last].append(value) - - ## Return the balloon - return Balloon(map['\\'][0], map['/'][0], map['ww'][0], map['ee'][0], map['nw'], map['nnw'], map['n'], - map['nne'], map['ne'], map['nee'][0], map['e'][0], map['see'][0], map['se'], map['sse'], - map['s'], map['ssw'], map['sw'], map['sww'][0], map['w'][0], map['nww'][0]) - - - - ######################## - ## Displaying methods ## - ######################## - - ''' - Prints the name of the program and the version of the program - ''' - def version(self): - ## Prints the "ponysay $VERSION", if this is modified, ./dev/dist.sh must be modified accordingly - print('%s %s' % ('ponysay', VERSION)) - - - ''' - Print the pony with a speech or though bubble. message, pony and wrap from args are used. - - @param args:ArgParser Parsed command line arguments - ''' - def print_pony(self, args): - ## Get message and remove tailing whitespace from stdin (but not for each line) - if args.message == None: - msg = ''.join(sys.stdin.readlines()).rstrip() - else: - msg = args.message - if args.opts['--colour-msg'] is not None: - msg = '\033[' + ';'.join(args.opts['--colour-msg']) + 'm' + msg - - ## This algorithm should give some result as cowsay's (according to tests) - if args.opts['-c'] is not None: - buf = '' - last = ' ' - CHARS = '\t \n' - for c in msg: - if (c in CHARS) and (last in CHARS): - if last == '\n': - buf += last - last = c - else: - buf += c - last = c - msg = buf.strip(CHARS) - buf = '' - for c in msg: - if (c != '\n') or (last != '\n'): - buf += c - last = c - msg = buf.replace('\n', '\n\n') - - ## Get the pony - pony = self.__getponypath(args.opts['-f']) - printinfo('pony file: ' + pony) - - ## Use PNG file as pony file - if endswith(pony.lower(), '.png'): - pony = '\'' + pony.replace('\'', '\'\\\'\'') + '\'' - pngcmd = ('img2ponysay -p -- ' if linuxvt else 'img2ponysay -- ') + pony - pngpipe = os.pipe() - Popen(pngcmd, stdout=os.fdopen(pngpipe[1], 'w'), shell=True).wait() - pony = '/proc/' + str(os.getpid()) + '/fd/' + str(pngpipe[0]) - - ## If KMS is utilies, select a KMS pony file and create it if necessary - pony = self.__kms(pony) - - ## If in Linux VT clean the terminal (See info/pdf-manual [Printing in TTY with KMS]) - if linuxvt: - print('\033[H\033[2J', end='') - - ## Get width truncation and wrapping - env_width = os.environ['PONYSAY_FULL_WIDTH'] if 'PONYSAY_FULL_WIDTH' in os.environ else None - if env_width is None: env_width = '' - widthtruncation = self.__gettermsize()[1] if env_width not in ('yes', 'y', '1') else None - messagewrap = 40 - if (args.opts['-W'] is not None) and (len(args.opts['-W'][0]) > 0): - messagewrap = args.opts['-W'][0] - if messagewrap[0] in 'nmsNMS': # m is left to n on QWERTY and s is left to n on Dvorak - messagewrap = None - elif messagewrap[0] in 'iouIOU': # o is left to i on QWERTY and u is right to i on Dvorak - messagewrap = self.__gettermsize()[1] - else: - messagewrap = int(args.opts['-W'][0]) - - ## Get balloon object - balloonfile = self.__getballoonpath(args.opts['-b']) - printinfo('balloon style file: ' + str(balloonfile)) - balloon = self.__getballoon(balloonfile) if args.opts['-o'] is None else None - - ## Get hyphen style - hyphencolour = '' - if args.opts['--colour-wrap'] is not None: - hyphencolour = '\033[' + ';'.join(args.opts['--colour-wrap']) + 'm' - hyphen = '\033[31m' + hyphencolour + '-' # TODO make configurable - - ## Link and balloon colouring - linkcolour = '' - if args.opts['--colour-link'] is not None: - linkcolour = '\033[' + ';'.join(args.opts['--colour-link']) + 'm' - ballooncolour = '' - if args.opts['--colour-bubble'] is not None: - ballooncolour = '\033[' + ';'.join(args.opts['--colour-bubble']) + 'm' - - - ## Run cowsay replacement - backend = Backend(message = msg, ponyfile = pony, wrapcolumn = messagewrap, width = widthtruncation, - balloon = balloon, hyphen = hyphen, linkcolour = linkcolour, ballooncolour = ballooncolour) - backend.parse() - output = backend.output - if output.endswith('\n'): - output = output[:-1] - - - ## Load height trunction settings - env_bottom = os.environ['PONYSAY_BOTTOM'] if 'PONYSAY_BOTTOM' in os.environ else None - if env_bottom is None: env_bottom = '' - - env_height = os.environ['PONYSAY_TRUNCATE_HEIGHT'] if 'PONYSAY_TRUNCATE_HEIGHT' in os.environ else None - if env_height is None: env_height = '' - - env_lines = os.environ['PONYSAY_SHELL_LINES'] if 'PONYSAY_SHELL_LINES' in os.environ else None - if (env_lines is None) or (env_lines == ''): env_lines = '2' - - ## Print the output, truncated on height is so set - lines = self.__gettermsize()[0] - int(env_lines) - if linuxvt or (env_height is ('yes', 'y', '1')): - if env_bottom is ('yes', 'y', '1'): - for line in output.split('\n')[: -lines]: - print(line) - else: - for line in output.split('\n')[: lines]: - print(line) - else: - print(output) - - - ''' - Print the pony with a speech or though bubble and a self quote - - @param args:ArgParser Parsed command line arguments - ''' - def quote(self, args): - ## Get all quotes, and if any pony is choosen just keep them - pairs = self.__quotes() - if len(args.opts['-q']) > 0: - ponyset = {} - for pony in args.opts['-q']: - if endswith(pony, '.pony'): - ponyname = pony[:-5] - if '/' in ponyname: - ponyname = ponyname[ponyname.rindex('/') + 1:] - ponyset[ponyname] = pony - else: - ponyset[pony] = pony - alts = [] - for pair in pairs: - if pair[0] in ponyset: - alts.append((ponyset[pair[0]], pair[1])) - pairs = alts - - ## Select a random pony–quote-pair, load it and print it - if not len(pairs) == 0: - pair = pairs[random.randrange(0, len(pairs))] - printinfo('quote file: ' + pair[1]) - with open(pair[1], 'rb') as qfile: - args.message = qfile.read().decode('utf8', 'replace').strip() - args.opts['-f'] = [pair[0]] - elif len(args.opts['-q']) == 0: - sys.stderr.write('Princess Celestia! All the ponies are mute!\n') - exit(1) - else: - args.opts['-f'] = [args.opts['-q'][random.randrange(0, len(args.opts['-q']))]] - args.message = 'Zecora! Help me, I am mute!' - - self.print_pony(args) - - - ''' - Identifies whether KMS support is utilised - ''' - @staticmethod - def isUsingKMS(): - ## KMS is not utilised if Linux VT is not used - if not linuxvt: - return False - - ## Read the PONYSAY_KMS_PALETTE environment variable - env_kms = os.environ['PONYSAY_KMS_PALETTE'] if 'PONYSAY_KMS_PALETTE' in os.environ else None - if env_kms is None: env_kms = '' - - ## Read the PONYSAY_KMS_PALETTE_CMD environment variable, and run it - env_kms_cmd = os.environ['PONYSAY_KMS_PALETTE_CMD'] if 'PONYSAY_KMS_PALETTE_CMD' in os.environ else None - if (env_kms_cmd is not None) and (not env_kms_cmd == ''): - env_kms = Popen(shlex.split(env_kms_cmd), stdout=PIPE, stdin=sys.stderr).communicate()[0].decode('utf8', 'replace') - if env_kms[-1] == '\n': - env_kms = env_kms[:-1] - - ## If the palette string is empty KMS is not utilised - return env_kms != '' - - - ''' - Returns the file name of the input pony converted to a KMS pony, or if KMS is not used, the input pony itself - - @param pony:str Choosen pony file - @return :str Pony file to display - ''' - def __kms(self, pony): - ## If not in Linux VT, return the pony as is - if not linuxvt: - return pony - - ## KMS support version constant - KMS_VERSION = '1' - - ## Read the PONYSAY_KMS_PALETTE environment variable - env_kms = os.environ['PONYSAY_KMS_PALETTE'] if 'PONYSAY_KMS_PALETTE' in os.environ else None - if env_kms is None: env_kms = '' - - ## Read the PONYSAY_KMS_PALETTE_CMD environment variable, and run it - env_kms_cmd = os.environ['PONYSAY_KMS_PALETTE_CMD'] if 'PONYSAY_KMS_PALETTE_CMD' in os.environ else None - if (env_kms_cmd is not None) and (not env_kms_cmd == ''): - env_kms = Popen(shlex.split(env_kms_cmd), stdout=PIPE, stdin=sys.stderr).communicate()[0].decode('utf8', 'replace') - if env_kms[-1] == '\n': - env_kms = env_kms[:-1] - - ## If not using KMS, return the pony as is - if env_kms == '': - return pony - - ## Store palette string and a clong with just the essentials - palette = env_kms - palettefile = env_kms.replace('\033]P', '') - - ## Get and in necessary make cache directory - cachedir = '/var/cache/ponysay' - shared = True - if not os.path.isdir(cachedir): - cachedir = HOME + '/.cache/ponysay' - shared = False - if not os.path.isdir(cachedir): - os.makedirs(cachedir) - _cachedir = '\'' + cachedir.replace('\'', '\'\\\'\'') + '\'' - - ## KMS support version control, clean everything if not matching - newversion = False - if not os.path.isfile(cachedir + '/.version'): - newversion = True - else: - with open(cachedir + '/.version', 'rb') as cachev: - if cachev.read().decode('utf8', 'replace').replace('\n', '') != KMS_VERSION: - newversion = True - if newversion: - for cached in os.listdir(cachedir): - cached = cachedir + '/' + cached - if os.path.isdir(cached) and not os.path.islink(cached): - shutil.rmtree(cached, False) - else: - os.remove(cached) - with open(cachedir + '/.version', 'w+') as cachev: - cachev.write(KMS_VERSION) - if shared: - Popen('chmod 666 -- ' + _cachedir + '/.version', shell=True).wait() - - ## Get kmspony directory and kmspony file - kmsponies = cachedir + '/kmsponies/' + palettefile - kmspony = (kmsponies + pony).replace('//', '/') - - ## If the kmspony is missing, create it - if not os.path.isfile(kmspony): - ## Protokmsponies are uncolourful ttyponies - protokmsponies = cachedir + '/protokmsponies/' - protokmspony = (protokmsponies + pony).replace('//', '/') - protokmsponydir = protokmspony[:protokmspony.rindex('/')] - kmsponydir = kmspony[: kmspony.rindex('/')] - - ## Change file names to be shell friendly - _protokmspony = '\'' + protokmspony.replace('\'', '\'\\\'\'') + '\'' - _kmspony = '\'' + kmspony.replace('\'', '\'\\\'\'') + '\'' - _pony = '\'' + pony.replace('\'', '\'\\\'\'') + '\'' - - ## Create protokmspony is missing - if not os.path.isfile(protokmspony): - if not os.path.isdir(protokmsponydir): - os.makedirs(protokmsponydir) - if shared: - Popen('chmod -R 6777 -- ' + _cachedir, shell=True).wait() - if not os.system('ponysay2ttyponysay < ' + _pony + ' > ' + _protokmspony) == 0: - sys.stderr.write('Unable to run ponysay2ttyponysay successfully, you need util-say for KMS support\n') - exit(1) - if shared: - Popen('chmod 666 -- ' + _protokmspony, shell=True).wait() - - ## Create kmspony - if not os.path.isdir(kmsponydir): - os.makedirs(kmsponydir) - if shared: - Popen('chmod -R 6777 -- ' + _cachedir, shell=True).wait() - if not os.system('tty2colourfultty -p ' + palette + ' < ' + _protokmspony + ' > ' + _kmspony) == 0: - sys.stderr.write('Unable to run tty2colourfultty successfully, you need util-say for KMS support\n') - exit(1) - if shared: - Popen('chmod 666 -- ' + _kmspony, shell=True).wait() - - return kmspony - - - -''' -Option takes no arguments -''' -ARGUMENTLESS = 0 - -''' -Option takes one argument per instance -''' -ARGUMENTED = 1 - -''' -Option consumes all following arguments -''' -VARIADIC = 2 - -''' -Simple argument parser -''' -class ArgParser(): - ''' - Constructor. - The short description is printed on same line as the program name - - @param program:str The name of the program - @param description:str Short, single-line, description of the program - @param usage:str Formated, multi-line, usage text - @param longdescription:str Long, multi-line, description of the program, may be `None` - ''' - def __init__(self, program, description, usage, longdescription = None): - self.__program = program - self.__description = description - self.__usage = usage - self.__longdescription = longdescription - self.__arguments = [] - self.opts = {} - self.optmap = {} - - - ''' - Add option that takes no arguments - - @param alternatives:list Option names - @param help:str Short description, use `None` to hide the option - ''' - def add_argumentless(self, alternatives, help = None): - ARGUMENTLESS - self.__arguments.append((ARGUMENTLESS, alternatives, None, help)) - stdalt = alternatives[0] - self.opts[stdalt] = None - for alt in alternatives: - self.optmap[alt] = (stdalt, ARGUMENTLESS) - - ''' - Add option that takes one argument - - @param alternatives:list Option names - @param arg:str The name of the takes argument, one word - @param help:str Short description, use `None` to hide the option - ''' - def add_argumented(self, alternatives, arg, help = None): - self.__arguments.append((ARGUMENTED, alternatives, arg, help)) - stdalt = alternatives[0] - self.opts[stdalt] = None - for alt in alternatives: - self.optmap[alt] = (stdalt, ARGUMENTED) - - ''' - Add option that takes all following argument - - @param alternatives:list Option names - @param arg:str The name of the takes arguments, one word - @param help:str Short description, use `None` to hide the option - ''' - def add_variadic(self, alternatives, arg, help = None): - self.__arguments.append((VARIADIC, alternatives, arg, help)) - stdalt = alternatives[0] - self.opts[stdalt] = None - for alt in alternatives: - self.optmap[alt] = (stdalt, VARIADIC) - - - ''' - Parse arguments - - @param args:list The command line arguments, should include the execute file at index 0, `sys.argv` is default - @return :bool Whether no unrecognised option is used - ''' - def parse(self, argv = sys.argv): - self.argcount = len(argv) - 1 - self.files = [] - - argqueue = [] - optqueue = [] - deque = [] - for arg in argv[1:]: - deque.append(arg) - - dashed = False - tmpdashed = False - get = 0 - dontget = 0 - self.rc = True - - def unrecognised(arg): - sys.stderr.write('%s: warning: unrecognised option %s\n' % (self.__program, arg)) - self.rc = False - - while len(deque) != 0: - arg = deque[0] - deque = deque[1:] - if (get > 0) and (dontget == 0): - get -= 1 - argqueue.append(arg) - elif tmpdashed: - self.files.append(arg) - tmpdashed = False - elif dashed: self.files.append(arg) - elif arg == '++': tmpdashed = True - elif arg == '--': dashed = True - elif (len(arg) > 1) and (arg[0] in ('-', '+')): - if (len(arg) > 2) and (arg[:2] in ('--', '++')): - if dontget > 0: - dontget -= 1 - elif (arg in self.optmap) and (self.optmap[arg][1] == ARGUMENTLESS): - optqueue.append(arg) - argqueue.append(None) - elif '=' in arg: - arg_opt = arg[:arg.index('=')] - if (arg_opt in self.optmap) and (self.optmap[arg_opt][1] >= ARGUMENTED): - optqueue.append(arg_opt) - argqueue.append(arg[arg.index('=') + 1:]) - if self.optmap[arg_opt][1] == VARIADIC: - dashed = True - else: - unrecognised(arg) - elif (arg in self.optmap) and (self.optmap[arg][1] == ARGUMENTED): - optqueue.append(arg) - get += 1 - elif (arg in self.optmap) and (self.optmap[arg][1] == VARIADIC): - optqueue.append(arg) - argqueue.append(None) - dashed = True - else: - unrecognised(arg) - else: - sign = arg[0] - i = 1 - n = len(arg) - while i < n: - narg = sign + arg[i] - i += 1 - if (narg in self.optmap): - if self.optmap[narg][1] == ARGUMENTLESS: - optqueue.append(narg) - argqueue.append(None) - elif self.optmap[narg][1] == ARGUMENTED: - optqueue.append(narg) - nargarg = arg[i:] - if len(nargarg) == 0: - get += 1 - else: - argqueue.append(nargarg) - break - elif self.optmap[narg][1] == VARIADIC: - optqueue.append(narg) - nargarg = arg[i:] - argqueue.append(nargarg if len(nargarg) > 0 else None) - dashed = True - break - else: - unrecognised(arg) - else: - self.files.append(arg) - - i = 0 - n = len(optqueue) - while i < n: - opt = optqueue[i] - arg = argqueue[i] - i += 1 - opt = self.optmap[opt][0] - if (opt not in self.opts) or (self.opts[opt] is None): - self.opts[opt] = [] - self.opts[opt].append(arg) - - for arg in self.__arguments: - if (arg[0] == VARIADIC): - varopt = self.opts[arg[1][0]] - if varopt is not None: - additional = ','.join(self.files).split(',') if len(self.files) > 0 else [] - if varopt[0] is None: - self.opts[arg[1][0]] = additional - else: - self.opts[arg[1][0]] = varopt[0].split(',') + additional - self.files = [] - break - - self.message = ' '.join(self.files) if len(self.files) > 0 else None - - return self.rc - - - ''' - Prints a colourful help message - ''' - def help(self): - print('\033[1m%s\033[21m %s %s' % (self.__program, '-' if linuxvt else '—', self.__description)) - print() - if self.__longdescription is not None: - print(self.__longdescription) - print() - - print('\033[1mUSAGE:\033[21m', end='') - first = True - for line in self.__usage.split('\n'): - if first: - first = False - else: - print(' or', end='') - print('\t%s' % (line)) - print() - - print('\033[1mSYNOPSIS:\033[21m') - (lines, lens) = ([], []) - for opt in self.__arguments: - opt_type = opt[0] - opt_alts = opt[1] - opt_arg = opt[2] - opt_help = opt[3] - if opt_help is None: - continue - (line, l) = ('', 0) - first = opt_alts[0] - last = opt_alts[-1] - alts = ('', last) if first is last else (first, last) - for opt_alt in alts: - if opt_alt is alts[-1]: - line += '%colour%' + opt_alt - l += len(opt_alt) - if opt_type == ARGUMENTED: line += ' \033[4m%s\033[24m' % (opt_arg); l += len(opt_arg) + 1 - elif opt_type == VARIADIC: line += ' [\033[4m%s\033[24m...]' % (opt_arg); l += len(opt_arg) + 6 - else: - line += ' \033[2m%s\033[22m ' % (opt_alt) - l += len(opt_alt) + 6 - lines.append(line) - lens.append(l) - - col = max(lens) - col += 8 - ((col - 4) & 7) - index = 0 - for opt in self.__arguments: - opt_help = opt[3] - if opt_help is None: - continue - first = True - colour = '36' if (index & 1) == 0 else '34' - print(lines[index].replace('%colour%', '\033[%s;1m' % (colour)), end=' ' * (col - lens[index])) - for line in opt_help.split('\n'): - if first: - first = False - print('%s' % (line), end='\033[21;39m\n') - else: - print('%s\033[%sm%s\033[39m' % (' ' * col, colour, line)) - index += 1 - - print() - - - -''' -Balloon format class -''' -class Balloon(): - ''' - Constructor - - @param link:str The \-directional balloon line character - @param linkmirror:str The /-directional balloon line character - @param ww:str See the info manual - @param ee:str See the info manual - @param nw:list See the info manual - @param nnw:list See the info manual - @param n:list See the info manual - @param nne:list See the info manual - @param ne:list See the info manual - @param nee:str See the info manual - @param e:str See the info manual - @param see:str See the info manual - @param se:list See the info manual - @param sse:list See the info manual - @param s:list See the info manual - @param ssw:list See the info manual - @param sw:list See the info manual - @param sww:str See the info manual - @param w:str See the info manual - @param nww:str See the info manual - ''' - def __init__(self, link, linkmirror, ww, ee, nw, nnw, n, nne, ne, nee, e, see, se, sse, s, ssw, sw, sww, w, nww): - (self.link, self.linkmirror) = (link, linkmirror) - (self.ww, self.ee) = (ww, ee) - (self.nw, self.ne, self.se, self.sw) = (nw, ne, se, sw) - (self.nnw, self.n, self.nne) = (nnw, n, nne) - (self.nee, self.e, self.see) = (nee, e, see) - (self.sse, self.s, self.ssw) = (sse, s, ssw) - (self.sww, self.w, self.nww) = (sww, w, nww) - - _ne = max(ne, key = UCS.dispLen) - _nw = max(nw, key = UCS.dispLen) - _se = max(se, key = UCS.dispLen) - _sw = max(sw, key = UCS.dispLen) - - minE = UCS.dispLen(max([_ne, nee, e, see, _se, ee], key = UCS.dispLen)) - minW = UCS.dispLen(max([_nw, nww, e, sww, _sw, ww], key = UCS.dispLen)) - minN = len(max([ne, nne, n, nnw, nw], key = len)) - minS = len(max([se, sse, s, ssw, sw], key = len)) - - self.minwidth = minE + minE - self.minheight = minN + minS - - - ''' - Generates a balloon with a message - - @param minw:int The minimum number of columns of the balloon - @param minh:int The minimum number of lines of the balloon - @param lines:list The text lines to display - @param lencalc:int(str) Function used to compute the length of a text line - @return :str The balloon as a formated string - ''' - def get(self, minw, minh, lines, lencalc): - h = self.minheight + len(lines) - w = self.minwidth + lencalc(max(lines, key = lencalc)) - if w < minw: w = minw - if h < minh: h = minh - - if len(lines) > 1: - (ws, es) = ({0 : self.nww, len(lines) - 1 : self.sww}, {0 : self.nee, len(lines) - 1 : self.see}) - for j in range(1, len(lines) - 1): - ws[j] = self.w - es[j] = self.e - else: - (ws, es) = ({0 : self.ww}, {0 : self.ee}) - - rc = [] - - for j in range(0, len(self.n)): - outer = UCS.dispLen(self.nw[j]) + UCS.dispLen(self.ne[j]) - inner = UCS.dispLen(self.nnw[j]) + UCS.dispLen(self.nne[j]) - if outer + inner <= w: - rc.append(self.nw[j] + self.nnw[j] + self.n[j] * (w - outer - inner) + self.nne[j] + self.ne[j]) - else: - rc.append(self.nw[j] + self.n[j] * (w - outer) + self.ne[j]) - - for j in range(0, len(lines)): - rc.append(ws[j] + lines[j] + ' ' * (w - lencalc(lines[j]) - UCS.dispLen(self.w) - UCS.dispLen(self.e)) + es[j]) - - for j in range(0, len(self.s)): - outer = UCS.dispLen(self.sw[j]) + UCS.dispLen(self.se[j]) - inner = UCS.dispLen(self.ssw[j]) + UCS.dispLen(self.sse[j]) - if outer + inner <= w: - rc.append(self.sw[j] + self.ssw[j] + self.s[j] * (w - outer - inner) + self.sse[j] + self.se[j]) - else: - rc.append(self.sw[j] + self.s[j] * (w - outer) + self.se[j]) - - return '\n'.join(rc) - - - -''' -Super-ultra-extreme-awesomazing replacement for cowsay -''' -class Backend(): - ''' - Constructor - - @param message:str The message spoken by the pony - @param ponyfile:str The pony file - @param wrapcolumn:int The column at where to wrap the message, `None` for no wrapping - @param width:int The width of the screen, `None` if truncation should not be applied - @param balloon:Balloon The balloon style object, `None` if only the pony should be printed - @param hyphen:str How hyphens added by the wordwrapper should be printed - @param linkcolour:str How to colour the link character, empty string if none - @param ballooncolour:str How to colour the balloon, empty string if none - ''' - def __init__(self, message, ponyfile, wrapcolumn, width, balloon, hyphen, linkcolour, ballooncolour): - self.message = message - self.ponyfile = ponyfile - self.wrapcolumn = None if wrapcolumn is None else wrapcolumn - (0 if balloon is None else balloon.minwidth) - self.width = width - self.balloon = balloon - self.hyphen = hyphen - self.ballooncolour = ballooncolour - - if self.balloon is not None: - self.link = {'\\' : linkcolour + self.balloon.link, - '/' : linkcolour + self.balloon.linkmirror} - else: - self.link = {} - - self.output = '' - self.pony = None - - - ''' - Process all data - ''' - def parse(self): - self.__expandMessage() - self.__unpadMessage() - self.__loadFile() - - if self.pony.startswith('$$$\n'): - self.pony = self.pony[4:] - infoend = self.pony.index('\n$$$\n') - printinfo(self.pony[:infoend]) - self.pony = self.pony[infoend + 5:] - self.pony = mode + self.pony - - self.__processPony() - self.__truncate() - - - ''' - Remove padding spaces fortune cookies are padded with whitespace (damn featherbrains) - ''' - def __unpadMessage(self): - lines = self.message.split('\n') - for spaces in (8, 4, 2, 1): - padded = True - for line in lines: - if not line.startswith(' ' * spaces): - padded = False - break - if padded: - for i in range(0, len(lines)): - line = lines[i] - while line.startswith(' ' * spaces): - line = line[spaces:] - lines[i] = line - lines = [line.rstrip(' ') for line in lines] - self.message = '\n'.join(lines) - - - ''' - Converts all tabs in the message to spaces by expanding - ''' - def __expandMessage(self): - lines = self.message.split('\n') - buf = '' - for line in lines: - (i, n, x) = (0, len(line), 0) - while i < n: - c = line[i] - i += 1 - if c == '\033': - colour = self.__getcolour(line, i - 1) - i += len(colour) - 1 - buf += colour - elif c == '\t': - nx = 8 - (x & 7) - buf += ' ' * nx - x += nx - else: - buf += c - if not UCS.isCombining(c): - x += 1 - buf += '\n' - self.message = buf[:-1] - - - ''' - Loads the pony file - ''' - def __loadFile(self): - with open(self.ponyfile, 'rb') as ponystream: - self.pony = ponystream.read().decode('utf8', 'replace') - - - ''' - Truncate output to the width of the screen - ''' - def __truncate(self): - if self.width is None: - return - lines = self.output.split('\n') - self.output = '' - for line in lines: - (i, n, x) = (0, len(line), 0) - while i < n: - c = line[i] - i += 1 - if c == '\033': - colour = self.__getcolour(line, i - 1) - i += len(colour) - 1 - self.output += colour - else: - if x < self.width: - self.output += c - if not UCS.isCombining(c): - x += 1 - self.output += '\n' - self.output = self.output[:-1] - - - ''' - Process the pony file and generate output to self.output - ''' - def __processPony(self): - self.output = '' - - AUTO_PUSH = '\033[01010~' - AUTO_POP = '\033[10101~' - - variables = {'' : '$'} - for key in self.link: - variables[key] = AUTO_PUSH + self.link[key] + AUTO_POP - - indent = 0 - dollar = None - balloonLines = None - colourstack = ColourStack(AUTO_PUSH, AUTO_POP) - - (i, n, lineindex, skip, nonskip) = (0, len(self.pony), 0, 0, 0) - while i < n: - c = self.pony[i] - if c == '\t': - n += 7 - (indent & 7) - ed = ' ' * (8 - (indent & 7)) - c = ' ' - self.pony = self.pony[:i] + ed + self.pony[i + 1:] - i += 1 - if c == '$': - if dollar is not None: - if '=' in dollar: - name = dollar[:dollar.find('=')] - value = dollar[dollar.find('=') + 1:] - variables[name] = value - elif not dollar.startswith('balloon'): - data = variables[dollar].replace('$', '$$') - if data == '$$': # if not handled specially we will get an infinity loop - if (skip == 0) or (nonskip > 0): - if nonskip > 0: - nonskip -= 1 - self.output += '$' - indent += 1 - else: - skip -= 1 - else: - n += len(data) - self.pony = self.pony[:i] + data + self.pony[i:] - elif self.balloon is not None: - (w, h) = (0, 0) - props = dollar[7:] - if len(props) > 0: - if ',' in props: - if props[0] is not ',': - w = int(props[:props.index(',')]) - h = int(props[props.index(',') + 1:]) - else: - w = int(props) - balloon = self.__getballoon(w, h, indent) - balloon = balloon.split('\n') - balloon = [AUTO_PUSH + self.ballooncolour + item + AUTO_POP for item in balloon] - for b in balloon[0]: - self.output += b + colourstack.feed(b) - if lineindex == 0: - balloonpre = '\n' + (' ' * indent) - for line in balloon[1:]: - self.output += balloonpre; - for b in line: - self.output += b + colourstack.feed(b); - indent = 0 - elif len(balloon) > 1: - balloonLines = balloon - balloonLine = 0 - balloonIndent = indent - indent += self.__len(balloonLines[0]) - balloonLines[0] = None - dollar = None - else: - dollar = '' - elif dollar is not None: - if c == '\033': - c = self.pony[i] - i += 1 - dollar += c - elif c == '\033': - colour = self.__getcolour(self.pony, i - 1) - for b in colour: - self.output += b + colourstack.feed(b); - i += len(colour) - 1 - elif c == '\n': - self.output += c - indent = 0 - (skip, nonskip) = (0, 0) - lineindex += 1 - if balloonLines is not None: - balloonLine += 1 - if balloonLine == len(balloonLines): - balloonLines = None - else: - if (balloonLines is not None) and (balloonLines[balloonLine] is not None) and (balloonIndent == indent): - data = balloonLines[balloonLine] - datalen = self.__len(data) - skip += datalen - nonskip += datalen - data = data.replace('$', '$$') - n += len(data) - self.pony = self.pony[:i] + data + self.pony[i:] - balloonLines[balloonLine] = None - else: - if (skip == 0) or (nonskip > 0): - if nonskip > 0: - nonskip -= 1 - self.output += c + colourstack.feed(c); - if not UCS.isCombining(c): - indent += 1 - else: - skip -= 1 - - if balloonLines is not None: - for line in balloonLines[balloonLine:]: - data = ' ' * (balloonIndent - indent) + line + '\n' - for b in data: - self.output += b + colourstack.feed(b); - indent = 0 - - self.output = self.output.replace(AUTO_PUSH, '').replace(AUTO_POP, '') - - - ''' - Gets colour code att the currect offset in a buffer - - @param input:str The input buffer - @param offset:int The offset at where to start reading, a escape must begin here - @return :str The escape sequence - ''' - def __getcolour(self, input, offset): - (i, n) = (offset, len(input)) - rc = input[i] - i += 1 - if i == n: return rc - c = input[i] - i += 1 - rc += c - - if c == ']': - if i == n: return rc - c = input[i] - i += 1 - rc += c - if c == 'P': - di = 0 - while (di < 7) and (i < n): - c = input[i] - i += 1 - di += 1 - rc += c - elif c == '[': - while i < n: - c = input[i] - i += 1 - rc += c - if (c == '~') or (('a' <= c) and (c <= 'z')) or (('A' <= c) and (c <= 'Z')): - break - - return rc - - - ''' - Calculates the number of visible characters in a text - - @param input:str The input buffer - @return :int The number of visible characters - ''' - def __len(self, input): - (rc, i, n) = (0, 0, len(input)) - while i < n: - c = input[i] - if c == '\033': - i += len(self.__getcolour(input, i)) - else: - i += 1 - if not UCS.isCombining(c): - rc += 1 - return rc - - - ''' - Generates a balloon with the message - - @param width:int The minimum width of the balloon - @param height:int The minimum height of the balloon - @param left:int The column where the balloon starts - @return :str The balloon the the message as a string - ''' - def __getballoon(self, width, height, left): - wrap = None - if self.wrapcolumn is not None: - wrap = self.wrapcolumn - left - if wrap < 8: - wrap = 8 - - msg = self.message - if wrap is not None: - msg = self.__wrapMessage(msg, wrap) - - msg = msg.replace('\n', '\033[0m%s\n' % (self.ballooncolour)) + '\033[0m' + self.ballooncolour - - return self.balloon.get(width, height, msg.split('\n'), self.__len); - - - ''' - Wraps the message - - @param message:str The message to wrap - @param wrap:int The width at where to force wrapping - @return :str The message wrapped - ''' - def __wrapMessage(self, message, wrap): - buf = '' - try: - AUTO_PUSH = '\033[01010~' - AUTO_POP = '\033[10101~' - msg = message.replace('\n', AUTO_PUSH + '\n' + AUTO_POP); - cstack = ColourStack(AUTO_PUSH, AUTO_POP) - for c in msg: - buf += c + cstack.feed(c) - lines = buf.replace(AUTO_PUSH, '').replace(AUTO_POP, '').split('\n') - buf = '' - - for line in lines: - b = [None] * len(line) - map = {0 : 0} - (bi, cols, w) = (0, 0, wrap) - (indent, indentc) = (-1, 0) - - (i, n) = (0, len(line)) - while i <= n: - d = None - if i < n: - d = line[i] - i += 1 - if d == '\033': # TODO this should use self.__getcolour() - ## Invisible stuff - b[bi] = d - bi += 1 - b[bi] = line[i] - d = line[i] - bi += 1 - i += 1 - if d == '[': - while True: - b[bi] = line[i] - d = line[i] - bi += 1 - i += 1 - if (('a' <= d) and (d <= 'z')) or (('A' <= d) and (d <= 'Z')) or (d == '~'): - break - elif d == ']': - b[bi] = line[i] - d = line[i] - bi += 1 - i += 1 - if d == 'P': - for j in range(0, 7): - b[bi] = line[i] - bi += 1 - i += 1 - elif (d is not None) and (d != ' '): - ## Fetch word - if indent == -1: - indent = i - 1 - for j in range(0, indent): - if line[j] == ' ': - indentc += 1 - b[bi] = d - bi += 1 - if (not UCS.isCombining(d)) and (d != '­'): - cols += 1 - map[cols] = bi - else: - ## Wrap? - mm = 0 - bisub = 0 - iwrap = wrap - (0 if indent == 1 else indentc) - - while ((w > 8) and (cols > w + 5)) or (cols > iwrap): # TODO make configurable - ## wrap - x = w; - if mm + x not in map: # Too much whitespace ? - cols = 0 - break - nbsp = b[map[mm + x]] == ' ' - m = map[mm + x] - - if ('­' in b[bisub : m]) and not nbsp: - hyphen = m - 1 - while b[hyphen] != '­': - hyphen -= 1 - while map[mm + x] > hyphen: ## Only looking backward, if foreward is required the word is probabily not hyphenated correctly - x -= 1 - x += 1 - m = map[mm + x] - - mm += x - (0 if nbsp else 1) ## − 1 so we have space for a hythen - - for bb in b[bisub : m]: - buf += bb - buf += '\n' if nbsp else '\0\n' - cols -= x - (0 if nbsp else 1) - bisub = m - - w = iwrap - if indent != -1: - buf += line[:indent] - - for j in range(bisub, bi): - b[j - bisub] = b[j] - bi -= bisub - - if cols > w: - buf += '\n' - w = wrap - if indent != -1: - buf += line[:indent] - w -= indentc - for bb in b[:bi]: - buf += bb - w -= cols - cols = 0 - bi = 0 - if d is None: - i += 1 - else: - if w > 0: - buf += ' ' - w -= 1 - else: - buf += '\n' - w = wrap - if indent != -1: - buf + line[:indent] - w -= indentc - buf += '\n' - - rc = '\n'.join(line.rstrip() for line in buf[:-1].split('\n')); - rc = rc.replace('­', ''); # remove soft hyphens - rc = rc.replace('\0', '%s%s%s' % (AUTO_PUSH, self.hyphen, AUTO_POP)) - return rc - except Exception as err: - import traceback - errormessage = ''.join(traceback.format_exception(type(err), err, None)) - rc = '\n'.join(line.rstrip() for line in buf.split('\n')); - rc = rc.replace('\0', '%s%s%s' % (AUTO_PUSH, self.hyphen, AUTO_POP)) - errormessage += '\n---- WRAPPING BUFFER ----\n\n' + rc - try: - if os.readlink('/proc/self/fd/2') != os.readlink('/proc/self/fd/1'): - printerr(errormessage, end='') - return message - except: - pass - return message + '\n\n\033[0;1;31m---- EXCEPTION IN PONYSAY WHILE WRAPPING ----\033[0m\n\n' + errormessage - - -''' -ANSI colour stack - -This is used to make layers with independent coloursations -''' -class ColourStack(): - ''' - Constructor - - @param autopush:str String that, when used, will create a new independently colourised layer - @param autopop:str String that, when used, will end the current layer and continue of the previous layer - ''' - def __init__(self, autopush, autopop): - self.autopush = autopush - self.autopop = autopop - self.lenpush = len(autopush) - self.lenpop = len(autopop) - self.bufproto = ' ' * (self.lenpush if self.lenpush > self.lenpop else self.lenpop) - self.stack = [] - self.push() - self.seq = None - - - ''' - Create a new independently colourised layer - - @return :str String that should be inserted into your buffer - ''' - def push(self): - self.stack.insert(0, [self.bufproto, None, None, [False] * 9]) - if len(self.stack) == 1: - return None - return '\033[0m' - - - ''' - End the current layer and continue of the previous layer - - @return :str String that should be inserted into your buffer - ''' - def pop(self): - old = self.stack.pop(0) - rc = '\033[0;' - if len(self.stack) == 0: # last resort in case something made it pop too mush - push() - new = self.stack[0] - if new[1] is not None: rc += new[1] + ';' - if new[2] is not None: rc += new[2] + ';' - for i in range(0, 9): - if new[3][i]: - rc += str(i + 1) + ';' - return rc[:-1] + 'm' - - - ''' - Use this, in sequence, for which character in your buffer that contains yor autopush and autopop - string, the automatically get push and pop string to insert after each character - - @param :chr One character in your buffer - @return :str The text to insert after the input character - ''' - def feed(self, char): - if self.seq is not None: - self.seq += char - if (char == '~') or (('a' <= char) and (char <= 'z')) or (('A' <= char) and (char <= 'Z')): - if (self.seq[0] == '[') and (self.seq[-1] == 'm'): - self.seq = self.seq[1:-1].split(';') - (i, n) = (0, len(self.seq)) - while i < n: - part = self.seq[i] - p = 0 if part == '' else int(part) - i += 1 - if p == 0: self.stack[0][1:] = [None, None, [False] * 9] - elif (1 <= p) and (p <= 9): self.stack[0][3][p - 1] = True - elif (21 <= p) and (p <= 29): self.stack[0][3][p - 21] = False - elif p == 39: self.stack[0][1] = None - elif p == 49: self.stack[0][2] = None - elif (30 <= p) and (p <= 37): self.stack[0][1] = part - elif (90 <= p) and (p <= 97): self.stack[0][1] = part - elif (40 <= p) and (p <= 47): self.stack[0][2] = part - elif (100 <= p) and (p <= 107): self.stack[0][2] = part - elif p == 38: - self.stack[0][1] = '%s;%s;%s' % (part, self.seq[i], self.seq[i + 1]) - i += 2 - elif p == 48: - self.stack[0][2] = '%s;%s;%s' % (part, self.seq[i], self.seq[i + 1]) - i += 2 - self.seq = None - elif char == '\033': - self.seq = '' - buf = self.stack[0][0] - buf = buf[1:] + char - rc = '' - if buf[-self.lenpush:] == self.autopush: rc = self.push() - elif buf[-self.lenpop:] == self.autopop: rc = self.pop() - self.stack[0][0] = buf - return rc - - - -''' -UCS utility class -''' -class UCS(): - ''' - Checks whether a character is a combining character - - @param char:chr The character to test - @return :bool Whether the character is a combining character - ''' - @staticmethod - def isCombining(char): - o = ord(char) - if (0x0300 <= o) and (o <= 0x036F): return True - if (0x20D0 <= o) and (o <= 0x20FF): return True - if (0x1DC0 <= o) and (o <= 0x1DFF): return True - if (0xFE20 <= o) and (o <= 0xFE2F): return True - return False - - - ''' - Gets the number of combining characters in a string - - @param string:str A text to count combining characters in - @return :int The number of combining characters in the string - ''' - @staticmethod - def countCombining(string): - rc = 0 - for char in string: - if UCS.isCombining(char): - rc += 1 - return rc - - - ''' - Gets length of a string not counting combining characters - - @param string:str The text of which to determine the monospaced width - @return The determine the monospaced width of the text, provided it does not have escape sequnces - ''' - @staticmethod - def dispLen(string): - return len(string) - UCS.countCombining(string) - - - -''' -Class used for correcting spellos and typos, - -Note that this implementation will not find that correctly spelled word are correct faster than it corrects words. -It is also limited to words of size 0 to 127 (inclusive) -''' -class SpelloCorrecter(): # Naïvely and quickly proted and adapted from optimised Java, may not be the nicest, or even fast, Python code - ''' - Constructor - - @param directories:list List of directories that contains the file names with the correct spelling - @param ending:str The file name ending of the correctly spelled file names, this is removed for the name - ''' - def __init__(self, directories, ending): - self.weights = {'k' : {'c' : 0.25, 'g' : 0.75, 'q' : 0.125}, - 'c' : {'k' : 0.25, 'g' : 0.75, 's' : 0.5, 'z' : 0.5, 'q' : 0.125}, - 's' : {'z' : 0.25, 'c' : 0.5}, - 'z' : {'s' : 0.25, 'c' : 0.5}, - 'g' : {'k' : 0.75, 'c' : 0.75, 'q' : 0.9}, - 'o' : {'u' : 0.5}, - 'u' : {'o' : 0.5, 'v' : 0.75, 'w' : 0.5}, - 'b' : {'v' : 0.75}, - 'v' : {'b' : 0.75, 'w' : 0.5, 'u' : 0.7}, - 'w' : {'v' : 0.5, 'u' : 0.5}, - 'q' : {'c' : 0.125, 'k' : 0.125, 'g' : 0.9}} - - self.corrections = None - self.dictionary = [None] * 513 - self.reusable = [0] * 512 - self.dictionaryEnd = 512 - self.closestDistance = 0 - - self.M = [None] * 128 - for y in range(0, 128): - self.M[y] = [0] * 128 - self.M[y][0] = y - m0 = self.M[0] - x = 127 - while x > -1: - m0[x] = x - x -= 1 - - previous = '' - self.dictionary[-1] = previous; - - for directory in directories: - for filename in os.listdir(directory): - if (not endswith(filename, ending)) or (len(filename) - len(ending) > 127): - continue - proper = filename[:-len(ending)] - - if self.dictionaryEnd == 0: - self.dictionaryEnd = len(self.dictionary) - self.reusable = [0] * self.dictionaryEnd + self.reusable - self.dictionary = [None] * self.dictionaryEnd + self.dictionary - - self.dictionaryEnd -= 1 - self.dictionary[self.dictionaryEnd] = proper - - prevCommon = min(len(previous), len(proper)) - for i in range(0, prevCommon): - if previous[i] != proper[i]: - prevCommon = i - break - previous = proper - self.reusable[self.dictionaryEnd] = prevCommon - #part = self.dictionary[self.dictionaryEnd : len(self.dictionary) - 1] - #part.sort() - #self.dictionary[self.dictionaryEnd : len(self.dictionary) - 1] = part - # - #index = len(self.dictionary) - 1 - #while index >= self.dictionaryEnd: - # proper = self.dictionary[index] - # prevCommon = min(len(previous), len(proper)) - # for i in range(0, prevCommon): - # if previous[i] != proper[i]: - # prevCommon = i - # break - # previous = proper - # self.reusable[self.dictionaryEnd] = prevCommon - # index -= 1; - - - ''' - Finds the closests correct spelled word - - @param used:str The word to correct - @return (words, distance):(list, int) A list the closest spellings and the weighted distance - ''' - def correct(self, used): - if len(used) > 127: - return ([used], 0) - - self.__correct(used) - return (self.corrections, self.closestDistance) - - - ''' - Finds the closests correct spelled word - - @param used:str The word to correct, it must satisfy all restrictions - ''' - def __correct(self, used): - self.closestDistance = 0x7FFFFFFF - previous = self.dictionary[-1] - prevLen = 0 - usedLen = len(used) - - proper = None - prevCommon = 0 - - d = len(self.dictionary) - 1 - while d > self.dictionaryEnd: - d -= 1 - proper = self.dictionary[d] - if abs(len(proper) - usedLen) <= self.closestDistance: - if previous == self.dictionary[d + 1]: - prevCommon = self.reusable[d]; - else: - prevCommon = min(prevLen, len(proper)) - for i in range(0, prevCommon): - if previous[i] != proper[i]: - prevCommon = i - break - - skip = min(prevLen, len(proper)) - i = prevCommon - while i < skip: - for u in range(0, usedLen): - if (used[u] == previous[i]) or (used[u] == proper[i]): - skip = i - break - i += 1 - - common = min(skip, min(usedLen, len(proper))) - for i in range(0, common): - if used[i] != proper[i]: - common = i - break - - distance = self.__distance(proper, skip, len(proper), used, common, usedLen) - - if self.closestDistance > distance: - self.closestDistance = distance - self.corrections = [proper] - elif self.closestDistance == distance: - self.corrections.append(proper) - - previous = proper; - if distance >= 0x7FFFFF00: - prevLen = distance & 255 - else: - prevLen = len(proper) - - - ''' - Calculate the distance between a correct word and a incorrect word - - @param proper:str The correct word - @param y0:int The offset for `proper` - @param yn:int The length, before applying `y0`, of `proper` - @param used:str The incorrect word - @param x0:int The offset for `used` - @param xn:int The length, before applying `x0`, of `used` - @return :float The distance between the words - ''' - def __distance(self, proper, y0, yn, used, x0, xn): - my = self.M[y0] - for y in range(y0, yn): - best = 0x7FFFFFFF - p = proper[y] - myy = self.M[y + 1] # only one array bound check, and at most one + ☺ - x = x0 - while x < xn: - change = my[x] - u = used[x] - if p == u: - # commence black magick … twilight would be so disappointed - x += 1 - myy[x] = change - best = min(best, change) - remove = myy[x] - add = my[x + 1] - - cw = 1 - if my[x] in self.weights: - if p in self.weights[u]: - cw = self.weights[u][p] - x += 1 - - myy[x] = min(cw + change, 1 + min(remove, add)) - if best > myy[x]: - best = myy[x] - - if best > self.closestDistance: - return 0x7FFFFF00 | y - my = myy - return my[xn] - - - - -''' -The user's home directory -''' -HOME = os.environ['HOME'] if 'HOME' in os.environ else os.path.expanduser('~') - - -''' -Whether the program is execute in Linux VT (TTY) -''' -linuxvt = ('TERM' in os.environ) and (os.environ['TERM'] == 'linux') - - -''' -Whether the script is executed as ponythink -''' -isthink = (len(__file__) >= len('think')) and (__file__.endswith('think')) -isthink = ((len(__file__) >= len('think.py')) and (__file__.endswith('think.py'))) or isthink - - -''' -Whether stdin is piped -''' -pipelinein = not sys.stdin.isatty() - -''' -Whether stdout is piped -''' -pipelineout = not sys.stdout.isatty() - -''' -Whether stderr is piped -''' -pipelineerr = not sys.stderr.isatty() - - -''' -Whether KMS is used -''' -usekms = Ponysay.isUsingKMS() - - -''' -Mode string that modifies or adds $ variables in the pony image -''' -mode = '' - - -''' -The directories where pony files are stored, ttyponies/ are used if the terminal is Linux VT (also known as TTY) and not with KMS -''' -appendset = set() -xponydirs = [] -_ponydirs = [HOME + '/.local/share/ponysay/ponies/', '/usr/share/ponysay/ponies/'] -for ponydir in _ponydirs: - if os.path.isdir(ponydir) and (ponydir not in appendset): - xponydirs.append(ponydir) - appendset.add(ponydir) -appendset = set() -vtponydirs = [] -_ponydirs = [HOME + '/.local/share/ponysay/ttyponies/', '/usr/share/ponysay/ttyponies/'] -for ponydir in _ponydirs: - if os.path.isdir(ponydir) and (ponydir not in appendset): - vtponydirs.append(ponydir) - appendset.add(ponydir) - - -''' -The directories where pony files are stored, extrattyponies/ are used if the terminal is Linux VT (also known as TTY) and not with KMS -''' -appendset = set() -extraxponydirs = [] -_extraponydirs = [HOME + '/.local/share/ponysay/extraponies/', '/usr/share/ponysay/extraponies/'] -for extraponydir in _extraponydirs: - if os.path.isdir(extraponydir) and (extraponydir not in appendset): - extraxponydirs.append(extraponydir) - appendset.add(extraponydir) -appendset = set() -extravtponydirs = [] -_extraponydirs = [HOME + '/.local/share/ponysay/extrattyponies/', '/usr/share/ponysay/extrattyponies/'] -for extraponydir in _extraponydirs: - if os.path.isdir(extraponydir) and (extraponydir not in appendset): - extravtponydirs.append(extraponydir) - appendset.add(extraponydir) - - -''' -The directories where quotes files are stored -''' -appendset = set() -quotedirs = [] -_quotedirs = [HOME + '/.local/share/ponysay/quotes/', '/usr/share/ponysay/quotes/'] -for quotedir in _quotedirs: - if os.path.isdir(quotedir) and (quotedir not in appendset): - quotedirs.append(quotedir) - appendset.add(quotedir) - - -''' -The directories where balloon style files are stored -''' -appendset = set() -balloondirs = [] -_balloondirs = [HOME + '/.local/share/ponysay/balloons/', '/usr/share/ponysay/balloons/'] -for balloondir in _balloondirs: - if os.path.isdir(balloondir) and (balloondir not in appendset): - balloondirs.append(balloondir) - appendset.add(balloondir) - - -''' -ucsmap files -''' -appendset = set() -ucsmaps = [] -_ucsmaps = [HOME + '/.local/share/ponysay/ucsmap', '/usr/share/ponysay/ucsmap'] -for ucsmap in _ucsmaps: - if os.path.isdir(ucsmap) and (ucsmap not in appendset): - ucsmaps.append(ucsmap) - appendset.add(ucsmap) - - - -usage_saythink = '\033[34;1m(ponysay | ponythink)\033[21;39m' -usage_common = '[-c] [-W\033[4mCOLUMN\033[24m] [-b\033[4mSTYLE\033[24m]' -usage_listhelp = '(-l | -L | -B | +l | +L | -v | -h)' -usage_file = '[-f\033[4mPONY\033[24m]* [[--] \033[4mmessage\033[24m]' -usage_xfile = '(-F\033[4mPONY\033[24m)* [[--] \033[4mmessage\033[24m]' -usage_quote = '(-q \033[4mPONY\033[24m)*' - -usage = '%s %s\n%s %s %s\n%s %s %s\n%s %s %s' % (usage_saythink, usage_listhelp, - usage_saythink, usage_common, usage_file, - usage_saythink, usage_common, usage_xfile, - usage_saythink, usage_common, usage_quote) - -usage = usage.replace('\033[', '\0') -for sym in ('[', ']', '(', ')', '|', '...', '*'): - usage = usage.replace(sym, '\033[2m' + sym + '\033[22m') -usage = usage.replace('\0', '\033[') - -''' -Argument parsing -''' -opts = ArgParser(program = 'ponythink' if isthink else 'ponysay', - description = 'cowsay reimplemention for ponies', - usage = usage, - longdescription = -'''Ponysay displays an image of a pony saying some text provided by the user. -If \033[4mmessage\033[24m is not provided, it accepts standard input. For an extensive -documentation run `info ponysay`, or for just a little more help than this -run `man ponysay`. Ponysay has so much more to offer than described here.''') - -opts.add_argumentless(['--quoters']) -opts.add_argumentless(['--onelist']) -opts.add_argumentless(['++onelist']) - -opts.add_argumentless(['-X', '--256-colours', '--256colours', '--x-colours']) -opts.add_argumentless(['-V', '--tty-colours', '--ttycolours', '--vt-colours']) -opts.add_argumentless(['-K', '--kms-colours', '--kmscolours']) - -opts.add_argumented(['+c', '--colour'], arg = 'COLOUR') -opts.add_argumented(['--colour-bubble', '--colour-balloon'], arg = 'COLOUR') -opts.add_argumented(['--colour-link'], arg = 'COLOUR') -opts.add_argumented(['--colour-msg', '--colour-message'], arg = 'COLOUR') -opts.add_argumented(['--colour-pony'], arg = 'COLOUR') -opts.add_argumented(['--colour-wrap', '--colour-hyphen'], arg = 'COLOUR') - -opts.add_argumentless(['-h', '--help'], help = 'Print this help message.') -opts.add_argumentless(['-v', '--version'], help = 'Print the version of the program.') -opts.add_argumentless(['-l', '--list'], help = 'List pony names.') -opts.add_argumentless(['-L', '--symlist', '--altlist'], help = 'List pony names with alternatives.') -opts.add_argumentless(['+l', '++list'], help = 'List non-MLP:FiM pony names.') -opts.add_argumentless(['+L', '++symlist', '++altlist'], help = 'List non-MLP:FiM pony names with alternatives.') -opts.add_argumentless(['-A', '--all'], help = 'List all pony names.') -opts.add_argumentless(['+A', '++all', '--symall', '--altall'], help = 'List all pony names with alternatives.') -opts.add_argumentless(['-B', '--bubblelist', '--balloonlist'], help = 'List balloon styles.') -opts.add_argumentless(['-c', '--compact'], help = 'Compress messages.') -opts.add_argumentless(['-o', '--pony-only', '--ponyonly'], help = 'Print only the pony.') -opts.add_argumented( ['-W', '--wrap'], arg = 'COLUMN', help = 'Specify column where the message should be wrapped.') -opts.add_argumented( ['-b', '--bubble', '--balloon'], arg = 'STYLE', help = 'Select a balloon style.') -opts.add_argumented( ['-f', '--file', '--pony'], arg = 'PONY', help = 'Select a pony.\nEither a file name or a pony name.') -opts.add_argumented( ['-F', '++file', '++pony'], arg = 'PONY', help = 'Select a non-MLP:FiM pony.') -opts.add_argumented( ['-q', '--quote'], arg = 'PONY', help = 'Select a pony which will quote herself.') -opts.add_variadic( ['--f', '--files', '--ponies'], arg = 'PONY') -opts.add_variadic( ['--F', '++files', '++ponies'], arg = 'PONY') -opts.add_variadic( ['--q', '--quotes'], arg = 'PONY') - -''' -Whether at least one unrecognised option was used -''' -unrecognised = not opts.parse() - - - -''' -Start the program from ponysay.__init__ if this is the executed file -''' -if __name__ == '__main__': - Ponysay(opts) +import os, sys, random +from os.path import dirname, realpath, exists +import argparse, textwrap +try: + import re2 as re +except: + import re + +balloonstyles={'cowsay': ('<\\|/ _ >\\|/ - \\/', '(((( _ )))) - \\/')} + +ponypath = realpath(dirname(__file__)+'/../share/ponies') +if not exists(ponypath): + ponypath=realpath(dirname(__file__)+'/ponies') +termwidth = 80 +try: + termwidth = os.get_terminal_size()[0] +except: + pass + +def list_ponies(markQuotes=False): + quotes = lambda n: ' (q)' if markQuotes and exists(ponypath+'/'+n+'.quotes') else '' + return [ f[:-5]+quotes(f[:-5]) for f in os.listdir(ponypath) if not f.endswith('quotes') ] + +def list_ponies_with_quotes(markQuotes=False): + return [ f[:-7] for f in os.listdir(ponypath) if f.endswith('quotes') ] + +def load_pony(name): + return open(ponypath+'/'+name+'.pony').readlines() + +def random_quote(name): + quotepath=ponypath+'/'+name+'.quotes' + if exists(quotepath): + return random.choice(open(quotepath).read().split('\n\n')) + else: + return None + +def render_balloon(text, balloonstyle, minwidth=0, maxwidth=40, pad=str.center): + if text is None: + return [] + [ls, lb, lm, lt, tl, t, tr, rs, rt, rm, rb, br, b, bl, _, _] = balloonstyle + lines = [ wrapline for textline in text.split('\n') for wrapline in textwrap.wrap(textline, maxwidth) ] + width = max([ len(line) for line in lines ]+[minwidth]) + lines = [ pad(line, width) for line in lines ] + sides = [(lt, rt)] + [(lm, rm)]*(len(lines)-2) + [(lb, rb)] if len(lines) > 1 else [(ls, rs)] + return [tl+t*(width+2)+tr+'\n']+\ + [sides[i][0]+' '+line+' '+sides[i][1]+'\n' for i,line in enumerate(lines)]+\ + [bl+b*(width+2)+br+'\n'] + +def render_pony(name, text=None, balloonstyle=balloonstyles['cowsay'][0], width=80, center=False, centertext=False): + pony = load_pony(name) #CAUTION: these lines already end with '\n' + balloon = link_l = link_r = '' + if text: + [link_l, link_r] = balloonstyle[-2:] + for i,line in enumerate(pony): + match = re.search('\$balloon([0-9]*)\$', line) + if match: + minwidth = int(match.group(1) or '0') + pony[i:i+1] = render_balloon(text, balloonstyle, minwidth=minwidth, maxwidth=int(width/2), pad=str.center if centertext else str.ljust) + break + #FIXME I have no idea what these three-dollar-sign-pairs thingys are for. Can they occur more than once per pony? + try: + first = pony.index('$$$\n') + second = pony[first+1:].index('$$$\n') + pony[first:] = pony[first+1+second+1:] + except: + pass + pony = [ line.replace('$\\$', link_l).replace('$/$', link_r) for line in pony ] + indent = '' + if center: + ponywidth = max([ len(re.sub(r'\x1B\[[0-9;]+m|\$.*\$', '', line)) for line in pony ]) + indent = ' '*int((width-ponywidth)/2) + wre = re.compile('((\x1B\[[0-9;]+m)?.){0,%s}' % width) + return ''.join([ indent+wre.search(line).group()+'\n' for line in pony ]) + +parser = argparse.ArgumentParser(description='Cowsay with ponies') +parser.add_argument('-p', '--pony', type=str, default='random', help='The name of the pony to be used. Use "-p list" to list all ponies, "-p random" (default) to use a random pony.') +parser.add_argument('-q', '--quote', action='store_true', help='Use a random quote of the pony being displayed as text') +parser.add_argument('-c', '--center', action='store_true', help='Use a random quote of the pony being displayed as text') +parser.add_argument('-t', '--center-text', action='store_true', help='Center the text in the bubble') +parser.add_argument('-w', '--width', type=int, default=termwidth, help='Terminal width. Use 0 for unlimited width. Default: autodetect') +parser.add_argument('text', type=str, nargs='*', help='The text to be placed in the speech bubble') +args = parser.parse_args() + +if args.pony == "list": + print('\n'.join(sorted(list_ponies(True)))) + sys.exit() +pony = args.pony +if pony == "random": + pony = random.choice(list_ponies() if not args.quote else list_ponies_with_quotes()) +text = ' '.join(args.text) or None +if text == '-': + text = '\n'.join(sys.stdin.readlines()) +if args.quote: + text = random_quote(pony) + +print(render_pony(pony, text, width=args.width or sys.maxint, center=args.center, centertext=args.center_text))