def get_version(text): version_string = h.right(h.token("SW: Version "), h.sepBy(alphanumeric, h.ch('.'))) version = h.whitespace(version_string) parser = h.action(version, tuple_string) for i in text.split("\n"): ret = parser.parse(i.encode('ascii','ignore')) if ret is not None: return {'os_version': ".".join(ret)}
def init_parser(): # CORE digit = h.ch_range(0x30, 0x39) alpha = h.choice(h.ch_range(0x41, 0x5a), h.ch_range(0x61, 0x7a)) # AUX. plus = h.ch(b'+') slash = h.ch(b'/') equals = h.ch(b'=') bsfdig = h.choice(alpha, digit, plus, slash) bsfdig_4bit = h.in_(b'AEIMQUYcgkosw048') bsfdig_2bit = h.in_(b'AQgw') base64_3 = h.repeat_n(bsfdig, 4) base64_2 = h.sequence(bsfdig, bsfdig, bsfdig_4bit, equals) base64_1 = h.sequence(bsfdig, bsfdig_2bit, equals, equals) base64 = h.sequence(h.many(base64_3), h.optional(h.choice(base64_2, base64_1))) return h.sequence(h.whitespace(base64), h.whitespace(h.end_p()))
def init_parser(): # CORE digit = h.ch_range(0x30, 0x39) alpha = h.choice(h.ch_range(0x41, 0x5a), h.ch_range(0x61, 0x7a)) # AUX. plus = h.ch('+') slash = h.ch('/') equals = h.ch('=') bsfdig = h.choice(alpha, digit, plus, slash) bsfdig_4bit = h.in_('AEIMQUYcgkosw048') bsfdig_2bit = h.in_('AQgw') base64_3 = h.repeat_n(bsfdig, 4) base64_2 = h.sequence(bsfdig, bsfdig, bsfdig_4bit, equals) base64_1 = h.sequence(bsfdig, bsfdig_2bit, equals, equals) base64 = h.sequence(h.many(base64_3), h.optional(h.choice(base64_2, base64_1))) return h.sequence(h.whitespace(base64), h.whitespace(h.end_p()))
def setUpClass(cls): cls.parser = h.sequence(h.ch("a"), h.whitespace(h.ch("b")))
def setUpClass(cls): cls.parser = h.whitespace(h.end_p())
def setUpClass(cls): cls.parser = h.whitespace(h.ch("a"))
def setUpClass(cls): cls.parser = h.sequence(h.ch(b"a"), h.whitespace(h.ch(b"b")))
def setUpClass(cls): cls.parser = h.whitespace(h.ch(b"a"))