
    _}dg                     t    d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 d Z
d Zd	 Zd
 Z G d d          ZdS )zP
Utility functions to return a formatted name and description for a given view.
    N)	force_str)escape)	mark_safe)apply_markdownc                 l    |                      |          r| |k    r| dt          |                    S | S )z|
    Strip trailing component `trailing` from `content` if it exists.
    Used when generating names from view classes.
    N)endswithlen)contenttrailings     ^/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/rest_framework/utils/formatting.pyremove_trailing_stringr      s@    
 !! (g&9&9X''N    c                    t          |           } d |                                 dd         D             }|rt          d |D                       }t          d |D                       }|r<dd|z  z   }t          j        t          j        |t          j                  d|           } n=|r;dd	|z  z   }t          j        t          j        |t          j                  d|           } |                                 S )
a  
    Remove leading indent from a block of text.
    Used when generating descriptions from docstrings.

    Note that python's `textwrap.dedent` doesn't quite cut it,
    as it fails to dedent multiline docstrings that include
    unindented text on the initial line.
    c                 :    g | ]}|                                 |S  )lstrip.0lines     r   
<listcomp>zdedent.<locals>.<listcomp>!   s%    HHHd$++--HTHHHr      Nc                 r    g | ]4}t          |          t          |                    d                     z
  5S ) r	   r   r   s     r   r   zdedent.<locals>.<listcomp>%   s7     U U UtTSS1A1A-B-B!B U U Ur   c                 r    g | ]4}t          |          t          |                    d                     z
  5S )	r   r   s     r   r   zdedent.<locals>.<listcomp>&   s7    OOO#d))c$++d*;*;&<&<<OOOr   ^r    r   )r   
splitlinesminresubcompile	MULTILINEstrip)r
   lineswhitespace_counts
tab_countswhitespace_patterns        r   dedentr*      s      GHHg00221226HHHE  X U Uu U U UVVOOOOOPP
 	X!$.?(?!@fRZ(:BLII2wWWGG 	X!$z(9!:fRZ(:BLII2wWWG==??r   c                     d}t          j        |d|                                           } d                    |                     d                                                    S )zm
    Translate 'CamelCaseNames' to 'Camel Case Names'.
    Used when generating names from view classes.
    z&(((?<=[a-z])[A-Z])|([A-Z](?![A-Z]|$)))z \1r   _)r!   r"   r%   joinsplittitle)r
   camelcase_boundarys     r   camelcase_to_spacesr1   0   sU    
 Bf'99??AAG88GMM#&&''--///r   c                     t           rt          |           } n+t          |                               dd          } d| z   dz   } t          |           S )z5
    Apply HTML markup to the given description.
    
z<br />z<p>z</p>)r   r   replacer   )descriptions    r   markup_descriptionr6   :   sU      3$[11[))11$AAk)F2[!!!r   c                   (    e Zd ZdZdZd Zd Zd ZdS )lazy_formatz
    Delay formatting until it's actually needed.

    Useful when the format string or one of the arguments is lazy.

    Not using Django's lazy because it is too slow.
    )format_stringargskwargsresultc                 >    d | _         || _        || _        || _        d S N)r<   r9   r:   r;   )selfr9   r:   r;   s       r   __init__zlazy_format.__init__P   s#    *	r   c                     | j         6 | j        j        | j        i | j        | _         d\  | _        | _        | _        | j         S )N)NNN)r<   r9   formatr:   r;   )r?   s    r   __str__zlazy_format.__str__V   sE    ;3$,3TYN$+NNDK9I6D	4;{r   c                 &    t          |           |z  S r>   )str)r?   values     r   __mod__zlazy_format.__mod__\   s    4yy5  r   N)__name__
__module____qualname____doc__	__slots__r@   rC   rG   r   r   r   r8   r8   F   sR          >I    ! ! ! ! !r   r8   )rK   r!   django.utils.encodingr   django.utils.htmlr   django.utils.safestringr   rest_framework.compatr   r   r*   r1   r6   r8   r   r   r   <module>rQ      s     
			 + + + + + + $ $ $ $ $ $ - - - - - - 0 0 0 0 0 0    20 0 0	" 	" 	"! ! ! ! ! ! ! ! ! !r   