import re
import sqlite3
import logging
logger = logging.getLogger(__name__)
import common
'''

'''

def newdb(name):
    '''
    create a brand new database
    >>> c = newdb(':memory:')
    '''
    assert isinstance(name,str)
    conn = common.newdb(name)
    sql = open('grid.sql').read()
    conn.executescript(sql)
    conn.commit()
    return conn

def DrawSprite(tileLst=[],symDict=[]):
    '''
    >>> DrawSprite([('',0,0),('',1,1),('',-1,-1)])
    ['#', ' #', '  #']
    '''
    SpriteTxt = []
    cx, cy = 0, 0
    for symbol,col,row in tileLst:
        while row < cy:
            SpriteTxt.insert(0,'')
            cy -= 1
        while col < cx:
            SpriteTxt = [' '+Line for Line in SpriteTxt]
            cx -= 1
        rx,ry = col - cx, row - cy
        while len(SpriteTxt) <= ry:
            SpriteTxt.append('')
        while len(SpriteTxt[ry]) <= rx:
            SpriteTxt[ry] += ' '
        c = symDict[symbol] if symbol in symDict else '#'
        SpriteTxt[ry] = SpriteTxt[ry][:rx]+c+SpriteTxt[ry][rx+1:]
    return SpriteTxt

def getSprite(conn,name):
    '''
    >>> conn = newdb(':memory:')
    >>> DrawSprite(getSprite(conn,'N0!D'))
    ['  ##', '######', '# ## #', '  ##', ' #  #', '##  ##']
    '''
    assert isinstance(name,str)
    cursor = conn.cursor()
    sql = 'SELECT symbol,col,row FROM sprite WHERE name=\'%s\'' % name
    logger.debug(sql)
    valLst = [  (symbol,col,row)
                for symbol,col,row in cursor.execute(sql)   ]
    return valLst


if __name__ == '__main__':
    import doctest
    logging.basicConfig(filename='grid.log',level=logging.DEBUG)
    doctest.testmod()
