import re
from stemmer_porter_algorithm import Stemmer


class TextPreparation:
    def __init__(self, text):
        self._st = Stemmer()
        self._text = text

    def strip_and_convert_to_lower(self):
        self._text = self._text.lower().strip()

    def remove_non_letter_characters(self):
        self._text = re.sub(r'([^\s\w]|_)+', '', self._text)

    def stemmer(self):
        words = self._text.split()
        self._text = ''
        for word in words:
            new_word = self._st.stem(word)
            self._text += new_word + ' '

    def prepare_text(self):
        self.strip_and_convert_to_lower()
        self.remove_non_letter_characters()
        self.stemmer()
        return self._text


if __name__ == '__main__':
    text = 'Привет читатели. Я рад то что ты читаешь мой текст. Я хотел бы рассказать тебе про свою жизнь. Знаешь, ' \
           'началась она не так поздно, всего лишь 17 лет назад. В середине декабря 9 класса угораздило мне влюбиться' \
           ' по уши. Я дышал ей, я любил её больше своей жизни. Она мне сказала, что она не общалась со своими ' \
           'ровесниками, я первый, и то что она ни с кем не общалась дольше двух недель. Я подумал, что я не они, и ' \
           'она будет со мной встречаться долго, очень долго. Правда я и не рассчитывал, что свяжу с ней свою ' \
           'жизнь, так как я был простым деревенским пацанчиком, а она "принцессой". Ну есть такой закон, который ' \
           'называется "законом подлости". Я общался с ней всего лишь две с половиной недели. Я считал эти дни, ' \
           'так как они для меня очень важны. Она изменила меня, я с ней стал иначе смотреть на эту жизнь. ' \
           'Я расстался с ней по своей вине, я был очень город и ревнив. Я не поверил ей и написал ей очень ' \
           'плохое сообщение, и сожалею об этом до сих пор. После моего сообщения она написала так: "Знаешь что? ' \
           'Ты дебил! Верь своим фактам! А мне больше не пиши и не звони!" Вот это сообщение было последним от ' \
           'её "лица". После этого все зимние каникулы я употреблял спиртное. И тут всё началось. Я сначала ' \
           'выпивал, потом стал курить, летом, я не ценил свою жизнь и хотел умереть. И когда несколько бед' \
           ' сразу легли на мои плечи, я решил наглотаться таблеток и сдохнуть. Но вы не поверите, меня не взяли на' \
           ' тот свет! Я встал и пошёл на учёбу, хотя прошло уже два часа, я даже не чувствовал эффект, хотя съел' \
           ' 20 таблеток анальгина. Последующие пол года я тупо убивал свой организм. Я стал принимать наркотики. ' \
           'Я первый раз в своей жизни попробовал спайс, и понял что это как любовь. Хорошо душе и постепенно ' \
           'убивает меня. Ведь всё так начинается: неудачная любовь, алкоголь, сигареты, наркотики' \
           ' и смерть!Этот текст я написал тоже под кайфом, так что прошу не обращайте внимание ' \
           'на мои ошибки. Может быть меня сейчас' \
           ' и нет. Пока...07.05.2013 Автор: 47'
    tp = TextPreparation(text)

    new_text = tp.prepare_text()
    print(new_text)
