Commit 4d52ab51 authored by Simon Will's avatar Simon Will
Browse files

Add repr and str methods to model.py

parent c9187f32
Loading
Loading
Loading
Loading
+47 −8
Original line number Diff line number Diff line
@@ -108,6 +108,21 @@ class Syllable:

        return json.dumps(self.to_dict())

    def __repr__(self):
        return (
            'Syllable(text={s.text!r}, span={s.span!r}, id={s.id!r},'
            ' syllable_length={s.syllable_length!r},'
            ' vowel_length={s.vowel_length!r},'
            ' phenomena={s.phenomena!r})'
        ).format(s=self)

    def __str__(self):
        return (
            'Syllable(text={s.text!r}, syllable_length={s.syllable_length},'
            ' vowel_length={s.vowel_length})'
        ).format(s=self)


class Phenomenon:

    def __init__(self, caused_by=None, overruled_by=None,
@@ -187,6 +202,14 @@ class Phenomenon:

        return json.dumps(self.to_dict())

    def __repr__(self):
        return (
            'Phenomenon(caused_by={p.caused_by!r},'
            ' overruled_by={p.overruled_by!r}, chars={p.chars!r},'
            ' typus={p.typus!r}, omitted={p.omitted!r})'
        ).format(p=self)


class MultisyllablePhenomenon(Phenomenon):

    def __init__(self, beginning:int, end:int, caused_by=None, 
@@ -252,6 +275,14 @@ class MultisyllablePhenomenon(Phenomenon):

        return json.dumps(self.to_dict())

    def __repr__(self):
        return (
            'MultiSyllablePhenomenon(caused_by={p.caused_by!r},'
            ' overruled_by={p.overruled_by!r}, chars={p.chars!r},'
            ' typus={p.typus!r}, omitted={p.omitted!r},'
            ' beginning={p.beginning!r}, end={p.end!r})'
        ).format(p=self)


class Token:

@@ -309,13 +340,16 @@ class Token:
    def is_punct(self):
        return bool(re.match('^[\W_]+$', self.text))

    def __repr__(self):
        return (
            'Token(token={t.text!r}, span={t.span!r},'
            ' syllables={t.syllables!r}, clitic={t.clitic!r},'
            ' accented={t.accented!r})'
        ).format(t=self)

    def __str__(self):
        return self.text

    def __repr__(self):
        return ('Token(token={}, span={}, syllables={})'
                .format(self.text, self.span, self.syllables))


class Reading:

@@ -378,6 +412,10 @@ class Reading:
    def append_token(self, token: Token):
        self.tokens.append(token)

    def __repr__(self):
        return ('Reading(tokens={r.tokens!r}, phenomena={t.phenomena!r})'
                .format(r=self))

    def __str__(self):
        forms = [
            t.accented if t.accented is not None else t.text
@@ -385,10 +423,6 @@ class Reading:
        ]
        return ' '.join(forms)

    def __repr__(self):
        # TODO: Implement this properly.
        return str(self)


class Verse:

@@ -437,6 +471,11 @@ class Verse:

        return json.dumps(self.to_dict())

    def __repr__(self):
        return (
            'Verse(text={v.text!r}, source={v.source!r},'
            ' readings={v.readings!r})'
        ).format(v=self)

    def __str__(self):
        s = 'Verse: {verse}\n{reading_num} Readings:\n{readings}'