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 string
import codecs import codecs
from custom_codecs.register import register_codec #from text_codecs.register import register_codec
from easybits import Bits from easybits import Bits
allowed_characters = string.ascii_letters + string.digits 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): def encode(text):
"""A (very) lossy encoder which only saves ASCII letters, numbers, and spaces. """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. 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 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
are replaced with '?'. Once all the characters are ASCII, this encoder 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