Ejemplo n.º 1
0
def view_stderr():
    key = request.values.get("_id")
    job = db.queue.find_one({"_id":ObjectId(key)})
    if job is None:
        return 'None'
    else:
        contents = job.get('stderr','No stderr')
        return Ansi2HTMLConverter().convert(contents)
Ejemplo n.º 2
0
def convertHTML(text):
    """Replaces ANSI color codes with HTML"""
    try:
        from ansi2html import Ansi2HTMLConverter
        conv = Ansi2HTMLConverter(dark_bg=False, inline=True)
        return conv.convert(text).replace('AAAAAA', 'FFFFFF')
    except ImportError:
        return ansi_re.sub('', text)
Ejemplo n.º 3
0
def format_log(log):
    conv = Ansi2HTMLConverter(dark_bg=False,
                              scheme="solarized",
                              markup_lines=True)
    headers = conv.produce_headers()
    content = conv.convert(log, full=False)
    content = f'<pre class="ansi2html-content">{content}</pre>'
    return headers + content
Ejemplo n.º 4
0
def restart_service():
    service = request.get_json().get('service')
    service_path = os.path.join(os.getenv('ROBOTFXDIR'), 'etc', 'init', service)
    output = subprocess.run([service_path, 'restart'], stdout=subprocess.PIPE)
    conv = Ansi2HTMLConverter()
    html = conv.convert(output.stdout.decode("utf-8"), full=False)

    return jsonify({'output': html})
Ejemplo n.º 5
0
 def read(cls, queue, f_name):
     instance = cls()
     instance.queue = queue
     instance.f_name = f_name
     instance.conv = Ansi2HTMLConverter()
     instance.daemon = True
     instance.start()
     return instance
Ejemplo n.º 6
0
def inl_ansi_html(s):
    # TODO fix the style, looks terrible
    s = Ansi2HTMLConverter().convert(s)
    pre, s = s.split('<style', 1)
    style, body = s.split('</style>', 1)
    pre, body = s.split('<body', 1)
    body = body.split('</body>', 1)[0]
    return '\n```\n\n<style %s</style><div %s</div>\n\n```' % (style, body)
Ejemplo n.º 7
0
    def __init__(self, filename="tmp.html", mode="a", buff=0):
        self.stdout = sys.stdout
        # self.file = open(filename, mode, buff)
        self.lines = []
        self.transcript = open(filename, mode="w")

        self.conv = Ansi2HTMLConverter()

        sys.stdout = self
Ejemplo n.º 8
0
    def test_hidden_text(self):
        sample = '\x1b[%dmHIDDEN\x1b[%dmVISIBLE\x1b[0m' % (ANSI_VISIBILITY_OFF,
                                                           ANSI_VISIBILITY_ON)

        html = Ansi2HTMLConverter(inline=True).convert(sample, full=False)
        expected = six.u(
            '<span style="visibility: hidden">HIDDEN</span>VISIBLE')

        self.assertEqual(expected, html)
Ejemplo n.º 9
0
def view_stdout():
    # See https://pypi.org/project/ansi2html/ for colored ansi -> HTML conversions
    key = request.values.get("_id")
    job = db.queue.find_one({"_id":ObjectId(key)})
    if job is None:
        return 'None'
    else:
        contents = job.get('stdout','No stdout')
        return Ansi2HTMLConverter().convert(contents)
Ejemplo n.º 10
0
    def test_produce_headers(self):
        conv = Ansi2HTMLConverter()
        headers = conv.produce_headers()

        inputfile = join(_here, "produce_headers.txt")
        with open(inputfile, "rb") as produce_headers:
            expected_data = read_to_unicode(produce_headers)

        self.assertMultiLineEqual(headers, "".join(expected_data))
Ejemplo n.º 11
0
def convert_ansi_to_html(text, full=False):
    converted = ''
    try:
        conv = Ansi2HTMLConverter(markup_lines=True,
                                  linkify=False,
                                  escaped=False)
        converted = conv.convert(text.replace('\n', ' <br/>'), full=full)
    except Exception, e:
        converted = text
Ejemplo n.º 12
0
def update_result(curr_id):
    try:
        base_path = BASE_DIR + 'results/' + curr_id
        conv = Ansi2HTMLConverter()
        return jsonify(result=conv.convert(open(base_path).read().strip()),
                       done=os.path.exists(base_path + '.done'),
                       submittable=os.path.exists(base_path + '.report'))
    except:
        return jsonify(result='No jobs pending.', done=False)
Ejemplo n.º 13
0
 def __init__(self):
     self.conv = Ansi2HTMLConverter(inline=True)
     self.ws = cr.ws
     self.r_log = cr.r_log
     self.r_user = cr.r_user
     self.r_ip = cr.r_ip
     self.r_port = cr.r_port
     # 配置远程服务器的IP,帐号,密码,端口等,因我做了SSH免密登陆,所以不需要密码
     self.cmd = cr.cmd
Ejemplo n.º 14
0
    def runit():
        variable_manager = VariableManager()
        loader = DataLoader()
        inventory = Inventory(loader=loader,
                              variable_manager=variable_manager,
                              host_list='/home/myhostlist')

        playbook_path = './myplaybook.yml'

        if not os.path.exists(playbook_path):
            print '[INFO] The playbook does not exist'
            sys.exit()

        Options = namedtuple('Options', [
            'listtags', 'listtasks', 'listhosts', 'syntax', 'connection',
            'module_path', 'forks', 'remote_user', 'private_key_file',
            'ssh_common_args', 'ssh_extra_args', 'sftp_extra_args',
            'scp_extra_args', 'become', 'become_method', 'become_user',
            'verbosity', 'check'
        ])

        options = Options(listtags=False,
                          listtasks=False,
                          listhosts=False,
                          syntax=False,
                          connection='ssh',
                          module_path=None,
                          forks=100,
                          remote_user='******',
                          private_key_file=None,
                          ssh_common_args=None,
                          ssh_extra_args=None,
                          sftp_extra_args=None,
                          scp_extra_args=None,
                          become=True,
                          become_method=None,
                          become_user='******',
                          verbosity=1,
                          check=False)

        passwords = {}
        conv = Ansi2HTMLConverter()
        old_stdout = sys.stdout
        sys.stdout = mystdout = StringIO()
        mystdout.reset()
        PlaybookExecutor(playbooks=[playbook_path],
                         inventory=inventory,
                         variable_manager=variable_manager,
                         loader=loader,
                         options=options,
                         passwords=passwords).run()
        sys.stdout = old_stdout
        mystdout.seek(0)
        if mystdout.readline():
            for line in mystdout:
                yield conv.convert(line.rstrip())
        mystdout.close()
Ejemplo n.º 15
0
def convert_file_contents_to_html2(normalized_output_file):
    #conv = Ansi2HTMLConverter()
    with open(normalized_output_file, "rb") as scan_file:
        test_data = "".join(read_to_unicode(scan_file))
        #expected_data = [e.rstrip('\n') for e in read_to_unicode(scan_file)]
        html = Ansi2HTMLConverter().convert(test_data,
                                            ensure_trailing_newline=True)

    return html
Ejemplo n.º 16
0
    def _convert_log_to_html(self, log_string):
        def strip_enclosing_html(html):
            ret = html.split('<pre id="content">')[1]
            ret = ret.split('</pre>')[0]
            ret = ret.rstrip()
            return ret

        conv = Ansi2HTMLConverter(inline=True)
        html = unicode(conv.convert(log_string))
        return strip_enclosing_html(html)
Ejemplo n.º 17
0
    def test_partial(self):
        rainbow = '\x1b[1m\x1b[40m\x1b[31mr\x1b[32ma\x1b[33mi\x1b[34mn\x1b[35mb\x1b[36mo\x1b[37mw\x1b[0m\n'

        html = Ansi2HTMLConverter().convert(rainbow, full=False).strip()
        expected = (u'<span class="ansi1"><span class="ansi40">' +
                    u'<span class="ansi31">r<span class="ansi32">a' +
                    u'<span class="ansi33">i<span class="ansi34">n' +
                    u'<span class="ansi35">b<span class="ansi36">o' +
                    u'<span class="ansi37">w</span>')
        self.assertEqual(expected, html)
Ejemplo n.º 18
0
def tohtml(filename):
    """Produce HTML file with highlighted matches."""
    conv = Ansi2HTMLConverter(dark_bg=False)
    with io.open(filename, 'r', encoding='utf8') as inp:
        ansi = inp.read()
    with open('%s.html' % filename.rsplit('.', 1)[0], 'w',
              encoding='utf8') as out:
        out.write(
            conv.convert(ansi).replace('#AAAAAA', '#FFFFFF',
                                       1).replace('.tok', ''))
Ejemplo n.º 19
0
    def test_unicode(self):
        """ Ensure that the converter returns unicode(py2)/str(py3) objs. """

        with open(join(_here, "ansicolor.txt"), "rb") as input:
            test_data = "".join(read_to_unicode(input))

        html = Ansi2HTMLConverter().convert(test_data).split("\n")

        for chunk in html:
            assert isinstance(chunk, str)
Ejemplo n.º 20
0
def generateHTML(inhaleOut, webdirpath, fqdn):
    conv = Ansi2HTMLConverter()
    ansi = "".join(inhaleOut)
    html = conv.convert(ansi)
    timeStamp = datetime.datetime.now().strftime("%Y-%m-%d_%H%M%S")
    fName = webdirpath + timeStamp + ".html"
    with open(fName, 'w') as outfile:
        outfile.write(html)
    webPath = fqdn + webdirpath + timeStamp + ".html"
    return webPath
Ejemplo n.º 21
0
def ansi2html(ansi, **kwargs):
    r"""
    >>> from hosh import Hosh
    >>> Hosh(b"asd").idc
    '\x1b[38;5;71m\x1b[1m\x1b[48;5;0mL\x1b[0m\x1b[38;5;83m\x1b[1m\x1b[48;5;0ms\x1b[0m\x1b[38;5;107m\x1b[1m\x1b[48;5;0mx\x1b[0m\x1b[38;5;83m\x1b[1m\x1b[48;5;0mC\x1b[0m\x1b[38;5;107m\x1b[1m\x1b[48;5;0ma\x1b[0m\x1b[38;5;83m\x1b[1m\x1b[48;5;0mj\x1b[0m\x1b[38;5;107m\x1b[1m\x1b[48;5;0ml\x1b[0m\x1b[38;5;78m\x1b[1m\x1b[48;5;0mK\x1b[0m\x1b[38;5;119m\x1b[1m\x1b[48;5;0m8\x1b[0m\x1b[38;5;113m\x1b[1m\x1b[48;5;0m3\x1b[0m\x1b[38;5;113m\x1b[1m\x1b[48;5;0m0\x1b[0m\x1b[38;5;107m\x1b[1m\x1b[48;5;0mA\x1b[0m\x1b[38;5;72m\x1b[1m\x1b[48;5;0mK\x1b[0m\x1b[38;5;83m\x1b[1m\x1b[48;5;0mq\x1b[0m\x1b[38;5;149m\x1b[1m\x1b[48;5;0mt\x1b[0m\x1b[38;5;107m\x1b[1m\x1b[48;5;0mU\x1b[0m\x1b[38;5;71m\x1b[1m\x1b[48;5;0m5\x1b[0m\x1b[38;5;83m\x1b[1m\x1b[48;5;0mv\x1b[0m\x1b[38;5;107m\x1b[1m\x1b[48;5;0m0\x1b[0m\x1b[38;5;83m\x1b[1m\x1b[48;5;0mC\x1b[0m\x1b[38;5;107m\x1b[1m\x1b[48;5;0m9\x1b[0m\x1b[38;5;83m\x1b[1m\x1b[48;5;0mY\x1b[0m\x1b[38;5;107m\x1b[1m\x1b[48;5;0mV\x1b[0m\x1b[38;5;78m\x1b[1m\x1b[48;5;0m9\x1b[0m\x1b[38;5;119m\x1b[1m\x1b[48;5;0mb\x1b[0m\x1b[38;5;113m\x1b[1m\x1b[48;5;0mQ\x1b[0m\x1b[38;5;113m\x1b[1m\x1b[48;5;0mn\x1b[0m\x1b[38;5;107m\x1b[1m\x1b[48;5;0mZ\x1b[0m\x1b[38;5;72m\x1b[1m\x1b[48;5;0mJ\x1b[0m\x1b[38;5;83m\x1b[1m\x1b[48;5;0m1\x1b[0m\x1b[38;5;149m\x1b[1m\x1b[48;5;0mw\x1b[0m\x1b[38;5;107m\x1b[1m\x1b[48;5;0mG\x1b[0m\x1b[38;5;71m\x1b[1m\x1b[48;5;0m3\x1b[0m\x1b[38;5;83m\x1b[1m\x1b[48;5;0mq\x1b[0m\x1b[38;5;107m\x1b[1m\x1b[48;5;0ms\x1b[0m\x1b[38;5;83m\x1b[1m\x1b[48;5;0ml\x1b[0m\x1b[38;5;107m\x1b[1m\x1b[48;5;0mW\x1b[0m\x1b[38;5;83m\x1b[1m\x1b[48;5;0m9\x1b[0m\x1b[38;5;107m\x1b[1m\x1b[48;5;0mZ\x1b[0m\x1b[38;5;78m\x1b[1m\x1b[48;5;0m6\x1b[0m'
    >>> Hosh(b"asd").html
    '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\n<html>\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n<title></title>\n<style type="text/css">\n.ansi2html-content { display: inline; white-space: pre-wrap; word-wrap: break-word; }\n.body_foreground { color: #AAAAAA; }\n.body_background { background-color: #000000; }\n.body_foreground > .bold,.bold > .body_foreground, body.body_foreground > pre > .bold { color: #FFFFFF; font-weight: normal; }\n.inv_foreground { color: #000000; }\n.inv_background { background-color: #AAAAAA; }\n.ansi1 { font-weight: bold; }\n.ansi48-0 { background-color: #000316; }\n.ansi38-71 { color: #5faf5f; }\n.ansi38-72 { color: #5faf87; }\n.ansi38-107 { color: #87af5f; }\n.ansi38-78 { color: #5fd787; }\n.ansi38-113 { color: #87d75f; }\n.ansi38-149 { color: #afd75f; }\n.ansi38-83 { color: #5fff5f; }\n.ansi38-119 { color: #87ff5f; }\n</style>\n</head>\n<body class="body_foreground body_background" style="font-size: normal;" >\n<pre class="ansi2html-content">\n<span class="ansi38-71"></span><span class="ansi1 ansi38-71"></span><span class="ansi1 ansi38-71 ansi48-0">L</span><span class="ansi38-83"></span><span class="ansi1 ansi38-83"></span><span class="ansi1 ansi38-83 ansi48-0">s</span><span class="ansi38-107"></span><span class="ansi1 ansi38-107"></span><span class="ansi1 ansi38-107 ansi48-0">x</span><span class="ansi38-83"></span><span class="ansi1 ansi38-83"></span><span class="ansi1 ansi38-83 ansi48-0">C</span><span class="ansi38-107"></span><span class="ansi1 ansi38-107"></span><span class="ansi1 ansi38-107 ansi48-0">a</span><span class="ansi38-83"></span><span class="ansi1 ansi38-83"></span><span class="ansi1 ansi38-83 ansi48-0">j</span><span class="ansi38-107"></span><span class="ansi1 ansi38-107"></span><span class="ansi1 ansi38-107 ansi48-0">l</span><span class="ansi38-78"></span><span class="ansi1 ansi38-78"></span><span class="ansi1 ansi38-78 ansi48-0">K</span><span class="ansi38-119"></span><span class="ansi1 ansi38-119"></span><span class="ansi1 ansi38-119 ansi48-0">8</span><span class="ansi38-113"></span><span class="ansi1 ansi38-113"></span><span class="ansi1 ansi38-113 ansi48-0">3</span><span class="ansi38-113"></span><span class="ansi1 ansi38-113"></span><span class="ansi1 ansi38-113 ansi48-0">0</span><span class="ansi38-107"></span><span class="ansi1 ansi38-107"></span><span class="ansi1 ansi38-107 ansi48-0">A</span><span class="ansi38-72"></span><span class="ansi1 ansi38-72"></span><span class="ansi1 ansi38-72 ansi48-0">K</span><span class="ansi38-83"></span><span class="ansi1 ansi38-83"></span><span class="ansi1 ansi38-83 ansi48-0">q</span><span class="ansi38-149"></span><span class="ansi1 ansi38-149"></span><span class="ansi1 ansi38-149 ansi48-0">t</span><span class="ansi38-107"></span><span class="ansi1 ansi38-107"></span><span class="ansi1 ansi38-107 ansi48-0">U</span><span class="ansi38-71"></span><span class="ansi1 ansi38-71"></span><span class="ansi1 ansi38-71 ansi48-0">5</span><span class="ansi38-83"></span><span class="ansi1 ansi38-83"></span><span class="ansi1 ansi38-83 ansi48-0">v</span><span class="ansi38-107"></span><span class="ansi1 ansi38-107"></span><span class="ansi1 ansi38-107 ansi48-0">0</span><span class="ansi38-83"></span><span class="ansi1 ansi38-83"></span><span class="ansi1 ansi38-83 ansi48-0">C</span><span class="ansi38-107"></span><span class="ansi1 ansi38-107"></span><span class="ansi1 ansi38-107 ansi48-0">9</span><span class="ansi38-83"></span><span class="ansi1 ansi38-83"></span><span class="ansi1 ansi38-83 ansi48-0">Y</span><span class="ansi38-107"></span><span class="ansi1 ansi38-107"></span><span class="ansi1 ansi38-107 ansi48-0">V</span><span class="ansi38-78"></span><span class="ansi1 ansi38-78"></span><span class="ansi1 ansi38-78 ansi48-0">9</span><span class="ansi38-119"></span><span class="ansi1 ansi38-119"></span><span class="ansi1 ansi38-119 ansi48-0">b</span><span class="ansi38-113"></span><span class="ansi1 ansi38-113"></span><span class="ansi1 ansi38-113 ansi48-0">Q</span><span class="ansi38-113"></span><span class="ansi1 ansi38-113"></span><span class="ansi1 ansi38-113 ansi48-0">n</span><span class="ansi38-107"></span><span class="ansi1 ansi38-107"></span><span class="ansi1 ansi38-107 ansi48-0">Z</span><span class="ansi38-72"></span><span class="ansi1 ansi38-72"></span><span class="ansi1 ansi38-72 ansi48-0">J</span><span class="ansi38-83"></span><span class="ansi1 ansi38-83"></span><span class="ansi1 ansi38-83 ansi48-0">1</span><span class="ansi38-149"></span><span class="ansi1 ansi38-149"></span><span class="ansi1 ansi38-149 ansi48-0">w</span><span class="ansi38-107"></span><span class="ansi1 ansi38-107"></span><span class="ansi1 ansi38-107 ansi48-0">G</span><span class="ansi38-71"></span><span class="ansi1 ansi38-71"></span><span class="ansi1 ansi38-71 ansi48-0">3</span><span class="ansi38-83"></span><span class="ansi1 ansi38-83"></span><span class="ansi1 ansi38-83 ansi48-0">q</span><span class="ansi38-107"></span><span class="ansi1 ansi38-107"></span><span class="ansi1 ansi38-107 ansi48-0">s</span><span class="ansi38-83"></span><span class="ansi1 ansi38-83"></span><span class="ansi1 ansi38-83 ansi48-0">l</span><span class="ansi38-107"></span><span class="ansi1 ansi38-107"></span><span class="ansi1 ansi38-107 ansi48-0">W</span><span class="ansi38-83"></span><span class="ansi1 ansi38-83"></span><span class="ansi1 ansi38-83 ansi48-0">9</span><span class="ansi38-107"></span><span class="ansi1 ansi38-107"></span><span class="ansi1 ansi38-107 ansi48-0">Z</span><span class="ansi38-78"></span><span class="ansi1 ansi38-78"></span><span class="ansi1 ansi38-78 ansi48-0">6</span>\n</pre>\n</body>\n\n</html>\n'
    """
    conv = Ansi2HTMLConverter(dark_bg=GLOBAL["dark_theme"], **kwargs)
    return conv.convert(ansi)
Ejemplo n.º 22
0
        def _wrap_errors(_):
            """Install traceback handling for callbacks"""
            self._traceback = sys.exc_info()[2]

            # Compute number of stack frames to skip to get down to callback
            tb_werkzeug = get_current_traceback()
            skip = 0
            if dev_tools_prune_errors:
                for i, line in enumerate(tb_werkzeug.plaintext.splitlines()):
                    if "%% callback invoked %%" in line:
                        skip = int((i + 1) / 2)
                        break

            # Customized formatargvalues function so we can place function parameters
            # on separate lines
            original_formatargvalues = inspect.formatargvalues
            inspect.formatargvalues = _custom_formatargvalues
            try:
                # Use IPython traceback formatting to build colored ANSI traceback
                # string
                ostream = io.StringIO()
                ipytb = FormattedTB(
                    tb_offset=skip,
                    mode="Verbose",
                    color_scheme="Linux",
                    include_vars=True,
                    ostream=ostream
                )
                ipytb()
            finally:
                # Restore formatargvalues
                inspect.formatargvalues = original_formatargvalues

            # Print colored ANSI representation if requested
            ansi_stacktrace = ostream.getvalue()

            if inline_exceptions:
                print(ansi_stacktrace)

            # Use ansi2html to convert the colored ANSI string to HTML
            conv = Ansi2HTMLConverter(scheme="ansi2html", dark_bg=False)
            html_str = conv.convert(ansi_stacktrace)

            # Set width to fit 75-character wide stack trace and font to a size the
            # won't require a horizontal scroll bar
            html_str = html_str.replace(
                '<html>',
                '<html style="width: 75ch; font-size: 0.86em">'
            )

            # Remove explicit background color so Dash dev-tools can set background
            # color
            html_str = re.sub("background-color:[^;]+;", "", html_str)

            return html_str, 500
Ejemplo n.º 23
0
Archivo: ansi.py Proyecto: dexy/dexy
    def process(self):
        conv = Ansi2HTMLConverter(inline=True,
                                  font_size=self.setting('font-size'))
        if self.setting('pre'):
            s = "<pre>\n%s</pre>\n"
        else:
            s = "%s\n"

        for k, v in self.input_data.items():
            self.output_data[k] = s % conv.convert(str(v), full=False)
        self.output_data.save()
Ejemplo n.º 24
0
def builder():
    form = BuilderForm()
    user_secrets = Secret.query.filter_by(user_id=current_user.id)
    print(current_user.id)
    print(user_secrets)
    if form.validate_on_submit():
        conv = Ansi2HTMLConverter()
        plan = get_terraform_plan()
        plan = conv.convert(plan.stdout)
        return render_template("plan.html", plan=plan)
    return render_template("builder.html", form=form, secrets=user_secrets)
Ejemplo n.º 25
0
def script_to_html(filename, output_filename):
    conv = Ansi2HTMLConverter(dark_bg=True, font_size=18)
    with open(filename, 'r') as f:
        ansi = f.read()
    ansi = ansi.decode('utf-8', errors='ignore')
    ansi = removebells(ansi)
    ansi = removebackspaces(ansi)
    html = conv.convert(ansi)

    with open(output_filename, 'w') as f:
        f.write(html.encode('utf8'))
Ejemplo n.º 26
0
def format_log(log):
    conv = Ansi2HTMLConverter(dark_bg=False,
                              scheme='solarized',
                              markup_lines=True)
    headers = conv.produce_headers()
    content = conv.convert(log, full=False)
    content = '<pre class="ansi2html-content">{}</pre>'.format(
        content.encode('utf8'))
    # content = '<div class="body_foreground body_background">{}</div>'.format(
    #    content)
    return headers + content
Ejemplo n.º 27
0
    def test_lighter_text(self):
        sample = "NORMAL\x1b[%dmLIGHTER\x1b[%dmBOLD\x1b[%dmNORMAL" % (
            ANSI_INTENSITY_REDUCED,
            ANSI_INTENSITY_INCREASED,
            ANSI_INTENSITY_NORMAL,
        )

        html = Ansi2HTMLConverter(inline=True).convert(sample, full=False)
        expected = 'NORMAL<span style="font-weight: lighter">LIGHTER</span><span style="font-weight: bold">BOLD</span>NORMAL'

        self.assertEqual(expected, html)
Ejemplo n.º 28
0
def stop_logging(outfile, old_stdout):
    """
    Stops logging to a file and returns the output to screen only
    """
    outfile.close()
    sys.stdout = old_stdout
    with open(outfile.name, 'r') as f:
        ansi = f.read()
    html = Ansi2HTMLConverter().convert(ansi)
    with open('{}.html'.format(outfile.name.split('.')[0]), 'w+') as f:
        f.write(html)
Ejemplo n.º 29
0
def gen_ansi_output():

    conv = Ansi2HTMLConverter()

    input_file = EXAMPLES_DIR / 'devtools_main.py'
    os.environ['PY_DEVTOOLS_HIGHLIGHT'] = 'true'
    p = subprocess.run((sys.executable, str(input_file)), stdout=subprocess.PIPE, check=True, encoding='utf8')
    html = conv.convert(p.stdout, full=False).strip('\r\n')
    full_html = f'<div class="terminal">\n<pre class="terminal-content">\n{html}\n</pre>\n</div>'
    path = TMP_EXAMPLES_DIR / f'{input_file.stem}.html'
    path.write_text(full_html)
    print(f'generated ansi output to {path}')
Ejemplo n.º 30
0
    def test_produce_headers(self):
        conv = Ansi2HTMLConverter()
        headers = conv.produce_headers().split("\n")

        inputfile = join(_here, "produce_headers.txt")
        with open(inputfile, "rb") as produce_headers:
            expected_data = produce_headers.readlines()

        for idx in xrange(len(expected_data)):
            expected = expected_data[idx].strip()
            actual = headers[idx].strip()
            self.assertEqual(expected, actual)