File size: 2,068 Bytes
46df5f0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
"""Checkers module for paper submission quality checks."""
from .base import BaseChecker, CheckResult, CheckSeverity
from .caption_checker import CaptionChecker
from .reference_checker import ReferenceChecker
from .ai_artifacts_checker import AIArtifactsChecker
from .formatting_checker import FormattingChecker
from .anonymization_checker import AnonymizationChecker
from .number_checker import NumberChecker
from .sentence_checker import SentenceChecker
from .consistency_checker import ConsistencyChecker
from .citation_quality_checker import CitationQualityChecker
from .equation_checker import EquationChecker
from .acronym_checker import AcronymChecker

__all__ = [
    'BaseChecker',
    'CheckResult',
    'CheckSeverity',
    'CaptionChecker',
    'ReferenceChecker',
    'AIArtifactsChecker',
    'FormattingChecker',
    'AnonymizationChecker',
    'NumberChecker',
    'SentenceChecker',
    'ConsistencyChecker',
    'CitationQualityChecker',
    'EquationChecker',
    'AcronymChecker',
]


# Registry of all available checkers
CHECKER_REGISTRY = {
    'caption': CaptionChecker,
    'reference': ReferenceChecker,
    'ai_artifacts': AIArtifactsChecker,
    'formatting': FormattingChecker,
    'anonymization': AnonymizationChecker,
    'number': NumberChecker,
    'sentence': SentenceChecker,
    'consistency': ConsistencyChecker,
    'citation_quality': CitationQualityChecker,
    'equation': EquationChecker,
    'acronym': AcronymChecker,
}


def get_checker(name: str) -> BaseChecker:
    """Get a checker instance by name."""
    if name not in CHECKER_REGISTRY:
        raise ValueError(f"Unknown checker: {name}")
    return CHECKER_REGISTRY[name]()


def run_all_checkers(tex_content: str, config: dict = None) -> list:
    """Run all checkers and return combined results."""
    results = []
    config = config or {}
    
    for name, checker_class in CHECKER_REGISTRY.items():
        checker = checker_class()
        checker_results = checker.check(tex_content, config)
        results.extend(checker_results)
    
    return results