Compare commits

...

2 Commits

Author SHA1 Message Date
jkissane2
9ac30cfc22 Finished Compression Lab 2026-04-02 12:16:24 -04:00
jkissane2
119c7d10d5 Julianna Kissane Lab Compression 2026-03-22 19:36:44 -04:00
7 changed files with 22911 additions and 2 deletions

1
.envrc Normal file
View File

@@ -0,0 +1 @@
source .venv/bin/activate

1
hello.txt Normal file
View File

@@ -0,0 +1 @@
Hello!

View File

@@ -1,10 +1,29 @@
import string
import codecs
from custom_codecs.register import register_codec
#from text_codecs.register import register_codec
from easybits import Bits
allowed_characters = string.ascii_letters + string.digits
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):
"""A (very) lossy encoder which only saves ASCII letters, numbers, and spaces.
Everything else is discarded. All whitespace (e.g. tabs) is converted into spaces.

View File

@@ -1,6 +1,25 @@
from custom_codecs.register import register_codec
#from text_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
are replaced with '?'. Once all the characters are ASCII, this encoder

1
text_codecs/hello.txt Normal file
View File

@@ -0,0 +1 @@
Hello!

18
text_codecs/mycodec.py Normal file
View File

@@ -0,0 +1,18 @@
from register import register_codec
def encode(text):
text = text.lower()
result = ""
for char in text:
if char.isalpha() or char == " ":
if char not in "aeiou":
result += char
return result.encode("utf8")
def decode(data):
text = bytes(data).decode("utf8")
return text
register_codec(encode, decode, "mycodec")

File diff suppressed because it is too large Load Diff