From 2bb8a00af99e83f5607983fd648c2a6fc1ad6fdc Mon Sep 17 00:00:00 2001 From: pux Date: Tue, 31 Mar 2020 12:52:29 +0200 Subject: add setuptools --- .gitignore | 3 ++ LICENSE | 29 ++++++++++++++++++ README.md | 7 +++++ __init__.py | 4 --- pyfarbpracht.py | 73 -------------------------------------------- pyfarbpracht/__init__.py | 4 +++ pyfarbpracht/pyfarbpracht.py | 73 ++++++++++++++++++++++++++++++++++++++++++++ pyfarbpracht/test.py | 22 +++++++++++++ setup.py | 23 ++++++++++++++ test.py | 24 --------------- 10 files changed, 161 insertions(+), 101 deletions(-) create mode 100755 LICENSE create mode 100644 README.md delete mode 100755 __init__.py delete mode 100755 pyfarbpracht.py create mode 100755 pyfarbpracht/__init__.py create mode 100755 pyfarbpracht/pyfarbpracht.py create mode 100755 pyfarbpracht/test.py create mode 100644 setup.py delete mode 100755 test.py diff --git a/.gitignore b/.gitignore index 58af8a2..80be5b5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ __pycache__ *.py[cod] +build/ +dist/ +pyfarbpracht.egg-info diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000..7caae61 --- /dev/null +++ b/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2020, Oliver Meckmann +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..a2174b9 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# pyfarbpracht + +## ANSI and BBCode support for CLI + +### LICENSE + +see [LICENSE](LICENSE) diff --git a/__init__.py b/__init__.py deleted file mode 100755 index f5afe4c..0000000 --- a/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -__pkg__name = 'pyfarbpracht' -__version_ = 1 - -import pyfarbpracht diff --git a/pyfarbpracht.py b/pyfarbpracht.py deleted file mode 100755 index 62ef308..0000000 --- a/pyfarbpracht.py +++ /dev/null @@ -1,73 +0,0 @@ -from os import linesep - -# we can also do print(colored('green', msg), end='') for example... -# printc helps if You have a global color_enabled flag in Your program -def printc(color, msg, no_newline=False, enable_color=False): - """like print but with color support (if enabled!)""" - ret = str() - if enable_color: - ret += colored(color, msg) - else: - ret += msg - if no_newline: - end = '' - else: - end = linesep - print(ret, end=end) - return ret - -def colored(color, msg): - """returns msg in ANSI color""" - ret = str() - c = 'default' - if color == 'red': - c = '31' - elif color == 'green': - c = '32' - elif color == 'yellow': - c = '33' - elif color == 'blue': - c = '34' - elif color == 'magenta': - c = '35' - elif color == 'cyan': - c = '36' - if c is not 'default': - # set color - ret += '\033[0;' + c + 'm' - ret += msg - # reset color - ret += '\033[0m' - return ret - -# When data contains ANSI color escape codes convert them to BBcode format -# e.g.: Foo bar baz [\033[0;31m + text + [\033[0m -# where 31 can be 31..36 31=red, 32=green, -# 33=yellow, 34=blue, 35=magenta, 36-cyan -# 0 resets back to standard -# we can map those three parts to [color=#abcdef] + text + [/color] -def convert_ansi_to_bbcode_colors(instr): - """convert ansi escape sequences in a string to bbcode tags""" - ansi_red = '\033[0;31m' - ansi_green = '\033[0;32m' - ansi_yellow = '\033[0;33m' - ansi_blue = '\033[0;34m' - ansi_magenta = '\033[0;35m' - ansi_cyan = '\033[0;36m' - ansi_end = '\033[0m' - - bb_red = '[color=#FF0000]' - bb_green = '[color=#00FF00]' - bb_yellow = '[color=#FFFF00]' - bb_blue = '[color=#0000FF]' - bb_magenta = '[color=#FF00FF]' - bb_cyan = '[color=#00FFFF]' - bb_end = '[/color]' - - return instr.replace(ansi_red, bb_red) \ - .replace(ansi_green, bb_green) \ - .replace(ansi_yellow, bb_yellow) \ - .replace(ansi_blue, bb_blue) \ - .replace(ansi_magenta, bb_magenta) \ - .replace(ansi_cyan, bb_cyan) \ - .replace(ansi_end, bb_end) diff --git a/pyfarbpracht/__init__.py b/pyfarbpracht/__init__.py new file mode 100755 index 0000000..dc03860 --- /dev/null +++ b/pyfarbpracht/__init__.py @@ -0,0 +1,4 @@ +__pkg__name = 'pyfarbpracht' +__version_ = '0.1' + +from .pyfarbpracht import * diff --git a/pyfarbpracht/pyfarbpracht.py b/pyfarbpracht/pyfarbpracht.py new file mode 100755 index 0000000..62ef308 --- /dev/null +++ b/pyfarbpracht/pyfarbpracht.py @@ -0,0 +1,73 @@ +from os import linesep + +# we can also do print(colored('green', msg), end='') for example... +# printc helps if You have a global color_enabled flag in Your program +def printc(color, msg, no_newline=False, enable_color=False): + """like print but with color support (if enabled!)""" + ret = str() + if enable_color: + ret += colored(color, msg) + else: + ret += msg + if no_newline: + end = '' + else: + end = linesep + print(ret, end=end) + return ret + +def colored(color, msg): + """returns msg in ANSI color""" + ret = str() + c = 'default' + if color == 'red': + c = '31' + elif color == 'green': + c = '32' + elif color == 'yellow': + c = '33' + elif color == 'blue': + c = '34' + elif color == 'magenta': + c = '35' + elif color == 'cyan': + c = '36' + if c is not 'default': + # set color + ret += '\033[0;' + c + 'm' + ret += msg + # reset color + ret += '\033[0m' + return ret + +# When data contains ANSI color escape codes convert them to BBcode format +# e.g.: Foo bar baz [\033[0;31m + text + [\033[0m +# where 31 can be 31..36 31=red, 32=green, +# 33=yellow, 34=blue, 35=magenta, 36-cyan +# 0 resets back to standard +# we can map those three parts to [color=#abcdef] + text + [/color] +def convert_ansi_to_bbcode_colors(instr): + """convert ansi escape sequences in a string to bbcode tags""" + ansi_red = '\033[0;31m' + ansi_green = '\033[0;32m' + ansi_yellow = '\033[0;33m' + ansi_blue = '\033[0;34m' + ansi_magenta = '\033[0;35m' + ansi_cyan = '\033[0;36m' + ansi_end = '\033[0m' + + bb_red = '[color=#FF0000]' + bb_green = '[color=#00FF00]' + bb_yellow = '[color=#FFFF00]' + bb_blue = '[color=#0000FF]' + bb_magenta = '[color=#FF00FF]' + bb_cyan = '[color=#00FFFF]' + bb_end = '[/color]' + + return instr.replace(ansi_red, bb_red) \ + .replace(ansi_green, bb_green) \ + .replace(ansi_yellow, bb_yellow) \ + .replace(ansi_blue, bb_blue) \ + .replace(ansi_magenta, bb_magenta) \ + .replace(ansi_cyan, bb_cyan) \ + .replace(ansi_end, bb_end) diff --git a/pyfarbpracht/test.py b/pyfarbpracht/test.py new file mode 100755 index 0000000..ac74add --- /dev/null +++ b/pyfarbpracht/test.py @@ -0,0 +1,22 @@ +#!/bin/env python + +import pyfarbpracht + +def test(): + ret = pyfarbpracht.printc('green', 'green test with newline', enable_color=True) + print(ret) + ret = pyfarbpracht.printc('cyan', 'cyan but enable_color=False', enable_color=False) + print(ret) + ret = pyfarbpracht.printc('magenta', 'magenta no newline', enable_color=True, no_newline=True) + print(ret) + print(ret) + + print('') + print('') + + print(pyfarbpracht.colored('green', 'print(colored(... test in green')) + print(pyfarbpracht.colored( \ + 'green', 'print(colored(... test in green no newline'), end='') + +if __name__ == '__main__': + test() diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..33fc587 --- /dev/null +++ b/setup.py @@ -0,0 +1,23 @@ +import os +from setuptools import setup + +def read(fname): + return open(os.path.join(os.path.dirname(__file__), fname)).read() + +setup( + name = 'pyfarbpracht', + version = '0.1', + author = 'Oliver Meckmann', + author_email = 'omeckman@omeckman.net', + description = ('ANSI and BBCode color support'), + license = 'BSD 3-Clause', + keywords = 'ansi bbcode cli', + url = """https://git.omeckman.net/pyfarbpracht.git/""", + packages=['pyfarbpracht'], + long_description=read('README.md'), + classifiers=[ + "Development Status :: 3 - Alpha", + "Topic :: Utilities", + "License :: BSD 3-Clause License", + ], +) diff --git a/test.py b/test.py deleted file mode 100755 index 380a5bb..0000000 --- a/test.py +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/env python - -import pyfarbpracht - -def test(): - ret = pyfarbpracht.printc('green', 'green test with newline', enable_color=True) - print(ret) - ret = pyfarbpracht.printc('cyan', 'cyan but enable_color=False', enable_color=False) - print(ret) - ret = pyfarbpracht.printc('magenta', 'magenta no newline', enable_color=True, no_newline=True) - print(ret) - print(ret) - - print('') - print('') - - print(pyfarbpracht.colored('green', 'print(colored(... test in green')) - print(pyfarbpracht.colored( \ - 'green', 'print(colored(... test in green no newline'), end='') - - - -if __name__ == '__main__': - test() -- cgit v1.2.2-1-g5e49