53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
|
# ===-------------------------- utils.py - Utility ------------------------===//
|
||
|
#
|
||
|
# Copyright 2019-2020 The IBM Research Authors.
|
||
|
#
|
||
|
# =============================================================================
|
||
|
#
|
||
|
# ===----------------------------------------------------------------------===//
|
||
|
|
||
|
import logging
|
||
|
|
||
|
logger = logging.getLogger('doc-check')
|
||
|
|
||
|
from doc_parser import *
|
||
|
from utils import *
|
||
|
|
||
|
|
||
|
def parse(line, directive_configs):
|
||
|
directive_configs.append({'ref': line})
|
||
|
return success()
|
||
|
|
||
|
|
||
|
def handle(config, ctx):
|
||
|
logger.debug("Handling a same-as-file directive with config {}".format(config))
|
||
|
ref_file_path = config["ref"]
|
||
|
doc_file = ctx.doc_file
|
||
|
parse_code_section_delimiter(ctx)
|
||
|
with WrappedFile(open(
|
||
|
os.path.join(ctx.root_dir, ref_file_path))) as ref_file:
|
||
|
doc_file.skip_lines(config.get("skip-doc", 0))
|
||
|
ref_file.skip_lines(config.get("skip-ref", 0))
|
||
|
while not ref_file.eof():
|
||
|
ref_line = ref_file.readline().rstrip('\r\n')
|
||
|
doc_line = doc_file.readline().rstrip('\r\n')
|
||
|
loc = (doc_file.f.name, doc_file.line,
|
||
|
ref_file_path, ref_file.line)
|
||
|
loc_info = "\ndoc file {}, line no. {}. ref file {}, line no. {}.".format(*loc)
|
||
|
if doc_file.eof():
|
||
|
raise ValueError("Check failed because doc file is "
|
||
|
"shorter than reference file." + loc_info)
|
||
|
|
||
|
if ref_line != doc_line:
|
||
|
doc_line_info = "\nDoc line : {}".format(doc_line)
|
||
|
ref_line_info = "\nReference line: {}".format(ref_line)
|
||
|
raise ValueError(
|
||
|
"Check failed because doc file content is not "
|
||
|
"the same as that of reference file." +
|
||
|
doc_line_info + ref_line_info)
|
||
|
|
||
|
parse_code_section_delimiter(ctx)
|
||
|
|
||
|
|
||
|
ext_to_patterns = {'.md': '\\[same-as-file\\]: <> \\(([^)]*)\\)'}
|