diff --git a/ponysay/__init__.krk b/ponysay/__init__.krk index 9fafffa1..e69de29b 100644 --- a/ponysay/__init__.krk +++ b/ponysay/__init__.krk @@ -1,159 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -''' -ponysay - Ponysay, cowsay reimplementation for ponies - -Copyright (C) 2012-2016 Erkin Batu Altunbaş et al. - - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - - -If you intend to redistribute ponysay or a fork of it commercially, -it contains aggregated images, some of which may not be commercially -redistribute, you would be required to remove those. To determine -whether or not you may commercially redistribute an image make use -that line ‘FREE: yes’, is included inside the image between two ‘$$$’ -lines and the ‘FREE’ is and upper case and directly followed by -the colon. - - -Authors: - - 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 -''' -from ponysay.common import printerr, printinfo, gettermsize, endswith -from ponysay.argparser import ArgParser -from ponysay.ponysay import Ponysay -import os -import kuroko -import random - - -''' -Start the program -''' -if __name__ == '__main__': - import gc - gc.pause() - random.seed() - let istool = kuroko.argv[0] - if os.sep in istool: - istool = istool[istool.rfind(os.sep) + 1:] - if os.extsep in istool: - istool = istool[:istool.find(os.extsep)] - istool = istool.endswith('-tool') - if istool: - import ponysaytool - os.exit(0) - - let isthink = kuroko.argv[0] - if os.sep in isthink: - isthink = isthink[isthink.rfind(os.sep) + 1:] - if os.extsep in isthink: - isthink = isthink[:isthink.find(os.extsep)] - isthink = isthink.endswith('think') - - let usage_saythink = '\033[34;1m(ponysay | ponythink)\033[22;39m' - let usage_common = '[-c] [-W\033[33mCOLUMN\033[39m] [-b\033[33mSTYLE\033[39m]' - let usage_listhelp = '(-l | -L | -B | +l | +L | -A | + A | -v | -h)' - let usage_file = '[-f\033[33mPONY\033[39m]* [[--] \033[33mmessage\033[39m]' - let usage_xfile = '(+f\033[33mPONY\033[39m)* [[--] \033[33mmessage\033[39m]' - let usage_afile = '(-F\033[33mPONY\033[39m)* [[--] \033[33mmessage\033[39m]' - let usage_quote = '(-q\033[33mPONY\033[39m)*' - - let usage = ('{} {}' + 4 * '\n{} {} {}') .format (usage_saythink, usage_listhelp, - usage_saythink, usage_common, usage_file, - usage_saythink, usage_common, usage_xfile, - usage_saythink, usage_common, usage_afile, - usage_saythink, usage_common, usage_quote) - - usage = usage.replace('\033[', 'あ') - for sym in ('[', ']', '(', ')', '|', '...', '*'): - usage = usage.replace(sym, '\033[2m' + sym + '\033[22m') - usage = usage.replace('あ', '\033[') - - ''' - Argument parsing - ''' - let 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(['--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_argumentless(['-i', '--info']) - opts.add_argumentless(['+i', '++info']) - opts.add_argumented( ['-r', '--restrict'], arg = 'RESTRICTION') - - 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') - - let _F = ['--any-file', '--anyfile', '--any-pony', '--anypony'] - let __F = [_.replace("pony", "ponie") + 's' for _ in _F] - opts.add_argumentless(['-h', '--help'], help = 'Print this help message.') - opts.add_argumentless(['+h', '++help', '--help-colour'], help = 'Print this help message with colours even if piped.') - 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', '--compress', '--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( ['-F'] + _F, arg = 'PONY', help = 'Select a pony, that can be 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( ['--F'] + __F, arg = 'PONY') - opts.add_variadic( ['--q', '--quotes'], arg = 'PONY') - - ''' - Whether at least one unrecognised option was used - ''' - let unrecognised = not opts.parse() - - - ## Start - let ponysay = Ponysay() - ponysay.unrecognised = unrecognised - ponysay.run(opts) diff --git a/ponysay/__main__.krk b/ponysay/__main__.krk new file mode 100644 index 00000000..a11b8535 --- /dev/null +++ b/ponysay/__main__.krk @@ -0,0 +1,159 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +''' +ponysay - Ponysay, cowsay reimplementation for ponies + +Copyright (C) 2012-2016 Erkin Batu Altunbaş et al. + + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + +If you intend to redistribute ponysay or a fork of it commercially, +it contains aggregated images, some of which may not be commercially +redistribute, you would be required to remove those. To determine +whether or not you may commercially redistribute an image make use +that line ‘FREE: yes’, is included inside the image between two ‘$$$’ +lines and the ‘FREE’ is and upper case and directly followed by +the colon. + + +Authors: + + 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 +''' +from .common import printerr, printinfo, gettermsize, endswith +from .argparser import ArgParser +from .ponysay import Ponysay +import os +import kuroko +import random + + +''' +Start the program +''' +if __name__ == '__main__': + import gc + gc.pause() + random.seed() + let istool = kuroko.argv[0] + if os.sep in istool: + istool = istool[istool.rfind(os.sep) + 1:] + if os.extsep in istool: + istool = istool[:istool.find(os.extsep)] + istool = istool.endswith('-tool') + if istool: + import ponysaytool + os.exit(0) + + let isthink = kuroko.argv[0] + if os.sep in isthink: + isthink = isthink[isthink.rfind(os.sep) + 1:] + if os.extsep in isthink: + isthink = isthink[:isthink.find(os.extsep)] + isthink = isthink.endswith('think') + + let usage_saythink = '\033[34;1m(ponysay | ponythink)\033[22;39m' + let usage_common = '[-c] [-W\033[33mCOLUMN\033[39m] [-b\033[33mSTYLE\033[39m]' + let usage_listhelp = '(-l | -L | -B | +l | +L | -A | + A | -v | -h)' + let usage_file = '[-f\033[33mPONY\033[39m]* [[--] \033[33mmessage\033[39m]' + let usage_xfile = '(+f\033[33mPONY\033[39m)* [[--] \033[33mmessage\033[39m]' + let usage_afile = '(-F\033[33mPONY\033[39m)* [[--] \033[33mmessage\033[39m]' + let usage_quote = '(-q\033[33mPONY\033[39m)*' + + let usage = ('{} {}' + 4 * '\n{} {} {}') .format (usage_saythink, usage_listhelp, + usage_saythink, usage_common, usage_file, + usage_saythink, usage_common, usage_xfile, + usage_saythink, usage_common, usage_afile, + usage_saythink, usage_common, usage_quote) + + usage = usage.replace('\033[', 'あ') + for sym in ('[', ']', '(', ')', '|', '...', '*'): + usage = usage.replace(sym, '\033[2m' + sym + '\033[22m') + usage = usage.replace('あ', '\033[') + + ''' + Argument parsing + ''' + let 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(['--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_argumentless(['-i', '--info']) + opts.add_argumentless(['+i', '++info']) + opts.add_argumented( ['-r', '--restrict'], arg = 'RESTRICTION') + + 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') + + let _F = ['--any-file', '--anyfile', '--any-pony', '--anypony'] + let __F = [_.replace("pony", "ponie") + 's' for _ in _F] + opts.add_argumentless(['-h', '--help'], help = 'Print this help message.') + opts.add_argumentless(['+h', '++help', '--help-colour'], help = 'Print this help message with colours even if piped.') + 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', '--compress', '--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( ['-F'] + _F, arg = 'PONY', help = 'Select a pony, that can be 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( ['--F'] + __F, arg = 'PONY') + opts.add_variadic( ['--q', '--quotes'], arg = 'PONY') + + ''' + Whether at least one unrecognised option was used + ''' + let unrecognised = not opts.parse() + + + ## Start + let ponysay = Ponysay() + ponysay.unrecognised = unrecognised + ponysay.run(opts) diff --git a/ponysay/argparser.krk b/ponysay/argparser.krk index d0dd8eb8..2cdd31d7 100644 --- a/ponysay/argparser.krk +++ b/ponysay/argparser.krk @@ -29,7 +29,7 @@ that line ‘FREE: yes’, is included inside the image between two ‘$$$’ lines and the ‘FREE’ is and upper case and directly followed by the colon. ''' -from ponysay.common import printerr, printinfo, gettermsize, endswith +from .common import printerr, printinfo, gettermsize, endswith import os import kuroko import fileio diff --git a/ponysay/backend.krk b/ponysay/backend.krk index 2148b7dd..8483c9fb 100644 --- a/ponysay/backend.krk +++ b/ponysay/backend.krk @@ -29,10 +29,10 @@ that line ‘FREE: yes’, is included inside the image between two ‘$$$’ lines and the ‘FREE’ is and upper case and directly followed by the colon. ''' -from ponysay.common import printerr, printinfo, gettermsize, endswith -from ponysay.balloon import Balloon -from ponysay.colourstack import ColourStack -from ponysay.ucs import UCS +from .common import printerr, printinfo, gettermsize, endswith +from .balloon import Balloon +from .colourstack import ColourStack +from .ucs import UCS from wcwidth import wcwidth import fileio diff --git a/ponysay/balloon.krk b/ponysay/balloon.krk index 16e7d34f..6c949c31 100644 --- a/ponysay/balloon.krk +++ b/ponysay/balloon.krk @@ -29,8 +29,8 @@ that line ‘FREE: yes’, is included inside the image between two ‘$$$’ lines and the ‘FREE’ is and upper case and directly followed by the colon. ''' -from ponysay.common import printerr, printinfo, gettermsize, endswith -from ponysay.ucs import UCS +from .common import printerr, printinfo, gettermsize, endswith +from .ucs import UCS import fileio diff --git a/ponysay/colourstack.krk b/ponysay/colourstack.krk index aae8b7f8..50527ef2 100644 --- a/ponysay/colourstack.krk +++ b/ponysay/colourstack.krk @@ -29,7 +29,7 @@ that line ‘FREE: yes’, is included inside the image between two ‘$$$’ lines and the ‘FREE’ is and upper case and directly followed by the colon. ''' -from ponysay.common import printerr, printinfo, gettermsize, endswith +from .common import printerr, printinfo, gettermsize, endswith diff --git a/ponysay/lists.krk b/ponysay/lists.krk index 055bd0e1..eeacd536 100644 --- a/ponysay/lists.krk +++ b/ponysay/lists.krk @@ -34,8 +34,8 @@ File listing functions. ''' -from ponysay.common import endswith, gettermsize -from ponysay.ucs import UCS +from .common import endswith, gettermsize +from .ucs import UCS import os def _range(min,max,step): diff --git a/ponysay/metadata.krk b/ponysay/metadata.krk index e59906d5..434f4bf3 100644 --- a/ponysay/metadata.krk +++ b/ponysay/metadata.krk @@ -29,7 +29,7 @@ that line ‘FREE: yes’, is included inside the image between two ‘$$$’ lines and the ‘FREE’ is and upper case and directly followed by the colon. ''' -from ponysay.common import printerr, printinfo, gettermsize, endswith +from .common import printerr, printinfo, gettermsize, endswith import os import fileio diff --git a/ponysay/ponysay.krk b/ponysay/ponysay.krk index e6ba3974..fea43e36 100755 --- a/ponysay/ponysay.krk +++ b/ponysay/ponysay.krk @@ -29,13 +29,13 @@ that line ‘FREE: yes’, is included inside the image between two ‘$$$’ lines and the ‘FREE’ is and upper case and directly followed by the colon. ''' -from ponysay.common import printerr, printinfo, gettermsize, endswith -from ponysay.backend import Backend -from ponysay.balloon import Balloon -from ponysay.spellocorrecter import SpelloCorrecter -from ponysay.ucs import UCS -import ponysay.lists as lists -from ponysay.metadata import Metadata +from .common import printerr, printinfo, gettermsize, endswith +from .backend import Backend +from .balloon import Balloon +from .spellocorrecter import SpelloCorrecter +from .ucs import UCS +from .metadata import Metadata +from . import lists import os import kuroko diff --git a/ponysay/ponysaytool.krk b/ponysay/ponysaytool.krk index 79496466..20cb4488 100755 --- a/ponysay/ponysaytool.krk +++ b/ponysay/ponysaytool.krk @@ -34,9 +34,9 @@ import os import kuroko import fileio -from ponysay.argparser import ArgParser -from ponysay.ponysay import Ponysay -from ponysay.metadata import Metadata +from .argparser import ArgParser +from .ponysay import Ponysay +from .metadata import Metadata diff --git a/ponysay/spellocorrecter.krk b/ponysay/spellocorrecter.krk index d29e1817..9491998e 100644 --- a/ponysay/spellocorrecter.krk +++ b/ponysay/spellocorrecter.krk @@ -29,7 +29,7 @@ that line ‘FREE: yes’, is included inside the image between two ‘$$$’ lines and the ‘FREE’ is and upper case and directly followed by the colon. ''' -from ponysay.common import printerr, printinfo, gettermsize, endswith +from .common import printerr, printinfo, gettermsize, endswith import os class SpelloCorrecter(): # Naïvely and quickly ported and adapted from optimised Java, may not be the nicest, or even fast, Python code diff --git a/ponysay/ucs.krk b/ponysay/ucs.krk index 44aa3f54..f42d82b1 100644 --- a/ponysay/ucs.krk +++ b/ponysay/ucs.krk @@ -29,7 +29,7 @@ that line ‘FREE: yes’, is included inside the image between two ‘$$$’ lines and the ‘FREE’ is and upper case and directly followed by the colon. ''' -from ponysay.common import printerr, printinfo, gettermsize, endswith +from .common import printerr, printinfo, gettermsize, endswith