Beispiel #1
0
 def testMacroArgs(self):
     abcd = ['a', 'b', 'c', 'd']
     abcd_dict = {'a': '1', 'b': '2', 'c': '3', 'd': '4'}
     tests = [
         # regular and quoting tests
         ('d = 4,c=3,b=2,a= 1 ', ([], abcd_dict, [])),
         ('a,b,c,d', (abcd, {}, [])),
         (' a , b , c , d ', (abcd, {}, [])),
         ('   a   ', (['a'], {}, [])),
         ('"  a  "', (['  a  '], {}, [])),
         ('a,b,c,d, "a,b,c,d"', (abcd + ['a,b,c,d'], {}, [])),
         ('quote " :), b', (['quote " :)', 'b'], {}, [])),
         ('"quote "" :)", b', (['quote " :)', 'b'], {}, [])),
         ('=7', ([], {'': '7'}, [])),
         (',,', ([None, None, None], {}, [])),
         (',"",', ([None, '', None], {}, [])),
         (',"", ""', ([None, '', ''], {}, [])),
         ('  ""  ,"", ""', (['', '', ''], {}, [])),
         # some name=value test
         ('d = 4,c=3,b=2,a= 1 ', ([], abcd_dict, [])),
         ('d=d,e="a,b,c,d"', ([], {'d': 'd', 'e': 'a,b,c,d'}, [])),
         ('d = d,e = "a,b,c,d"', ([], {'d': 'd', 'e': 'a,b,c,d'}, [])),
         ('d = d, e = "a,b,c,d"', ([], {'d': 'd', 'e': 'a,b,c,d'}, [])),
         ('d = , e = "a,b,c,d"', ([], {'d': None, 'e': 'a,b,c,d'}, [])),
         ('d = "", e = "a,b,c,d"', ([], {'d': '', 'e': 'a,b,c,d'}, [])),
         ('d = "", e = ', ([], {'d': '', 'e': None}, [])),
         ('d=""', ([], {'d': ''}, [])),
         ('d = "", e = ""', ([], {'d': '', 'e': ''}, [])),
         # no, None as key isn't accepted
         (' = "",  e = ""', ([], {'': '', 'e': ''}, [])),
         # can quote both name and value:
         ('d = d," e "= "a,b,c,d"', ([], {'d': 'd', ' e ': 'a,b,c,d'}, [])),
         # trailing args
         ('1,2,a=b,3,4', (['1', '2'], {'a': 'b'}, ['3', '4'])),
         # can quote quotes:
         ('d = """d"', ([], {'d': '"d'}, [])),
         ('d = """d"""', ([], {'d': '"d"'}, [])),
         ('d = "d"" ", e=7', ([], {'d': 'd" ', 'e': '7'}, [])),
         ('d = "d""", e=8', ([], {'d': 'd"', 'e': '8'}, [])),
     ]
     for args, expected in tests:
         result = paramparser.parse_quoted_separated(args)
         assert expected == result
         for val in result[0]:
             assert val is None or isinstance(val, str)
         for val in result[1].keys():
             assert val is None or isinstance(val, str)
         for val in result[1].values():
             assert val is None or isinstance(val, str)
         for val in result[2]:
             assert val is None or isinstance(val, str)
Beispiel #2
0
def parseargs(args, defpagename, defyear, defmonth, defoffset, defheight6, defanniversary):
    """ parse macro arguments """
    _, args, _ = paramparser.parse_quoted_separated(args)
    parmpagename = paramparser.get_str(args.get('item'), 'item', defpagename)
    parmyear = paramparser.get_int(args.get('year'), 'year', defyear)
    parmmonth = paramparser.get_int(args.get('month'), 'month', defmonth)
    parmoffset = paramparser.get_int(args.get('month_offset'), 'month_offset', defoffset)
    parmheight6 = paramparser.get_bool(args.get('fixed_height'), 'fixed_height', defheight6)
    parmanniversary = paramparser.get_bool(args.get('anniversary'), 'anniversary', defanniversary)

    # multiple pagenames separated by "*" - split into list of pagenames
    parmpagename = re.split(r'\*', parmpagename)

    return parmpagename, parmyear, parmmonth, parmoffset, parmheight6, parmanniversary
Beispiel #3
0
 def testLimited(self):
     tests = [
         # regular and quoting tests
         ('d = 4,c=3,b=2,a= 1 ', ([], {'d': '4', 'c': '3,b=2,a= 1'}, [])),
         ('a,b,c,d', (['a', 'b,c,d'], {}, [])),
         ('a=b,b,c,d', ([], {'a': 'b'}, ['b,c,d'])),
     ]
     for args, expected in tests:
         result = paramparser.parse_quoted_separated(args, seplimit=1)
         assert expected == result
         for val in result[0]:
             assert val is None or isinstance(val, str)
         for val in result[1].keys():
             assert val is None or isinstance(val, str)
         for val in result[1].values():
             assert val is None or isinstance(val, str)
         for val in result[2]:
             assert val is None or isinstance(val, str)
Beispiel #4
0
 def testNoNameValue(self):
     abcd = ['a', 'b', 'c', 'd']
     tests = [
         # regular and quoting tests
         ('d = 4,c=3,b=2,a= 1 ', ['d = 4', 'c=3', 'b=2', 'a= 1']),
         ('a,b,c,d', abcd),
         (' a , b , c , d ', abcd),
         ('   a   ', ['a']),
         ('"  a  "', ['  a  ']),
         ('a,b,c,d, "a,b,c,d"', abcd + ['a,b,c,d']),
         ('quote " :), b', ['quote " :)', 'b']),
         ('"quote "" :)", b', ['quote " :)', 'b']),
         ('"unended quote', ['"unended quote']),
         ('"', ['"']),
         ('d=d,e="a,b,c,d"', ['d=d', 'e="a', 'b', 'c', 'd"']),
     ]
     for args, expected in tests:
         result = paramparser.parse_quoted_separated(args, name_value=False)
         assert expected == result
         for val in result:
             assert val is None or isinstance(val, str)
Beispiel #5
0
def parseargs_legacy(args, defpagename, defyear, defmonth, defoffset,
                     defoffset2, defheight6, defanniversary, deftemplate):
    """ Slightly modified parsing function from MonthCalendar.py in moin-1.9

    From the moin-1.9 version of the function
    * the request argument was dropped
    * get_unicode was changed to get_str
    """
    args = paramparser.parse_quoted_separated(args, name_value=False)
    args += [None] * 8  # fill up with None to trigger defaults
    parmpagename, parmyear, parmmonth, parmoffset, parmoffset2, parmheight6, parmanniversary, parmtemplate = args[:
                                                                                                                  8]
    parmpagename = paramparser.get_str(parmpagename, 'pagename', defpagename)
    parmyear = paramparser.get_int(parmyear, 'year', defyear)
    parmmonth = paramparser.get_int(parmmonth, 'month', defmonth)
    parmoffset = paramparser.get_int(parmoffset, 'offset', defoffset)
    parmoffset2 = paramparser.get_int(parmoffset2, 'offset2', defoffset2)
    parmheight6 = paramparser.get_bool(parmheight6, 'height6', defheight6)
    parmanniversary = paramparser.get_bool(parmanniversary, 'anniversary',
                                           defanniversary)
    parmtemplate = paramparser.get_str(parmtemplate, 'template', deftemplate)

    return parmpagename, parmyear, parmmonth, parmoffset, parmoffset2, parmheight6, parmanniversary, parmtemplate
Beispiel #6
0
 def testDoubleNameValueSeparator(self, args, expected):
     result = paramparser.parse_quoted_separated(args)
     assert result == expected