
    	                     b    d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddlZdZ	e	dz   Z
d	 Zd
 Zy)z,Utils for camel case/snake case conversions.    )absolute_import)division)unicode_literalsN)metrics
datastream_camel_case_conversionc                 L   t        | t        t        t        f      r| S t        | t              rA| j                         }| j                         D ]  \  }}t        |      |t        |      <    |S t        | t        t        t        f      r| j                  d | D              }|S | S )a?  Recursively goes through the dictionary obj and replaces keys with the convert function.

  taken from:
  https://stackoverflow.com/questions/11700705/how-to-recursively-replace-character-in-keys-of-a-nested-dictionary.

  Args:
    yaml_dict: dict of loaded yaml

  Returns:
    A converted dict with camelCase keys
  c              3   2   K   | ]  }t        |        y w)N)ConvertYamlToCamelCase).0vs     9lib/googlecloudsdk/api_lib/datastream/camel_case_utils.py	<genexpr>z)ConvertYamlToCamelCase.<locals>.<genexpr>2   s     KA4Q7s   )
isinstancestrintfloatdict	__class__itemsr   SnakeToCamelCaselistsettuple)	yaml_dictnewkr   s       r   r   r      s     	Ce,-	4 



C!1!7!:c
1
 " 
*	 )dC/0


KK
KC 
*     c                 :   t        j                  d|       s| S t        j                  ddt        j                  | j                                     }|s|S t        j                  t               |d   j                         t        j                  dd |dd       z   S )	z+Convert value from snake_case to camelCase.z[a-zA-Z]+_[a-zA-Z]+z^[\-_\.] r   z[\-_\.\s]([a-z])c                 @    | j                  d      j                         S )N   )groupupper)matcheds    r   <lambda>z"SnakeToCamelCase.<locals>.<lambda>I   s    7==+;+A+A+Cr   r"   N)	rematchsubsix	text_typelowerr   CustomTimedEventCAMEL_CASE_CONVERSION_EVENT)valuestrings     r   r   r   8   s     
(%	0L 66+r3==#?@&	M 
67 
	RVVCVABZ 
 r   )__doc__
__future__r   r   r   r'   googlecloudsdk.corer   r*   _DEFAULT_API_NAMEr.   r   r    r   r   <module>r6      s8    3 &  ' 	 ' 
  /2JJ 4r   