

هذا المشروع لتطوير حزمة Python Pypi التي لا تتعامل فقط مع إخراج نص اللون ولكن يمكن أيضًا تطبيق تأثيرات الألوان مثل التدرجات على النص الخاص بك.
تستخدم هذه الحزمة تسلسل ANSI Escape Sequence Select Rensions لتطبيق اللون والأناقة على النصوص والخلفيات. كيف تختلف هذه الحزمة عن الآخرين؟
تقدم المحطات المختلفة الألوان بشكل مختلف ، حتى أن بعض المحطات لا تجعل تسلسل ANSI للهروب على الإطلاق ، مما يؤدي إلى فوضى نصية كبيرة. إن اللعب مع رموز الهروب من Ansi هو فقط ، إنه يلعب.
بعض الألوان الأساسية المستخدمة بشكل ضئيل لتسليط الضوء على مستويات قطع الأشجار المختلفة أمر جيد ولكن لا يمكنك التخلص من الألوان في المشاريع الخطيرة.
أولاً ، هناك رموز 4 بت و 8 بت المتاحة ، استيراد من colour_fx.four_bit و colour_fx.eight_bit على التوالي. ومع ذلك ، يمكن استخدام كلا من رموز 8 بت و 4 بت معًا دون مشكلة.
توفر الكائنات في هذه الوحدات فقط القيمة المراد استخدامها داخل تسلسل ANSI Escape. ستحتاج إلى تجميعها في تسلسل Escape ANSI باستخدام compile_ansi_code الذي يمكن استيراده from colour_fx import compile_ansi_code .
from colour_fx import compile_ansi_code
from colour_fx . four_bit import Colour , Style
blinking_red_on_yellow = compile_ansi_code (
# add as many ANSI values as you like and receive a single ANSI
# escape sequence to handle all effects
Colour . RED ,
Colour . YELLOW . bright_background ,
Style . BLINK
)
# an empty call to compile_ansi_code() gives the reset ANSI escape
# sequence which resets the way text is rendered
RESET = compile_ansi_code ()
print ( F"HELLO, { blinking_red_on_yellow } WORLD { RESET } !" )
8 بت ألوان لا يمكن التنبؤ بها في المظهر بين المحطات المختلفة عن 4 بتات.
SimpleColour from colour_fx import compile_ansi_code
from colour_fx . eight_bit import SimpleColour
red_on_yellow = compile_ansi_code (
# add as many ANSI values as you like and receive a single ANSI
# escape sequence to handle all effects
SimpleColour . RED ,
SimpleColour . YELLOW . bright_background ,
)
# an empty call to compile_ansi_code() gives the reset ANSI escape
# sequence which resets the way text is rendered
RESET = compile_ansi_code ()
print ( F"HELLO, { red_on_yellow } WORLD { RESET } !" )
Grey from colour_fx import compile_ansi_code
from colour_fx . eight_bit import Grey
# Grey has 24 different shades available, here we use 12 to apply a
# gradient to the text "HELLO, WORLD!"
grey_array = [
Grey . AA ,
Grey . AC ,
Grey . AE ,
Grey . BB ,
Grey . BD ,
Grey . BF ,
Grey . CA ,
Grey . CC ,
Grey . CE ,
Grey . DB ,
Grey . DD ,
Grey . DF ,
]
# converting shades in grey_array to background colours and
# reversing order
grey_back = [ grey . background for grey in reversed ( grey_array )]
# Compiling the values in grey_array and grey_back into codes
g = [
compile_ansi_code (
grey_array [ idx ],
grey_back [ idx ],
)
for idx in range ( len ( grey_array ))
]
# an empty call to compile_ansi_code() gives the reset ANSI escape
# sequence which resets the way text is rendered
RESET = compile_ansi_code ()
# Accessing the individual ANSI escape codes in the list of codes to
# create a gradient
print (
F" { g [ 0 ] } H { g [ 1 ] } E { g [ 2 ] } L { g [ 3 ] } L { g [ 4 ] } O { g [ 5 ] } ,"
F" { g [ 6 ] } W { g [ 7 ] } O { g [ 8 ] } R { g [ 9 ] } L { g [ 10 ] } D { g [ 11 ] } ! { RESET } "
)
RGB from colour_fx import compile_ansi_code
from colour_fx . eight_bit import RGB
# RGB is different to the rest in that you need to pass values in and
# initialise the object rather than treating as an Enum
# RGB values should be an integer between 0 and 5 inclusive
spectrum = [
RGB ( 5 , 0 , 0 ). foreground ,
RGB ( 3 , 2 , 0 ). foreground ,
RGB ( 1 , 4 , 0 ). foreground ,
RGB ( 0 , 4 , 1 ). foreground ,
RGB ( 0 , 2 , 3 ). foreground ,
RGB ( 0 , 0 , 5 ). foreground ,
]
# compiling spectrum into ANSI escape sequences while adding a
# white background
s = [
compile_ansi_code ( spec , RGB ( 5 , 5 , 5 ). background )
for spec in spectrum
]
# an empty call to compile_ansi_code() gives the reset ANSI escape
# sequence which resets the way text is rendered
RESET = compile_ansi_code ()
# Accessing individual elements of s allows a gradient
print ( F" { s [ 0 ] } HE { s [ 1 ] } LL { s [ 2 ] } O, { s [ 3 ] } WO { s [ 4 ] } RL { s [ 5 ] } D! { RESET } " )
الآن هذا هو ما ألهم إنشاء هذه الحزمة ، والقدرة على تطبيق التدرجات على كتل نصية كبيرة.
from colour_fx . four_bit import Colour
from colour_fx . effects . gradients import create_vertical_gradient_field
from colour_fx . effects import apply_ansi_field
rainbow_vals = [
[ Colour . RED ],
[ Colour . RED . bright ],
[ Colour . YELLOW . bright ],
[ Colour . GREEN ],
[ Colour . BLUE ],
[ Colour . BLUE . bright ],
[ Colour . MAGENTA ],
]
text_to_render = (
" ::: ::: :::::::::: ::: ::: :::::::: ::: n "
" :+: :+: :+: :+: :+: :+: :+: :+: n "
" +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ n "
" +#++:++#++ +#++:++# +#+ +#+ +#+ +:+ +#+ n "
" +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ n "
" #+# #+# #+# #+# #+# #+# #+# n "
" ### ### ########## ########## ########## ######## ### n "
)
output_field = create_vertical_gradient_field (
template = text_to_render ,
ansi_vals = rainbow_vals ,
indent = 3 ,
step = 1 ,
)
output_text = apply_ansi_field (
text = text_to_render ,
field = output_field
)
print ( output_text )
لا تستخدم Windows ، قم بتثبيت Python 3.9 ، ثم استخدم source ./tooling && venv-setup
استخدم Command lint-cfx للعمل الوثني ، test-cfx لاختبار العمل.
استخدم فرعًا باسمك للقيام بعمل الميزات ، ثم إرسال طلب سحب.