from machine import Context STATE_OUT, STATE_USER, STATE_DOMAIN, STATE_DOMAIN_CONT, STATE_DOT, STATE_USER_DASH, STATE_DOM_DASH, STATE_END = range(7) SMB_BEGIN = string.lowercase + string.digits + '_' SMB_CONT = SMB_BEGIN + '-' SMB_CONT_USER = SMB_CONT + '.' cont = Context() class email(namedtuple('email', ['user', 'domain'])): def __str__(self): return "username[%s] at domain[%s]" % (self.user, self.domain) cont.state_noaction(STATE_OUT, (False, STATE_END)) cont.state_noaction(STATE_OUT, (string.whitespace, STATE_OUT)) @cont.state(STATE_OUT, (SMB_BEGIN, STATE_USER)) def handler(char, context): context.username = char @cont.state(STATE_USER, (SMB_BEGIN, STATE_USER)) @cont.state(STATE_USER, ('-', STATE_USER_DASH)) def handler(char, context): context.username += char cont.state_noaction(STATE_USER, ('@', STATE_DOMAIN)) cont.state_noaction(STATE_USER, (False, STATE_END)) @cont.state(STATE_USER_DASH, ('-', STATE_USER_DASH)) @cont.state(STATE_USER_DASH, (SMB_BEGIN, STATE_USER)) def handler(char, context):
import sys import string from collections import namedtuple from machine import Context STATE_OUT, STATE_SECTION_NAME, STATE_SECTION_NAME_FINISHED, STATE_INSIDE_SECTION, STATE_SECTION_VALUE, STATE_PROP_NAME, STATE_PROP_NAME_FINISHED, STATE_PROP_VALUE, STATE_PROP_VALUE_CONT, STATE_PROP_VALUE_QUOTED, STATE_PROP_VALUE_QUOTED_CONT = range(11) SMB_BEGIN = string.lowercase + string.uppercase SMB_CONT = SMB_BEGIN + string.digits + '_' cont = Context() # STATE_OUT cont.state_noaction(STATE_OUT, (string.whitespace, STATE_OUT)) @cont.state(STATE_OUT, (SMB_BEGIN, STATE_SECTION_NAME)) def handler(char, context): context.sectionname = char context.sectionvalue = '' context.properties = [] # STATE_SECTION_NAME cont.state_noaction(STATE_SECTION_NAME, (string.whitespace, STATE_SECTION_NAME_FINISHED)) @cont.state(STATE_SECTION_NAME, (SMB_CONT, STATE_SECTION_NAME)) def handler(char, context): context.sectionname += char # STATE_SECTION_NAME_FINISHED cont.state_noaction(STATE_SECTION_NAME_FINISHED, (string.whitespace, STATE_SECTION_NAME_FINISHED)) cont.state_noaction(STATE_SECTION_NAME_FINISHED, ('{', STATE_INSIDE_SECTION)) @cont.state(STATE_SECTION_NAME_FINISHED, (SMB_CONT, STATE_SECTION_VALUE))
from machine import Context STATE_OUT, STATE_USER, STATE_DOMAIN, STATE_SUBDOMAIN, STATE_DOMAIN_CONT = range(5) SMB_BEGIN = string.lowercase + string.digits + '_' SMB_CONT = SMB_BEGIN + '-' SMB_CONT_USER = SMB_CONT + '.' cont = Context() class email(namedtuple('email', ['user', 'domain'])): def __str__(self): return "username[%s] at domain[%s]" % (self.user, self.domain) cont.state_noaction(STATE_OUT, (False, STATE_OUT)) @cont.state(STATE_OUT, (SMB_BEGIN, STATE_USER)) def handler(char, context): context.username = char cont.state_noaction(STATE_USER, ('@', STATE_DOMAIN)) cont.state_noaction(STATE_USER, (False, STATE_OUT)) @cont.state(STATE_USER, (SMB_CONT_USER, STATE_USER)) def handler(char, context): context.username += char @cont.state(STATE_DOMAIN, (SMB_BEGIN, STATE_DOMAIN_CONT)) def handler(char, context): context.domain = char cont.state_noaction(STATE_DOMAIN, (False, STATE_OUT))