made my codecs but was having trouble testing it

This commit is contained in:
tsmith372
2026-04-06 19:46:50 -04:00
parent 7e31ef1cd7
commit c71f841088
5 changed files with 89 additions and 2 deletions

View File

@@ -1,7 +1,25 @@
import string
import codecs
from custom_codecs.register import register_codec
from easybits import Bits
import codecs
def register_codec(encode, decode, name):
"""Registers a codec so that it can later be used to encode
or decode strings and bytes.
"""
def encode_wrapper(text):
return encode(text), len(text)
def decode_wrapper(data):
return decode(data), len(data)
def search_for_codec(query):
if query == name:
return codecs.CodecInfo(encode_wrapper, decode_wrapper, name=name)
codecs.register(search_for_codec)
allowed_characters = string.ascii_letters + string.digits

View File

@@ -1,5 +1,23 @@
from custom_codecs.register import register_codec
from easybits import Bits
import codecs
def register_codec(encode, decode, name):
"""Registers a codec so that it can later be used to encode
or decode strings and bytes.
"""
def encode_wrapper(text):
return encode(text), len(text)
def decode_wrapper(data):
return decode(data), len(data)
def search_for_codec(query):
if query == name:
return codecs.CodecInfo(encode_wrapper, decode_wrapper, name=name)
codecs.register(search_for_codec)
def encode(text):
"""An encoder which only handles ASCII: non-ASCII characters

49
text_codecs/trevcodec.py Normal file
View File

@@ -0,0 +1,49 @@
from easybits import Bits
import codecs
def register_codec(encode, decode, name):
"""Registers a codec so that it can later be used to encode
or decode strings and bytes.
"""
def encode_wrapper(text):
return encode(text), len(text)
def decode_wrapper(data):
return decode(data), len(data)
def search_for_codec(query):
if query == name:
return codecs.CodecInfo(encode_wrapper, decode_wrapper, name=name)
codecs.register(search_for_codec)
CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ .,?!'"
def encode(text):
result = Bits()
text = text.upper()
for char in text:
if char in CHARS:
index = CHARS.index(char)
bits = Bits(index, length=5)
result = result.concat(bits)
return result.bytes
def decode(data):
bits = Bits(bytes(data))
text = ""
for i in range(0, len(bits), 5):
chunk = bits[i:i+5]
if len(chunk) == 5:
index = chunk.int
text += CHARS[index]
return text
register_codec(encode, decode, "trevcodec")