Beispiel #1
0
def GenerateSamples(grammar_dir, outfiles):
    """Generates a set of samples and writes them to the output files.

  Args:
    grammar_dir: directory to load grammar files from.
    outfiles: A list of output filenames.
  """

    f = open(os.path.join(grammar_dir, 'template.html'))
    template = f.read()
    f.close()

    htmlgrammar = Grammar()
    err = htmlgrammar.ParseFromFile(os.path.join(grammar_dir, 'html.txt'))
    #CheckGrammar(htmlgrammar)
    if err > 0:
        print 'There were errors parsing grammar'
        return

    cssgrammar = Grammar()
    err = cssgrammar.ParseFromFile(os.path.join(grammar_dir, 'css.txt'))
    #CheckGrammar(cssgrammar)
    if err > 0:
        print 'There were errors parsing grammar'
        return

    jsgrammar = Grammar()
    err = jsgrammar.ParseFromFile(os.path.join(grammar_dir, 'js.txt'))
    #CheckGrammar(jsgrammar)
    if err > 0:
        print 'There were errors parsing grammar'
        return

    # JS and HTML grammar need acces to CSS grammar.
    # Add it as import
    htmlgrammar.AddImport('cssgrammar', cssgrammar)
    jsgrammar.AddImport('cssgrammar', cssgrammar)

    for outfile in outfiles:
        result = GenerateNewSample(template, htmlgrammar, cssgrammar,
                                   jsgrammar)

        if result is not None:
            print 'Writing a sample to ' + outfile
            try:
                f = open(outfile, 'w')
                f.write(result)
                f.close()
            except IOError:
                print 'Error writing to output'