generated from mwc/lab_compression
Messed around with getting my encoding to work
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import string
|
||||
import codecs
|
||||
from text_codecs.register import register_codec
|
||||
from easybits import Bits
|
||||
|
||||
allowed_characters = string.ascii_letters + string.digits
|
||||
@@ -35,5 +34,21 @@ def decode(data):
|
||||
print("Error")
|
||||
breakpoint()
|
||||
return text
|
||||
|
||||
|
||||
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)
|
||||
|
||||
register_codec(encode, decode, "alphanumeric")
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from text_codecs.register import register_codec
|
||||
from easybits import Bits
|
||||
import codecs
|
||||
|
||||
def encode(text):
|
||||
"""An encoder which only handles ASCII: non-ASCII characters
|
||||
@@ -30,4 +30,20 @@ def decode(data):
|
||||
text += Bits(byte).ascii
|
||||
return text
|
||||
|
||||
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)
|
||||
|
||||
register_codec(encode, decode, "ascii7")
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
import string
|
||||
import codecs
|
||||
from text_codecs.register import register_codec
|
||||
from easybits import Bits
|
||||
|
||||
vowels = 'aeiouyAEIOUY'
|
||||
allowed_chars = string.ascii_letters + string.digits
|
||||
|
||||
def encode(text):
|
||||
|
||||
ascii_chars = []
|
||||
ascii_novow_chars = []
|
||||
last_character_was_space = False
|
||||
for char in text:
|
||||
if char in allowed_chars:
|
||||
ascii_chars.append(char)
|
||||
if char in allowed_chars and char not in vowels:
|
||||
ascii_novow_chars.append(char)
|
||||
last_character_was_space = False
|
||||
elif char in string.whitespace and not last_character_was_space:
|
||||
ascii_chars.append(' ')
|
||||
ascii_novow_chars.append(' ')
|
||||
last_character_was_space = True
|
||||
ascii_text = ''.join(ascii_chars)
|
||||
|
||||
no_vowels = []
|
||||
for ch in ascii_text:
|
||||
if ch not in vowels:
|
||||
no_vowels.append(ch)
|
||||
|
||||
return Bits(no_vowels, encoding = 'ascii7')
|
||||
clean_text = ''.join(ascii_novow_chars)
|
||||
|
||||
result = Bits()
|
||||
for char in clean_text:
|
||||
try:
|
||||
b = Bits(char, encoding='ascii')
|
||||
result = result.concat(b[1:])
|
||||
except:
|
||||
b = Bits('?')
|
||||
result = result.concat(b[1:])
|
||||
return result.bytes
|
||||
|
||||
def decode(data):
|
||||
bits = Bits(bytes(data))
|
||||
@@ -35,7 +35,23 @@ def decode(data):
|
||||
text += Bits(byte).ascii
|
||||
return text
|
||||
|
||||
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)
|
||||
|
||||
register_codec(encode, decode, "noVow7")
|
||||
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)
|
||||
|
||||
|
||||
register_codec(encode, decode,"novow7")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user