o
    6d1                     @   s  d dl mZmZmZmZ d dlZd dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ edede	de
dedededed	eded
ededediZedede	de
dedededed	eded
ededediZ edede	de
dedededededededediZ!e	de
dedededededededi	Z"ee	e
eeeeeeh	Z#h dZ$ddhZ%dd  Z&dcd#d$Z'd%d& Z(ddd'd(Z)d)d* Z*d+d, Z+d-d. Z,ded/d0Z-d1d2 Z.dfd3d4Z/dgd5d6Z0d7d8 Z1d9d: Z2d;d< Z3d=d> Z4d?d@ Z5dAdB Z6dCdD Z7dEdF Z8dGdH Z9dIdJ Z:dKdL Z;dhdMdNZ<dOdP Z=dQdR Z>dSdT Z?didUdVZ@dWdX ZAdYdZ ZBd[d\ ZCd]d^ ZDdhd_d`ZEdadb ZFdS )j    )absolute_importdivisionprint_functionunicode_literalsN)BooleanBytesFloat32Float64Int32Int64ListMapString	TimestampUInt32UInt64Voidis_boolean_typeis_list_typeis_map_typeis_numeric_typeis_string_type
is_tag_refis_user_defined_typeis_void_typeunwrap_nullable   )split_wordsz
NSNumber *z
NSString *ZNSArrayZNSDictionaryzNSDate *voidBOOLdoubleintlongzunsigned intzunsigned longZDBBoolSerializerZDBStringSerializerZDBNSNumberSerializerZDBArraySerializerZDBMapSerializerZDBNSDateSerializerZnumericValidatorZarrayValidatorZmapValidatorZstringValidator>2   propertysignedZNSNumbercharZgotor    sizeofenumwhilestructZ	interfaceregisterZNSObjectZretainr!   continueprotocolZunsafe_unretainedZ	NSIntegerdefaultZvolatilecaseautodeleter   elseconstimplementationZexternreturndoZ_Packedr"   descriptionswitchZstaticstrongZ	readwriteZweakZtypedefZCGFloatbreakfloatZshortZunsignedidifunionfor	nonatomiccopynewc                 C   sD   t | tr	J d| du rdS | du rdS | d u rdS tj| ddS )	NzOnly use for base type literalsTtrueFfalsenilr   )width)
isinstancedictpprintpformat)o rK   sC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\stone/backends/obj_c_helpers.pyfmt_obj   s   rM   FTc                 C   s   t | } dd t| D }|s|d  |d< d|}|rI| tv r(|d7 }tD ]}| |rH|s7dnd}||d   |dd   }q*q*|S )	Nc                 S   s   g | ]}|  qS rK   )
capitalize).0wordrK   rK   rL   
<listcomp>   s    zfmt_camel.<locals>.<listcomp>r    _dDr   )strr   lowerjoin_reserved_words_reserved_prefixes
startswithupper)nameupper_firstreservedwordsretZreserved_prefix
new_prefixrK   rK   rL   	fmt_camel   s   
rc   c                 C   s    d t|jjt|jt| S )NzDB{}{}{})formatfmt_class_caps	namespacer]   fmt_camel_upper)
field_namer=   rK   rK   rL   fmt_enum_name   s   
ri   c                 C   s   t | d|dS )NT)r^   r_   rc   )r]   r_   rK   rK   rL   rg         rg   c                 C      t | S Nrg   r]   rK   rK   rL   fmt_public_name      rp   c                 C   rl   rm   rn   ro   rK   rK   rL   	fmt_class   rq   rr   c                 C   s   t |  S rm   )rg   r\   ro   rK   rK   rL   re      s   re   c                 C   s   t | \} }t| rdt| }|S t| jt| j}|r+|	dd}|	dd}t
| rAt | j\} }|dt|  }|S t| rUt | j\} }|dt|  }|S )N{}z *rR   *<{}><NSString *, {}>)r   r   rd   fmt_class_prefix_primitive_tableget	__class__rr   r]   replacer   	data_typefmt_typer   value_data_type)r|   Zsuppress_ptrrS   resultrK   rK   rL   fmt_class_type   s$   r   c                 C   rl   rm   rj   ro   rK   rK   rL   fmt_func   rq   r   c           	      C   s   t | \} }t| r|rdnd}|t| }n?t| jt| j}t	| r=t | j
\} }|r1dnd}||t|  }nt| rWt | j\} }|rLdnd}||t|  }|rc|s]|rc|scd| }|S )Nrs   {} *ru   <{}> *rv   z<NSString *, {}> *	nullable )r   r   rd   rw   rx   ry   rz   rr   r]   r   r|   r}   r   r~   )	r|   taghas_defaultZno_ptris_propnullablebaser   rS   rK   rK   rL   r}      s&   r}   c                 C   s   t | \} }t| rdt| }n3t| jt| j}t	| r1t | j
\} }|dt|  }nt| rEt | j\} }|dt|  }t| r]|r]|sO|rUd| }|S t| s]|d7 }|S )Nr   r   rv   r   rR   )r   r   rd   rw   _primitive_table_user_interfacery   rz   rr   r]   r   r|   r}   r   r~   r   )r|   r   r   r   r   rS   rK   rK   rL   fmt_route_type  s&   r   c                 C   s   d t| jjt| jS )NDB{}{})rd   re   rf   r]   rr   r|   rK   rK   rL   rw   $  s   rw   c                 C   s   t | jt| jS rm   )_validator_tablery   rz   rr   r]   r   rK   rK   rL   fmt_validator)  s   r   c                 C   s<   t | \} }t| rtt| }|S t| jt| j}|S rm   )	r   r   fmt_serial_classrw   _serial_tablery   rz   rr   r]   )r|   rS   r   rK   rK   rL   fmt_serial_obj-  s   r   c                 C   
   d | S )Nz{}Serializerrd   )
class_namerK   rK   rL   r   9     
r   c                 C   s   d t| S )NzDB{}RouteObjects)rd   re   )namespace_namerK   rK   rL   fmt_route_obj_class=  rk   r   c                 C   s$   |}|dkrd}d t| t|S )NZnoauthuserzDB{}{}AuthRoutes)rd   re   rg   )r   Z	auth_typeZauth_type_to_userK   rK   rL   fmt_routes_classA  s   r   c                 C   s2   d t| t|j}|jdkrd ||j}|S )Nr   r   {}V{})rd   re   rg   r]   version)r   routera   rK   rK   rL   fmt_route_varI  s   
r   c                 C   s&   t | j}| jdkrd|| j}|S )Nr   r   )fmt_varr]   r   rd   )r   ra   rK   rK   rL   fmt_route_funcQ  s   

r   c                 C   sL   g }d}| D ]\}}|r| d| d}q| d|| qd|S )NTrs   Fz{}:{} appendrd   rX   )arg_str_pairsr   	first_argarg_name	arg_valuerK   rK   rL   fmt_func_argsX  s   
r   c                 C   sN   g }d}| D ]\}}|r| d|| d}q| d|| qd|S )NT({}){}Fz{0}:({1}){0}r   r   )r   r   r   r   Zarg_typerK   rK   rL   fmt_func_args_declarationd  s   
r   c              	   C   sj   g }d}| D ])}|r| dt|jt|j d}q| dt|jt|jt|j qd|S )NTr   Fz	{}:({}){}r   )r   rd   r}   r|   r   r]   rX   )argsr   r   argrK   rK   rL   fmt_func_args_from_fieldsp  s   
r   c                 C   s&   |rd | ||}|S d | |}|S )Nz
[{} {}:{}]z[{} {}]r   )callerZcalleer   r   rK   rK   rL   fmt_func_call~  s
   r   c                 C   r   )Nz
[{} alloc]r   )r   rK   rK   rL   fmt_alloc_call  r   r   c                 C   s   t | jrdt| jjt| jjS t| jrd| jS t	| jr0| jr)d}nd}d|S t
| jr;d| jS tdt| j )Nz[[{} alloc] initWith{}]z@({})ZYESNOz@{}z@"{}"z"Can't handle default value type %r)r   r-   rd   rw   Zunion_data_typerr   Ztag_namer   r|   r   r   	TypeErrortype)fieldZbool_strrK   rK   rL   fmt_default_value  s"   






r   c                 C   s   d}t | r<t| trd}|S t| trd}|S t| tr!d}|S t| tr*d}|S t| tr3d}|S t| tr:d}|S t| rBd}|S )NrR   ZnumberWithUnsignedIntZnumberWithUnsignedLongZnumberWithIntZnumberWithLongZnumberWithDoubleZnumberWithBool)	r   rF   r   r   r
   r   r   r	   r   )r|   r   rK   rK   rL   fmt_ns_number_call  s.   


	


r   c                 C   s6   |sdnd}|rd ||| |}|S d ||| }|S )N-+z{} ({}){}:{}z	{} ({}){}r   )funcr   return_typeZ
class_funcmodifierr   rK   rK   rL   fmt_signature  s   r   c                 C   s   t | \} }| jtv S rm   )r   rz   _wrapper_primitives)r|   rS   rK   rK   rL   is_primitive_type  s   
r   c                 C   rl   rm   rj   ro   rK   rK   rL   r     rq   r   c                 C   s`   ddg}t | j\}}t|r|d |r|d d}|d|t| jdddt| jS )	Nr?   readonlyr@   r   z@property ({}) {}{};, T)r   r   )	r   r|   r   r   rd   rX   r}   r   r]   )r   attrsr|   r   base_stringrK   rK   rL   fmt_property  s   

r   c                 C   r   )Nz#import "{}.h"r   )Zheader_filerK   rK   rL   
fmt_import  r   r   c                 C   s$   |sddg}d}| d||| S )Nr?   r   z@property ({}) {} {};r   )rd   rX   )proptypr   r   rK   rK   rL   fmt_property_str  s   r   c                 C   s2   | d D ]}|d |kr|d  |  d S qd S )NZcustom_categoriesr]   children)r   )Z
jazzy_dictlabelitemZcategory_dictrK   rK   rL   append_to_jazzy_category_dict  s   r   )FT)T)F)FFFF)FFrm   )r   F)G
__future__r   r   r   r   rH   Zstone.irr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   helpersr   rx   r   r   r   r   rY   rZ   rM   rc   ri   rg   rp   rr   re   r   r   r}   r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rK   rK   rK   rL   <module>   s    `6





	


