Exemple #1
0
def check_src(language):
    '''
    Check external source files referenced in title attributes of code blocks.
    '''
    prefix_len = len(SOURCE_DIR + '/')

    def _unprefix(filename):
        return filename[prefix_len:]

    content = get_all_docs(language, remove_code_blocks=False)
    referenced = match_body(content, r'{:\s+title="([^"]+)\s*"[^}]*}') | \
        match_body(content, r'<!--\s+used="([^"]+)"\s+-->')
    actual = {
        _unprefix(filename)
        for filename in glob.iglob('{}/**/*.*'.format(SOURCE_DIR),
                                   recursive=True)
        if not _ignore_file(filename)
    }
    report('Source Files', 'unused', actual - referenced)
    report('Source Files', 'missing', referenced - actual)
Exemple #2
0
def check_gloss(language):
    '''
    Check for unused and undefined glossary entries and alphabetical order.
    '''
    content = get_all_docs(language)

    used = match_body(content, r'\[.+?\]\(#(g:.+?)\)')
    defined = _match_lines(content, r'\*\*.+?\*\*{:#(g:.+?)}')
    report('Glossary Entries', 'unused', defined - used)
    report('Glossary Entries', 'missing', used - defined)

    keys = _get_lines(content, r'\*\*(.+?)\*\*{:#g:.+?}')
    report('Glossary Entries', 'out of order', _out_of_order(keys))
Exemple #3
0
def check_links(language):
    '''
    Check that external links are defined and used.
    '''
    content = get_all_docs(language)
    used = match_body(content, r'\[.+?\]\[(.+?)\]')
    with open(LINK_FILE, 'r') as reader:
        body = reader.read()
    matches = re.findall(r'^\[(.+?)\]', body, flags=re.DOTALL + re.MULTILINE)
    links = Counter(matches)
    duplicate = {key for key in links if links[key] > 1}
    defined = set(links.keys())
    report('External Links', 'unused', defined - used)
    report('External Links', 'undefined', used - defined)
    report('External Links', 'duplicated', duplicate)