Create attractive VASL scenarios, with loads of useful information embedded to assist with game play. https://vasl-templates.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
vasl-templates/vasl_templates/webapp/tests/proto/utils.py

44 lines
1.4 KiB

"""Utility functions."""
import inspect
# ---------------------------------------------------------------------
def get_classes():
"""Get the request/response classes."""
from .generated import control_tests_pb2
for elem in dir( control_tests_pb2 ):
if not inspect.isclass( type(elem) ):
continue
if not elem.endswith( ( "Request", "Response" ) ):
continue
cls = getattr( control_tests_pb2, elem )
yield cls
# ---------------------------------------------------------------------
def split_words( val ):
"""Extract words from a camel-cased string."""
words, curr_word = [], []
for ch in val:
if ch.isupper():
if curr_word:
words.append( "".join( curr_word ) )
curr_word = []
curr_word.append( ch.lower() )
if curr_word:
words.append( "".join( curr_word ) )
return words
# ---------------------------------------------------------------------
def enum_to_string( enum, val ):
"""Convert an enum value to a string."""
val = enum.Name( val )
return "{%s}" % val
def enum_from_string( enum, val ):
"""Convert a string to an enum value."""
if not val.startswith( "{" ) or not val.endswith( "}" ):
raise ValueError( "Invalid enumerated value for {}: {}".format( enum.DESCRIPTOR.full_name, val ) )
return enum.Value( val[1:-1] )