Functioning 1-tall, 2-tall selections in place.

This commit is contained in:
Griatch 2015-09-09 20:29:30 +02:00
parent 06411f298f
commit bb658d1d4a

View file

@ -164,6 +164,8 @@ def ordered_permutation_regex(sentence):
"the very tall man", "the very tall", "very tall man", "the very tall man", "the very tall", "very tall man",
"very tall", "the very", "tall man", "the", "very", "tall", "very tall", "the very", "tall man", "the", "very", "tall",
and "man". and "man".
We also add regex to make sure it also accepts num-specifiers,
like /2-tall.
""" """
# escape {#nnn} markers from sentence, replace with nnn # escape {#nnn} markers from sentence, replace with nnn
@ -183,10 +185,10 @@ def ordered_permutation_regex(sentence):
elif comb: elif comb:
break break
if comb: if comb:
solution.append(_PREFIX + " ".join(comb)) solution.append(_PREFIX + r"[0-9]*%s*" % _NUM_SEP + " ".join(comb))
# compile into a match regex, first matching the longest down to the shortest components # compile into a match regex, first matching the longest down to the shortest components
regex = r"|".join(sorted(set(solution), key=lambda o:len(o), reverse=True))#, re.MULTILINE + re.IGNORECASE + re.UNICODE regex = r"|".join(sorted(set(solution), key=lambda o:len(o), reverse=True))
return regex return regex
@ -314,9 +316,10 @@ def parse_sdescs_and_recogs(sender, candidates, emote):
# first see if there is a number given (e.g. 1-tall) # first see if there is a number given (e.g. 1-tall)
num_identifier, _ = marker_match.groups("") # return "" if no match, rather than None num_identifier, _ = marker_match.groups("") # return "" if no match, rather than None
print "num_identifier", num_identifier
istart0 = marker_match.start() istart0 = marker_match.start()
# +1 for _NUM_SEP, if defined # +1 for _NUM_SEP, if defined
istart = istart0 + (len(num_identifier) + 1 if num_identifier else 0) istart = istart0 #+ (len(num_identifier) + 1 if num_identifier else 0)
print "marker match:", marker_match.group(), istart0, istart, emote[istart:] print "marker match:", marker_match.group(), istart0, istart, emote[istart:]
#print "candidates:", [tup[2] for tup in candidate_regexes] #print "candidates:", [tup[2] for tup in candidate_regexes]