Exemplo n.º 1
0
    def setUp(self):
        self.config.parse.fn_spec.add('foo',
                                      flags=['BAR', 'BAZ'],
                                      kwargs={
                                          "HEADERS": '*',
                                          "SOURCES": '*',
                                          "DEPENDS": '*'
                                      })

        self.parse_ctx.parse_db.update(
            parse_funs.get_funtree(self.config.parse.fn_spec))
Exemplo n.º 2
0
    def setUp(self):
        self.config = configuration.Configuration()
        parse_db = parse_funs.get_parse_db()
        self.parse_ctx = parse.ParseContext(parse_db)
        self.config.parse.fn_spec.add('foo',
                                      flags=['BAR', 'BAZ'],
                                      kwargs={
                                          "HEADERS": '*',
                                          "SOURCES": '*',
                                          "DEPENDS": '*'
                                      })

        self.parse_ctx.parse_db.update(
            parse_funs.get_funtree(self.config.parse.fn_spec))
Exemplo n.º 3
0
def process_file(config, infile_content):
  """
  Parse the input cmake file, return the parse tree
  """

  if config.format.line_ending == 'auto':
    detected = __main__.detect_line_endings(infile_content)
    config = config.clone()
    config.set_line_ending(detected)

  tokens = lexer.tokenize(infile_content)
  parse_db = parse_funs.get_parse_db()
  parse_db.update(parse_funs.get_funtree(config.parse.fn_spec))
  ctx = parse.ParseContext(parse_db, config=config)
  parse_tree = parse.parse(tokens, ctx)
  parse_tree.build_ancestry()
  return parse_tree
Exemplo n.º 4
0
def process_file(config, infile_content, dump=None):
    """
  Parse the input cmake file, re-format it, and print to the output file.
  """

    outfile = io.StringIO(newline='')
    if config.format.line_ending == 'auto':
        detected = detect_line_endings(infile_content)
        config = config.clone()
        config.format.set_line_ending(detected)
    tokens = lexer.tokenize(infile_content)
    if dump == "lex":
        for token in tokens:
            outfile.write("{}\n".format(token))
        return outfile.getvalue(), True
    first_token = lexer.get_first_non_whitespace_token(tokens)
    parse_db = parse_funs.get_parse_db()
    parse_db.update(parse_funs.get_funtree(config.parse.fn_spec))

    if dump == "parsedb":
        dump_parsedb(parse_db, outfile)
        return outfile.getvalue(), True

    ctx = parse.ParseContext(parse_db, config=config)
    parse_tree = parse.parse(tokens, ctx)
    if dump == "parse":
        dump_parse([parse_tree], outfile)
        return outfile.getvalue(), True
    if dump == "markup":
        dump_markup([parse_tree], config, outfile)
        return outfile.getvalue(), True

    box_tree = formatter.layout_tree(parse_tree,
                                     config,
                                     first_token=first_token)
    if dump == "layout":
        formatter.dump_tree([box_tree], outfile)
        return outfile.getvalue(), True

    outstr = formatter.write_tree(box_tree, config, infile_content)
    if config.encode.emit_byteorder_mark:
        outstr = "\ufeff" + outstr

    return (outstr, box_tree.reflow_valid)
Exemplo n.º 5
0
def process_file(config, local_ctx, infile_content):
    """
  Parse the input cmake file, re-format it, and print to the output file.
  """

    if config.format.line_ending == 'auto':
        detected = __main__.detect_line_endings(infile_content)
        config = config.clone()
        config.set_line_ending(detected)

    checker = basic_checker.LintChecker(config, local_ctx)
    checker.check_basics(infile_content)
    tokens = lexer.tokenize(infile_content)
    checker.check_tokens(tokens)

    parse_db = parse_funs.get_parse_db()
    parse_db.update(parse_funs.get_funtree(config.parse.fn_spec))
    ctx = parse.ParseContext(parse_db, local_ctx, config)
    parse_tree = parse.parse(tokens, ctx)
    parse_tree.build_ancestry()
    checker.check_parse_tree(parse_tree)
Exemplo n.º 6
0
def annotate_file(config, infile, outfile, outfmt=None):
  """
  Parse the input cmake file, re-format it, and print to the output file.
  """

  infile_content = infile.read()
  if config.format.line_ending == 'auto':
    detected = __main__.detect_line_endings(infile_content)
    config = config.clone()
    config.format.set_line_ending(detected)
  tokens = lexer.tokenize(infile_content)
  parse_db = parse_funs.get_parse_db()
  parse_db.update(parse_funs.get_funtree(config.parse.fn_spec))
  ctx = parse.ParseContext(parse_db)
  parse_tree = parse.parse(tokens, ctx)

  if outfmt == "page":
    html_content = render.get_html(parse_tree, fullpage=True)
    outfile.write(html_content)
    return
  if outfmt == "stub":
    html_content = render.get_html(parse_tree, fullpage=False)
    outfile.write(html_content)
    return
  if outfmt == "iframe":
    html_content = render.get_html(parse_tree, fullpage=True)
    wrap_lines = EMBED_TPL.split("\n")
    for line in wrap_lines[:2]:
      outfile.write(line)
      outfile.write("\n")
    outfile.write(html_content)
    for line in wrap_lines[3:]:
      outfile.write(line)
      outfile.write("\n")
    return

  raise ValueError("Invalid output format: {}".format(outfmt))