#!/usr/bin/env python3
#
# mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
# Copyright (C)2013-2016 Philemon <mmgen-py@yandex.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
"""
mmgen.node_tools.Util: utility functions for MMGen node tools
"""

import time,subprocess
from mmgen.util import msg

def get_hms(t=None,utc=False,no_secs=False):
	secs = t or time.time()
	ret = (time.localtime,time.gmtime)[utc](secs)
	fs,n = (('{:02}:{:02}:{:02}',6),('{:02}:{:02}',5))[no_secs]
	return fs.format(*ret[3:n])

def get_day_hms(t=None,utc=False):
	secs = t or time.time()
	ret = (time.localtime,time.gmtime)[utc](secs)
	return '{:04}-{:02}-{:02} {:02}:{:02}:{:02}'.format(*ret[0:6])

def do_system(cmd,testing=False,shell=False):
	if testing:
		msg("Would execute: '%s'" % cmd)
		return True
	else:
		return subprocess.call((cmd if shell else cmd.split()),shell,stderr=subprocess.PIPE)

def get_url(url,gzip_ok=False,proxy=None,timeout=60,verbose=False,debug=False):
	if debug:
		print('get_url():')
		print('  url', url)
		print('  gzip_ok:',gzip_ok, 'proxy:',proxy, 'timeout:',timeout, 'verbose:',verbose)
	import pycurl,io
	c = pycurl.Curl()
	c_out = io.StringIO()
	c.setopt(pycurl.WRITEFUNCTION,c_out.write)
	c.setopt(pycurl.TIMEOUT,timeout)
	c.setopt(pycurl.FOLLOWLOCATION,True)
	c.setopt(pycurl.COOKIEFILE,'')
	c.setopt(pycurl.VERBOSE,verbose)
	if gzip_ok:
		c.setopt(pycurl.USERAGENT,'Lynx/2.8.9dev.8 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/3.4.9')
		c.setopt(pycurl.HTTPHEADER, [
	'Accept: text/html, text/plain, text/sgml, text/css, application/xhtml+xml, */*;q=0.01',
	'Accept-Encoding: gzip',
	'Accept-Language: en']
		)
	if proxy:
		c.setopt(pycurl.PROXY,proxy)
	c.setopt(pycurl.URL,url)
	c.perform()
	text = c_out.getvalue()
	if text[:2] == '\x1f\x8b': # gzip magic number
		c_out.seek(0,0)
		import gzip
		with gzip.GzipFile(fileobj=c_out) as f:
			text = f.read()
	c_out.close()
	c.close()
	return text

# big_digits = """
#  ███    █    ███   ███     █  █████  ███  █████  ███   ███
# █   █  ██   █   █     █   ██  █     █         █ █   █ █   █
# █   █   █     ██    ██   █ █  ████  ████     █   ███   ████
# █   █   █    █        █ ████      █ █   █   █   █   █     █
#  ███    █   █████  ███     █  ████   ███   █     ███   ███   ██
#
# """

big_digits = {
	'w': 7, 'h': 6, 'n': 10, 'nums': """
 ████     █    ████   ████      █  █████   ████  ██████  ████   ████
█    █   ██   █    █      █    ██  █      █           █ █    █ █    █
█    █    █       █    ███    █ █  ████   █████      █   ████   █████
█    █    █     ██        █  █  █      █  █    █    █   █    █      █
█    █    █    █          █ █████      █  █    █   █    █    █      █
 ████     █   ██████  ████      █  ████    ████   █      ████   ████
""",
	'pw': 5, 'pn': 2, 'punc': """


      ██

      ██
 ██
"""
}

_bnums_c,_bpunc_c = [[l.strip('\n') + ' ' * (big_digits[m]*big_digits['n'])
	for l in big_digits[k][1:].split('\n')]
		for k,m in (('nums','w'),('punc','pw'))]

_bnums_n,_bpunc_n = [[[l[0+(j*w):w+(j*w)] for l in i]
					for j in range(big_digits[n])] for n,w,i in
						(('n',big_digits['w'],_bnums_c),('pn',big_digits['pw'],_bpunc_c))]

def display_big_digits(s,pre='',suf=''):
	s = [int((d,10,11)[(d in '.:')+(d==':')]) for d in s]
	return pre + ('\n'+pre).join(
		[''.join([(_bnums_n+_bpunc_n)[d][l] for d in s]) + suf for l in range(big_digits['h'])]
	)

if __name__ == '__main__':
	num = '2345.17'
	print(display_big_digits(num,pre='+ ',suf='  +'))
