# Path: opentaxforms/ut.py
# NL = '\n'
# TAB = '\t'
# def merge(bb1, bb2):
# def numerify(s):
# def compactify(multilineRegex):
#     def crunch(seg):
# def pickle(data, pickleFilePrefix):
# def unpickle(pickleFilePrefix, default=None):
# def flattened(l):
# def hasdups(l, key=None):
# def uniqify(l):
# def uniqify2(l):
# def setupLogging(loggerId, args=None):
# def unsetupLogging():
# def logg(msg, outputs=None):
# def jj(*args, **kw):
# def jdb(*args, **kw):
# def run0(cmd):
# def run(cmd, logprefix='run', loglevel='INFO'):
#     def __init__(self, pkgname, fpath=None):
#     def path(self):
#     def content(self):
#     def keys(cls):
#     def vals(cls):
#     def items(cls):
#     def __init__(self):
#     def __call__(self, **kw):
#     def __init__(self, *maps, **kw):
#     def _getGetitems(self, mapp):
#     def __getitem__(self, key):
#     def __setitem__(self, key, val):
#     def __len__(self):
#     def __call__(self, *keys):
#     def clear(self):
#     def update(self, *maps):
#     def __add__(self, *maps):
#     def __iadd__(self, *maps):
#     def __iter__(self):
#     def iterkeys(self):
#     def keys(self):
#     def values(self):
#     def items(self):
#     def iteritems(self):
#     def get(self, key, dflt=None):
#     def __str__(self):
#     def __repr__(self):
# def notequalpatch(self, o):
#     def fromstring(cls, s):
#     def __hash__(self):
# def playQnty():
# def nth(n):
# def skip(s, substr):
# def until(s, substr):
# def ensure_dir(folder):
# def now(format=None):
# def readImgSize(fname, dirName):
# def asciiOnly(s):
# class NoSuchPickle(Exception):
# class PickleException(Exception):
# class Resource(object):
# class CharEnum(object):
# class ChainablyUpdatableOrderedDict(odict):
# class Bag(object):
# class Qnty(qq):


import re
import six
from . import ut, irs
from .ut import log, jj, numerify
        #     Line 6. ... If line 5 is larger than line 4, enter -0-.
        # constants [see parseCommand]
        #     f8814/line5  Base amount. $2,100.
        #     f8814/line13 Amount not taxed. $1,050.
        # many places
        #     Enter the result here and on Form...
        op, terms = self.op, self.terms
        cmd = 'enter'
        seekConstant=re.match(r'^\$?(\d+)(?:,?(\d+))?$',s)
        if s == 'zero':
            s = '-0-'
        elif seekConstant:
            constant=''.join((string or '') for string in seekConstant.groups())
            self.op = '='
            self.terms = [constant]
        elif cond and s.startswith('the difference here'):
            op = '-'
            m1 = re.match(
              r'(line \w+) '
              r'is (less|more|larger|smaller|greater) than '
              r'(line \w+)', cond)
            if m1:
                lineA, cmpOp, lineB = m1.groups()
                if cmpOp in ('more', 'larger', 'greater'):
                    terms = [lineA, lineB]
                else:
                    terms = [lineB, lineA]
                self.terms = terms
                self.op = op       # todo suspect!  removeme
            else:

# Path: opentaxforms/ut.py
# NL = '\n'
# TAB = '\t'
# def merge(bb1, bb2):
# def numerify(s):
# def compactify(multilineRegex):
#     def crunch(seg):
# def pickle(data, pickleFilePrefix):
# def unpickle(pickleFilePrefix, default=None):
# def flattened(l):
# def hasdups(l, key=None):
# def uniqify(l):
# def uniqify2(l):
# def setupLogging(loggerId, args=None):
# def unsetupLogging():
# def logg(msg, outputs=None):
# def jj(*args, **kw):
# def jdb(*args, **kw):
# def run0(cmd):
# def run(cmd, logprefix='run', loglevel='INFO'):
#     def __init__(self, pkgname, fpath=None):
#     def path(self):
#     def content(self):
#     def keys(cls):
#     def vals(cls):
#     def items(cls):
#     def __init__(self):
#     def __call__(self, **kw):
#     def __init__(self, *maps, **kw):
#     def _getGetitems(self, mapp):
#     def __getitem__(self, key):
#     def __setitem__(self, key, val):
#     def __len__(self):
#     def __call__(self, *keys):
#     def clear(self):
#     def update(self, *maps):
#     def __add__(self, *maps):
#     def __iadd__(self, *maps):
#     def __iter__(self):
#     def iterkeys(self):
#     def keys(self):
#     def values(self):
#     def items(self):
#     def iteritems(self):
#     def get(self, key, dflt=None):
#     def __str__(self):
#     def __repr__(self):
# def notequalpatch(self, o):
#     def fromstring(cls, s):
#     def __hash__(self):
# def playQnty():
# def nth(n):
# def skip(s, substr):
# def until(s, substr):
# def ensure_dir(folder):
# def now(format=None):
# def readImgSize(fname, dirName):
# def asciiOnly(s):
# class NoSuchPickle(Exception):
# class PickleException(Exception):
# class Resource(object):
# class CharEnum(object):
# class ChainablyUpdatableOrderedDict(odict):
# class Bag(object):
# class Qnty(qq):


# Path: opentaxforms/cmds.py
import re
import six
from . import ut, irs
from .ut import log, jj, numerify

        #     Line 6. ... If line 5 is larger than line 4, enter -0-.
        # constants [see parseCommand]
        #     f8814/line5  Base amount. $2,100.
        #     f8814/line13 Amount not taxed. $1,050.
        # many places
        #     Enter the result here and on Form...
        op, terms = self.op, self.terms
        cmd = 'enter'
        seekConstant=re.match(r'^\$?(\d+)(?:,?(\d+))?$',s)
        if s == 'zero':
            s = '-0-'
        elif seekConstant:
            constant=''.join((string or '') for string in seekConstant.groups())
            self.op = '='
            self.terms = [constant]
        elif cond and s.startswith('the difference here'):
            op = '-'
            m1 = re.match(
              r'(line \w+) '
              r'is (less|more|larger|smaller|greater) than '
              r'(line \w+)', cond)
            if m1:
                lineA, cmpOp, lineB = m1.groups()
                if cmpOp in ('more', 'larger', 'greater'):
                    terms = [lineA, lineB]
                else:
                    terms = [lineB, lineA]
                self.terms = terms
                self.op = op       # todo suspect!  removeme
            else:

                msg = jj('cannotParseMath: cannot parse math: cmd,s,cond:',