<commit_before># -*- coding: utf-8 -*-
"""
    pyboleto.html
    ~~~~~~~~~~~~

    Classe Responsável por fazer o output do boleto em html.

    :copyright: © 2012 by <NAME>
    :license: BSD, see LICENSE for more details.

"""
import os
import string
from itertools import izip_longest, chain

DIGITS = [
    ['n', 'n', 'w', 'w', 'n'],
    ['w', 'n', 'n', 'n', 'w'],
    ['n', 'w', 'n', 'n', 'w'],
    ['w', 'w', 'n', 'n', 'n'],
    ['n', 'n', 'w', 'n', 'w'],
    ['w', 'n', 'w', 'n', 'n'],
    ['n', 'w', 'w', 'n', 'n'],
    ['n', 'n', 'n', 'w', 'w'],
    ['w', 'n', 'n', 'w', 'n'],
    ['n', 'w', 'n', 'w', 'n'],
]


class BoletoHTML(object):
    """Geração do Boleto em HTML

    Esta classe é responsável por imprimir o boleto em HTML.
    Outras classes podem ser implementadas no futuro com a mesma interface,
    para fazer output em LaTeX, etc ...

    Esta classe pode imprimir boletos em formato de carnê (2 boletos por
    página) ou em formato de folha cheia.

    :param file_descr: Um arquivo ou *file-like* class.
    :param landscape: Formato da folha. Usar ``True`` para boleto
        tipo carnê.

    """

    def __init__(self, file_descr, landscape=False):
        # Tamanhos em px
        self.width = 750
        self.widthCanhoto = 0
        self.fontSizeTitle = 9
        self.heightLine = 27
        self.fontSizeValue = 12
        self.title = 'Boleto bancário'
        self.fileDescr = file_descr

        if landscape:
            raise NotImplementedError('Em desenvolvimento...')
        else:
            tpl = string.Template(self._load_template('head.html'))
            self.html = tpl.substitute(title=self.title, width=self.width,
                                       font_size_value=self.fontSizeValue,
                                       height_line=self.heightLine,
                                       font_size_title=self.fontSizeTitle)

    def _load_template(self, template):
        pyboleto_dir = os.path.dirname(os.path.abspath(__file__))
        template_path = os.path.join(pyboleto_dir, 'templates', template)
        with open(template_path, 'r') as tpl:
            template_content = tpl.read()
        return template_content

    def _load_image(self, logo_image):
        pyboleto_dir = os.path.dirname(os.path.abspath(__file__))
        image_path = os.path.join(pyboleto_dir, 'media', logo_image)
        return image_path

    def _drawReciboSacado(self, boletoDados):
        """Imprime o Recibo do Sacado para modelo de página inteira

        :param boletoDados: Objeto com os dados do boleto a ser preenchido.
            Deve ser subclasse de :class:`pyboleto.data.BoletoData`
        :type boletoDados: :class:`pyboleto.data.BoletoData`

        """
        tpl = string.Template(self._load_template('recibo_sacado.html'))
        tpl_data = {}

        # Cabeçalho
        tpl_data['logo_img'] = ''
        if boletoDados.logo_image:
            tpl_data['logo_img'] = self._load_image(boletoDados.logo_image)
        tpl_data['codigo_dv_banco'] = boletoDados.codigo_dv_banco

        # Corpo
        tpl_data['cedente'] = boletoDados.cedente
        tpl_data['agencia_conta_cedente'] = boletoDados.agencia_conta_cedente
        tpl_data['cedente_documento'] = boletoDados.cedente_documento

        data_vencimento = boletoDados.data_vencimento
        tpl_data['data_vencimento'] = data_vencimento.strftime('%d/%m/%Y')
        tpl_data['sacado'] = boletoDados.sacado[0]
        tpl_data['nosso_numero_format'] = boletoDados.format_nosso_numero()
        tpl_data['numero_documento'] = boletoDados.numero_documento

        data_documento = boletoDados.data_documento
        tpl_data['data_documento'] = data_documento
        tpl_data['cedente_endereco'] = boletoDados.cedente_endereco

        valor_doc = self._formataValorParaExibir(boletoDados.valor_documento)
        tpl_data['valor_documento'] = valor_doc

        # Demonstrativo
        tpl_data['demonstrativo'] = ''
        for dm in boletoDados.demonstrativo:
            tpl_data['demonstrativo'] += '<p>{0}</p>'.format(dm)

        self.html += tpl.substitute(tpl_data)<commit_msg>data_documento fixed, criacao automatica da pasta<commit_after># -*- coding: utf-8 -*-
"""
    pyboleto.html
    ~~~~~~~~~~~~

    Classe Responsável por fazer o output do boleto em html.

    :copyright: © 2012 by <NAME>
    :license: BSD, see LICENSE for more details.

"""
import os
import string
from itertools import izip_longest, chain

DIGITS = [
    ['n', 'n', 'w', 'w', 'n'],
    ['w', 'n', 'n', 'n', 'w'],
    ['n', 'w', 'n', 'n', 'w'],
    ['w', 'w', 'n', 'n', 'n'],
    ['n', 'n', 'w', 'n', 'w'],
    ['w', 'n', 'w', 'n', 'n'],
    ['n', 'w', 'w', 'n', 'n'],
    ['n', 'n', 'n', 'w', 'w'],
    ['w', 'n', 'n', 'w', 'n'],
    ['n', 'w', 'n', 'w', 'n'],
]


class BoletoHTML(object):
    """Geração do Boleto em HTML

    Esta classe é responsável por imprimir o boleto em HTML.
    Outras classes podem ser implementadas no futuro com a mesma interface,
    para fazer output em LaTeX, etc ...

    Esta classe pode imprimir boletos em formato de carnê (2 boletos por
    página) ou em formato de folha cheia.

    :param file_descr: Um arquivo ou *file-like* class.
    :param landscape: Formato da folha. Usar ``True`` para boleto
        tipo carnê.

    """

    def __init__(self, file_descr, landscape=False):
        # Tamanhos em px
        self.width = 750
        self.widthCanhoto = 0
        self.fontSizeTitle = 9
        self.heightLine = 27
        self.fontSizeValue = 12
        self.title = 'Boleto bancário'
        self.fileDescr = file_descr

        if landscape:
            raise NotImplementedError('Em desenvolvimento...')
        else:
            tpl = string.Template(self._load_template('head.html'))
            self.html = tpl.substitute(title=self.title, width=self.width,
                                       font_size_value=self.fontSizeValue,
                                       height_line=self.heightLine,
                                       font_size_title=self.fontSizeTitle)

    def _load_template(self, template):
        pyboleto_dir = os.path.dirname(os.path.abspath(__file__))
        template_path = os.path.join(pyboleto_dir, 'templates', template)
        with open(template_path, 'r') as tpl:
            template_content = tpl.read()
        return template_content

    def _load_image(self, logo_image):
        pyboleto_dir = os.path.dirname(os.path.abspath(__file__))
        image_path = os.path.join(pyboleto_dir, 'media', logo_image)
        return image_path

    def _drawReciboSacado(self, boletoDados):
        """Imprime o Recibo do Sacado para modelo de página inteira

        :param boletoDados: Objeto com os dados do boleto a ser preenchido.
            Deve ser subclasse de :class:`pyboleto.data.BoletoData`
        :type boletoDados: :class:`pyboleto.data.BoletoData`

        """
        tpl = string.Template(self._load_template('recibo_sacado.html'))
        tpl_data = {}

        # Cabeçalho
        tpl_data['logo_img'] = ''
        if boletoDados.logo_image:
            tpl_data['logo_img'] = self._load_image(boletoDados.logo_image)
        tpl_data['codigo_dv_banco'] = boletoDados.codigo_dv_banco

        # Corpo
        tpl_data['cedente'] = boletoDados.cedente
        tpl_data['agencia_conta_cedente'] = boletoDados.agencia_conta_cedente
        tpl_data['cedente_documento'] = boletoDados.cedente_documento

        data_vencimento = boletoDados.data_vencimento
        tpl_data['data_vencimento'] = data_vencimento.strftime('%d/%m/%Y')
        tpl_data['sacado'] = boletoDados.sacado[0]
        tpl_data['nosso_numero_format'] = boletoDados.format_nosso_numero()
        tpl_data['numero_documento'] = boletoDados.numero_documento

        data_documento = boletoDados.data_documento
        tpl_data['data_documento'] = data_documento.strftime('%d/%m/%Y')
        tpl_data['cedente_endereco'] = boletoDados.cedente_endereco

        valor_doc = self._formataValorParaExibir(boletoDados.valor_documento)
        tpl_data['valor_documento'] = valor_doc

        # Demonstrativo
        tpl_data['demonstrativo'] = ''
        for dm in boletoDados.demonstrativo:
            tpl_data['demonstrativo'] += '<p>{0}</p>'.format(dm)

        self.html += tpl.substitute(tpl_data)
{'fraction_non_alphanumeric': 0.1319118178532707, 'fraction_numerical': 0.004095892061197446, 'mean_word_length': 2.6269113149847096, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '61175', 'n_tokens_mistral': 3003, 'n_tokens_neox': 2886, 'n_words': 608}