def h_cite(parser, buf, mac, args, delim, pos): opt1 = args[1] opt2 = args[2] if len(opt1) == 1 and type(opt1[0]) is defs.VoidToken: # only [] given opt1 = [] if opt2: pre = opt1 if len(opt2) == 1 and type(opt2[0]) is defs.VoidToken: # only [] given opt2 = [] post = opt2 else: pre = [] post = opt1 out = [defs.TextToken(pos, '[', pos_fix=True)] if pre: out += pre out.append(defs.SpaceToken(out[-1].pos, ' ', pos_fix=True)) out.append(defs.TextToken(out[-1].pos, cite_text, pos_fix=True)) if post: out += [ defs.TextToken(out[-1].pos, ',', pos_fix=True), defs.SpaceToken(out[-1].pos, ' ', pos_fix=True) ] out += post out += [ defs.TextToken(out[-1].pos, ']', pos_fix=True), defs.ActionToken(out[-1].pos) ] return out
def h_xyz(parser, buf, mac, args, delim, pos): return [ defs.TextToken(pos, str(len(args[0]))), defs.TextToken(pos, str(len(args[1]))), defs.TextToken(pos, str(len(args[2]))), defs.TextToken(pos, repr(type(args[1][0]) is defs.VoidToken)), defs.TextToken(pos, repr(type(args[2][0]) is defs.VoidToken)), ]
def h_footcite(parser, buf, mac, args, delim, pos): out = [defs.MacroToken(pos, '\\footnote'), defs.SpecialToken(pos, '{')] out += h_cite(parser, buf, mac, args, delim, pos) out += [ defs.TextToken(out[-1].pos, '.', pos_fix=True), defs.SpecialToken(out[-1].pos, '}'), defs.ActionToken(out[-1].pos) ] return out
def modify_description(parser, toks): toks = cap_first(toks) txt = parser.get_text_expanded(toks) if txt and txt[-1] not in ('.', '!', '?'): toks.append(defs.TextToken(toks[-1].pos, '.', pos_fix=True)) return toks