Move analysis visitors out of parser module
This commit is contained in:
parent
973d60008d
commit
d9cdd4372a
|
@ -9,11 +9,48 @@ from amanuensis.config import ReadOnlyOrderedDict
|
||||||
from amanuensis.models import LexiconModel, UserModel
|
from amanuensis.models import LexiconModel, UserModel
|
||||||
from amanuensis.parser import (
|
from amanuensis.parser import (
|
||||||
parse_raw_markdown,
|
parse_raw_markdown,
|
||||||
GetCitations,
|
|
||||||
HtmlRenderer,
|
HtmlRenderer,
|
||||||
titlesort,
|
titlesort,
|
||||||
filesafe_title,
|
filesafe_title)
|
||||||
ConstraintAnalysis)
|
from amanuensis.parser.core import RenderableVisitor
|
||||||
|
|
||||||
|
|
||||||
|
class GetCitations(RenderableVisitor):
|
||||||
|
def __init__(self):
|
||||||
|
self.citations = []
|
||||||
|
|
||||||
|
def ParsedArticle(self, span):
|
||||||
|
span.recurse(self)
|
||||||
|
return self.citations
|
||||||
|
|
||||||
|
def CitationSpan(self, span):
|
||||||
|
self.citations.append(span.cite_target)
|
||||||
|
return self
|
||||||
|
|
||||||
|
|
||||||
|
class ConstraintAnalysis(RenderableVisitor):
|
||||||
|
def __init__(self, lexicon: LexiconModel):
|
||||||
|
self.info: List[str] = []
|
||||||
|
self.warning: List[str] = []
|
||||||
|
self.error: List[str] = []
|
||||||
|
|
||||||
|
self.word_count: int = 0
|
||||||
|
self.citations: list = []
|
||||||
|
self.signatures: int = 0
|
||||||
|
|
||||||
|
def TextSpan(self, span):
|
||||||
|
self.word_count += len(re.split(r'\s+', span.innertext.strip()))
|
||||||
|
return self
|
||||||
|
|
||||||
|
def SignatureParagraph(self, span):
|
||||||
|
self.signatures += 1
|
||||||
|
span.recurse(self)
|
||||||
|
return self
|
||||||
|
|
||||||
|
def CitationSpan(self, span):
|
||||||
|
self.citations.append(span.cite_target)
|
||||||
|
span.recurse(self)
|
||||||
|
return self
|
||||||
|
|
||||||
|
|
||||||
def get_player_characters(
|
def get_player_characters(
|
||||||
|
|
|
@ -2,15 +2,12 @@
|
||||||
Module encapsulating all markdown parsing functionality.
|
Module encapsulating all markdown parsing functionality.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from .analyze import ConstraintAnalysis, GetCitations
|
|
||||||
from .core import normalize_title
|
from .core import normalize_title
|
||||||
from .helpers import titlesort, filesafe_title
|
from .helpers import titlesort, filesafe_title
|
||||||
from .parsing import parse_raw_markdown
|
from .parsing import parse_raw_markdown
|
||||||
from .render import PreviewHtmlRenderer, HtmlRenderer
|
from .render import PreviewHtmlRenderer, HtmlRenderer
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
ConstraintAnalysis.__name__,
|
|
||||||
GetCitations.__name__,
|
|
||||||
normalize_title.__name__,
|
normalize_title.__name__,
|
||||||
titlesort.__name__,
|
titlesort.__name__,
|
||||||
filesafe_title.__name__,
|
filesafe_title.__name__,
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
"""
|
|
||||||
Internal module encapsulating visitors that compute metrics on articles
|
|
||||||
for verification against constraints.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import re
|
|
||||||
from typing import List
|
|
||||||
|
|
||||||
from amanuensis.models import LexiconModel
|
|
||||||
|
|
||||||
from .core import RenderableVisitor
|
|
||||||
|
|
||||||
|
|
||||||
class GetCitations(RenderableVisitor):
|
|
||||||
def __init__(self):
|
|
||||||
self.citations = []
|
|
||||||
|
|
||||||
def ParsedArticle(self, span):
|
|
||||||
span.recurse(self)
|
|
||||||
return self.citations
|
|
||||||
|
|
||||||
def CitationSpan(self, span):
|
|
||||||
self.citations.append(span.cite_target)
|
|
||||||
return self
|
|
||||||
|
|
||||||
|
|
||||||
class ConstraintAnalysis(RenderableVisitor):
|
|
||||||
def __init__(self, lexicon: LexiconModel):
|
|
||||||
self.info: List[str] = []
|
|
||||||
self.warning: List[str] = []
|
|
||||||
self.error: List[str] = []
|
|
||||||
|
|
||||||
self.word_count: int = 0
|
|
||||||
self.citations: list = []
|
|
||||||
self.signatures: int = 0
|
|
||||||
|
|
||||||
def TextSpan(self, span):
|
|
||||||
self.word_count += len(re.split(r'\s+', span.innertext.strip()))
|
|
||||||
return self
|
|
||||||
|
|
||||||
def SignatureParagraph(self, span):
|
|
||||||
self.signatures += 1
|
|
||||||
span.recurse(self)
|
|
||||||
return self
|
|
||||||
|
|
||||||
def CitationSpan(self, span):
|
|
||||||
self.citations.append(span.cite_target)
|
|
||||||
span.recurse(self)
|
|
||||||
return self
|
|
Loading…
Reference in New Issue