Initial upload
This commit is contained in:
commit
52c8af3722
Binary file not shown.
After Width: | Height: | Size: 337 KiB |
|
@ -0,0 +1,80 @@
|
||||||
|
# Felix Albrigtsen 2021
|
||||||
|
|
||||||
|
|
||||||
|
#Consider putting the \u001b[ outside, only store changing parts
|
||||||
|
escSeq = {
|
||||||
|
# Modifiers:
|
||||||
|
"B": "\u001b[1m", #Bold
|
||||||
|
"U": "\u001b[4m", #Underline
|
||||||
|
"I": "\u001b[7m", #Inverted
|
||||||
|
"rs": "\u001b[0m", #Reset
|
||||||
|
# FG-Colors:
|
||||||
|
"bl": "\u001b[30m", #Black text
|
||||||
|
"r": "\u001b[31m", #Red text
|
||||||
|
"g": "\u001b[32m", #Green text
|
||||||
|
"y": "\u001b[33m", #Yellow text
|
||||||
|
"b": "\u001b[34m", #Blue text
|
||||||
|
"m": "\u001b[35m", #Magenta text
|
||||||
|
"c": "\u001b[36m", #Cyan text
|
||||||
|
"w": "\u001b[37m", #White text
|
||||||
|
# BG-Colors
|
||||||
|
"bbl": "\u001b[40m", #Black background
|
||||||
|
"br": "\u001b[41m", #Red background
|
||||||
|
"bg": "\u001b[42m", #Green background
|
||||||
|
"by": "\u001b[43m", #Yellow background
|
||||||
|
"bb": "\u001b[44m", #Blue background
|
||||||
|
"bm": "\u001b[45m", #Magenta background
|
||||||
|
"bc": "\u001b[46m", #Cyan background
|
||||||
|
"bw": "\u001b[47m" #White background
|
||||||
|
}
|
||||||
|
macros = {
|
||||||
|
"warning": ["y", "B"],
|
||||||
|
"error": ["r", "B", "U"]
|
||||||
|
}
|
||||||
|
|
||||||
|
#Translate prettyprint codes to ANSI codes
|
||||||
|
def getSequence(codeStr):
|
||||||
|
codes = codeStr.split(",") #Split lists of several codes
|
||||||
|
|
||||||
|
for code in codes: #Substitute macro shortcuts into the list
|
||||||
|
if code in macros:
|
||||||
|
codes.remove(code)
|
||||||
|
codes += macros[code]
|
||||||
|
|
||||||
|
outSeq = ""
|
||||||
|
for code in codes:
|
||||||
|
if code in escSeq:
|
||||||
|
outSeq += escSeq[code] #Simple dictionary lookup, insert the ANSI code corresponding to our symbol
|
||||||
|
else:
|
||||||
|
print(code)
|
||||||
|
raise ValueError("Invalid prettyprint code") #Raise exception on invalid codes.
|
||||||
|
|
||||||
|
return outSeq
|
||||||
|
|
||||||
|
|
||||||
|
def getString(inStr):
|
||||||
|
pos = 0
|
||||||
|
out = "" # String that stores the result after "translation"
|
||||||
|
|
||||||
|
while pos < len(inStr):
|
||||||
|
if (inStr[pos] == "%") and (pos>0 or inStr[pos-1] != "\\"): # Found a non-escaped %
|
||||||
|
code = ""
|
||||||
|
pos += 1
|
||||||
|
while inStr[pos] != "%": # Scan until the closing %
|
||||||
|
code += inStr[pos]
|
||||||
|
pos += 1
|
||||||
|
pos += 1
|
||||||
|
out += getSequence(code) # Look up the escape character and insert it
|
||||||
|
if pos < len(inStr):
|
||||||
|
out += inStr[pos] # Normal(non-%) characters, send to output
|
||||||
|
pos += 1
|
||||||
|
return out
|
||||||
|
|
||||||
|
def cprint(inStr):
|
||||||
|
print(getString(inStr) + getSequence("rs"))
|
||||||
|
|
||||||
|
# EXAMPLES / TESTS
|
||||||
|
# cprint("%bc,r%This is pretty high visibility %y%with different colors")
|
||||||
|
# cprint("%bw,b%This text is blue on white, %B,U,I% this is bold, underlined and white on blue")
|
||||||
|
# cprint("%warning%This is a warning!")
|
||||||
|
# cprint("%error%And this is an error")
|
|
@ -0,0 +1,23 @@
|
||||||
|
cprint / colorPrint is a simple prettyprint function for python using ANSI escape characters.
|
||||||
|
Call cprint(str), inserting the cprint codes surrounded by percent signs(Ex. below).
|
||||||
|
Using getString(str) directly returns a string instead of printing to stdout.
|
||||||
|
|
||||||
|
Several color tags and modifiers can be used in the same tag if they are separated by a comma
|
||||||
|
Colors
|
||||||
|
Text colors are denoted with the first lower case letter
|
||||||
|
-> (r)ed (g)reen (b)lue (c)yan (m)agenta (y)ellow (bl)ack (w)hite
|
||||||
|
Background colors are the same, but with a leading "b"
|
||||||
|
|
||||||
|
Modifiers
|
||||||
|
(B)old (U)nderlined (I)nverted/reversed (RS)=reset/default
|
||||||
|
|
||||||
|
Macros/Shortcuts
|
||||||
|
(warning) = Yellow, Bold
|
||||||
|
(error) = Red , Bold, Underlined
|
||||||
|
|
||||||
|
Example code:
|
||||||
|
'''
|
||||||
|
from cprint import *
|
||||||
|
cprint("%bw,b%This text is blue on white, %B,U,I% this is bold, underlined and white on blue")
|
||||||
|
'''
|
||||||
|
Prints the following
|
Loading…
Reference in New Issue