generated from mwc/lab_compression
made my codecs but was having trouble testing it
This commit is contained in:
1
.python-version
Normal file
1
.python-version
Normal file
@@ -0,0 +1 @@
|
|||||||
|
3.12
|
||||||
@@ -1,7 +1,25 @@
|
|||||||
import string
|
import string
|
||||||
import codecs
|
import codecs
|
||||||
from custom_codecs.register import register_codec
|
|
||||||
from easybits import Bits
|
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
|
allowed_characters = string.ascii_letters + string.digits
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,23 @@
|
|||||||
from custom_codecs.register import register_codec
|
|
||||||
from easybits import Bits
|
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):
|
def encode(text):
|
||||||
"""An encoder which only handles ASCII: non-ASCII characters
|
"""An encoder which only handles ASCII: non-ASCII characters
|
||||||
|
|||||||
49
text_codecs/trevcodec.py
Normal file
49
text_codecs/trevcodec.py
Normal 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")
|
||||||
Reference in New Issue
Block a user