def pack_regexp(self, pkt, fragments, **k): value = getattr(pkt, self.field_name) is_literal = not isinstance(value, Any) if is_literal: self.pack(pkt, fragments, **k) else: f = FragmentsOfRegexps() try: self.prototype_field.pack_regexp(pkt, f, **k) subregexp = f.assemble_regexp() except: subregexp = ".*" fragments.append("(%s)?" % subregexp, is_literal=False) return fragments
def as_regular_expression(self, debug=False): fragments = FragmentsOfRegexps() stack = [] self.as_regular_expression_impl(fragments, stack) return re.compile("(?s)" + fragments.assemble_regexp(), re.DEBUG if debug else 0)