a
    ;@b                     @   s  d Z ddlZddlmZmZmZmZmZmZm	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 ddlmZ ddlmZ g dZG dd	 d	eZG d
d deZG dd deZdd ZG dd deZ G dd deZ!G dd deZ"G dd deZ#G dd deZ$G dd deZ%G dd deZ&G dd deZ'G d d! d!eZ(G d"d# d#eZ)G d$d% d%eZ*G d&d' d'eZ+G d(d) d)eZ,G d*d+ d+eZ-G d,d- d-eZ.G d.d/ d/eZ/dS )0z
    pygments.lexers.configs
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for configuration file formats.

    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)ExtendedRegexLexer
RegexLexerdefaultwordsbygroupsincludeusing)TextCommentOperatorKeywordNameStringNumberPunctuation
WhitespaceLiteralErrorGeneric)	BashLexer)	JsonLexer)IniLexerRegeditLexerPropertiesLexerKconfigLexerCfengine3LexerApacheConfLexerSquidConfLexerNginxConfLexerLighttpdConfLexerDockerLexerTerraformLexerTermcapLexerTerminfoLexerPkgConfigLexerPacmanConfLexerAugeasLexer	TOMLLexerNestedTextLexerSingularityLexerc                   @   sl   e Zd ZdZdZg dZg dZddgZddefd	e	j
fd
efdeejeeeefdejfgiZdd ZdS )r   z5
    Lexer for configuration files in INI style.
    ZINI)ZiniZcfgZdosini)z*.iniz*.cfgz*.infz.editorconfigz	*.servicez*.socketz*.devicez*.mountz*.automountz*.swapz*.targetz*.pathz*.timerz*.slicez*.scopez
text/x-iniztext/infroot\s+[;#].*z\[.*?\]$z"(.*?)([ \t]*)(=)([ \t]*)([^\t\n]*)z(.+?)$c                 C   s2   |  d}|dk rdS | d dko0| |d  dkS )N
   Fr   [   ])find)textZnpos r4   6lib/python3.9/site-packages/pygments/lexers/configs.pyanalyse_text8   s    
zIniLexer.analyse_textN)__name__
__module____qualname____doc__namealiases	filenames	mimetypesr   r
   Singler   r   r   	Attributer   r   tokensr6   r4   r4   r4   r5   r      s    r   c                   @   s   e Zd ZdZdZdgZdgZdgZdefde	fde
jfd	eeeejefd
eeje	ee	dfdeeje	ee	dfgdedfdeejeedfdedfedgdZdd ZdS )r   z
    Lexer for `Windows Registry
    <http://en.wikipedia.org/wiki/Windows_Registry#.REG_files>`_ files produced
    by regedit.

    .. versionadded:: 1.6
    Zregregistryz*.regztext/x-windows-registryzWindows Registry Editor.*r+   r,   z(\[)(-?)(HKEY_[A-Z_]+)(.*?\])$z)("(?:\\"|\\\\|[^"])+")([ \t]*)(=)([ \t]*)valuez(.*?)([ \t]*)(=)([ \t]*)-#popz1(dword|hex(?:\([0-9a-fA-F]\))?)(:)([0-9a-fA-F,]+).+r*   rC   c                 C   s
   |  dS )NzWindows Registry Editor)
startswith)r3   r4   r4   r5   r6   g   s    zRegeditLexer.analyse_textN)r7   r8   r9   r:   r;   r<   r=   r>   r	   r   r
   r?   r   r   r   r   Builtinr@   Variabler   r   r   r   rA   r6   r4   r4   r4   r5   r   ?   s:   r   c                   @   sz   e Zd ZdZdZddgZdgZdgZddee	j
eefd	e	j
fd
eeefdeeefdee	j
eeeefdefgiZdS )r   z
    Lexer for configuration files in Java's properties format.

    Note: trailing whitespace counts as part of the value as per spec

    .. versionadded:: 1.4
    Z
PropertiesZ
propertiesZjpropertiesz*.propertiesztext/x-java-propertiesr*   z^(\w+)([ \t])(\w+\s*)$z^\w+(\\[ \t]\w*)*$z(^ *)([#!].*)z(^ *)((?:;|//).*)z/(.*?)([ \t]*)([=:])([ \t]*)(.*(?:(?<=\\)\n.*)*)z\sN)r7   r8   r9   r:   r;   r<   r=   r>   r   r   r@   r   r   r
   r   rA   r4   r4   r4   r5   r   k   s    r   c                 C   sB   d}|dkrd}nd|d  }| dkr,d}nd|  }d|||f S )	N      +z{1,%d}r0    z{%s}z(?:\t| %s\t| {%s})%s.*\nr4   )levelZ	tab_widthZspace_repeatZlevel_repeatr4   r4   r5   
_rx_indent   s    rP   c                   @   s   e Zd ZdZdZg dZg dZdgZdZdd Z	d	d
 Z
defdejfedddefdedfdejfdefdefdejfdejfdejfdefgdefe	de	de	de	de	de	de	d ed!g	e
de
de
de
de
de
de
d d"	Zd#S )$r   zC
    For Linux-style Kconfig files.

    .. versionadded:: 1.6
    ZKconfig)Zkconfig
menuconfigzlinux-configzkernel-config)zKconfig*z*Config.in*zexternal.in*zstandard-modules.inztext/x-kconfigr   c                 C   s   t | tjd|  fS )Nzindent%s)rP   r   DocrO   r4   r4   r5   call_indent   s    zKconfigLexer.call_indentc                 C   s   t | tjfdtftdgS )N\s*\n#pop:2)rP   r   rR   r	   r   rS   r4   r4   r5   	do_indent   s    zKconfigLexer.do_indentr+   #.*?\n)ZmainmenuZconfigrQ   choiceZ	endchoicecommentZmenuZendmenuz
visible ififZendifsourcepromptZselectz
depends onr   rangeoption\bsuffixz(---help---|help)[\t ]*\nhelpz;(bool|tristate|string|hex|int|defconfig_list|modules|env)\bz[!=&|]z[()][0-9]+z'(''|[^'])*'z"(""|[^"])*"\S+rU               r.   rL   r0   rE   )	r*   rc   Zindent7Zindent6Zindent5Zindent4Zindent3Zindent2Zindent1N)r7   r8   r9   r:   r;   r<   r=   r>   flagsrT   rW   r   r
   r?   r   r   r   rI   r   r   r   Integerr   Doubler	   r   rA   r4   r4   r4   r5   r      sX   r   c                   @   sn  e Zd ZdZdZddgZdgZg Zdefde	e
ee
ee
fde	e
ee
eejed	fd
e	e
ee
eejfde	eejeee
jeeefde	e
jeeefdedfde	ejefde	ejefde	e
jefdejfdefdefdefdejfdejfdejfdefgdejdfdejfdedfdefdefgdejd fd!ejdfd"ejfgd#edfd$efdejfdefgd%Zd&S )'r   z_
    Lexer for `CFEngine3 <http://cfengine.org>`_ policy files.

    .. versionadded:: 1.5
    Z	CFEngine3Z	cfengine3Zcf3z*.cfrX   z(body)(\s+)(\S+)(\s+)(control)z%(body|bundle)(\s+)(\S+)(\s+)(\w+)(\()arglistz!(body|bundle)(\s+)(\S+)(\s+)(\w+)z7(")([^"]+)(")(\s+)(string|slist|int|real)(\s*)(=>)(\s*)z(\S+)(\s*)(=>)(\s*)"stringz	(\w+)(\()z([\w.!&|()]+)(::)z(\w+)(:)z@[{(][^)}]+[})]z[(){},;]z=>z->z\d+\.\d+\d+\w+r+   z\$[{(]interpol\\.rE   \n.#pushz[})]z	[^${()}]+z\),)r*   ro   rr   rm   N)r7   r8   r9   r:   r;   r<   r=   r>   r
   r   r   r   r   Functionr   rJ   Typer   Reservedr	   r   ClassDeclarationr   Floatrk   InterpolEscaperA   r4   r4   r4   r5   r      sj   



r   c                   @   s   e Zd ZdZdZg dZg dZdgZej	ej
B Zdefdefdeejeeejfd	eejejfd
ejdfdefgdefdedfdefdefdefdefdejfdefdejfdefg
dZdS )r   zo
    Lexer for configuration files following the Apache config file
    format.

    .. versionadded:: 0.6
    Z
ApacheConf)Z
apacheconfZaconfZapache)z	.htaccesszapache.confzapache2.confztext/x-apacheconfr+   z#(.*\\\n)+.*$|(#.*?)$z"(<[^\s>/][^\s>]*)(?:(\s+)(.*))?(>)z(</[^\s>]+)(>)z[a-z]\w*rC   z\.+z\\\nz\n+rE   z\\z[^\S\n]+\d+\.\d+\.\d+\.\d+(?:/\d+)?rp   z/([*a-z0-9][*\w./-]+)z(on|off|none|any|all|double|email|dns|min|minimal|os|productonly|full|emerg|alert|crit|error|warn|notice|info|debug|registry|script|inetd|standalone|user|group)\bz"([^"\\]*(?:\\(.|\n)[^"\\]*)*)"z	[^\s"\\]+rG   N)r7   r8   r9   r:   r;   r<   r=   r>   re	MULTILINE
IGNORECASErj   r   r
   r   r   Tagr   rI   r	   r   ZOtherr   rl   rA   r4   r4   r4   r5   r   %  s>   
r   c                   @   s   e Zd ZdZdZg dZdgZdgZej	Z
dZdZdZd	Zd
ZdZdZdefdedfeedddefeedddejfeedddefeedddefeedddefeedddefed e d ejfdefdefgdejdfdedfedgdZdS )r   zj
    Lexer for `squid <http://www.squid-cache.org/>`_ configuration files.

    .. versionadded:: 0.9
    Z	SquidConf)Z	squidconf
squid.confZsquidr   ztext/x-squidconf)Z
access_logZaclZalways_directZannounce_hostZannounce_periodZannounce_portZannounce_toZanonymize_headersZappend_domainZas_whois_serverZauth_param_basicZauthenticate_childrenZauthenticate_programZauthenticate_ttlZbroken_postsZbuffered_logsZcache_access_logZcache_announceZ	cache_dirZcache_dns_programZcache_effective_groupZcache_effective_userZ
cache_hostZcache_host_aclZcache_host_domainZ	cache_logZ	cache_memZcache_mem_highZcache_mem_lowZ	cache_mgrZcachemgr_passwdZ
cache_peerZcache_peer_accessZcache_replacement_policyZcache_stoplistZcache_stoplist_patternZcache_store_logZ
cache_swapZcache_swap_highZcache_swap_logZcache_swap_lowZ	client_dbZclient_lifetimeZclient_netmaskZconnect_timeoutZcoredump_dirZdead_peer_timeoutZdebug_optionsZdelay_accessZdelay_classZdelay_initial_bucket_levelZdelay_parametersZdelay_poolsZ	deny_infoZdns_childrenZdns_defnamesZdns_nameserversZdns_testnamesZemulate_httpd_logZerr_html_textZfake_user_agentZfirewall_ipZforwarded_forZforward_snmpd_portZfqdncache_sizeZftpget_optionsZftpget_programZftp_list_widthZftp_passiveZftp_userZhalf_closed_clientsZheader_accessZheader_replaceZhierarchy_stoplistZhigh_response_time_warningZhigh_page_fault_warningZ
hosts_fileZ	htcp_portZhttp_accessZhttp_anonymizerZhttpd_accelZhttpd_accel_hostZhttpd_accel_portZhttpd_accel_uses_host_headerZhttpd_accel_with_proxyZ	http_portZhttp_reply_accessZ
icp_accessZicp_hit_staleZicp_portZicp_query_timeoutZident_lookupZident_lookup_accessZident_timeoutZincoming_http_averageZincoming_icp_averageZinside_firewallZipcache_highZipcache_lowZipcache_sizeZlocal_domainZlocal_ipZlogfile_rotateZlog_fqdnZlog_icp_queriesZlog_mime_hdrsZmaximum_object_sizeZmaximum_single_addr_triesZmcast_groupsZmcast_icp_query_timeoutZmcast_miss_addrZmcast_miss_encode_keyZmcast_miss_portZmemory_poolsZmemory_pools_limitZmemory_replacement_policyZ
mime_tableZmin_http_poll_cntZmin_icp_poll_cntZminimum_direct_hopsZminimum_object_sizeZminimum_retry_timeoutZmiss_accessZnegative_dns_ttlZnegative_ttlZneighbor_timeoutZneighbor_type_domainZ
netdb_highZ	netdb_lowZnetdb_ping_periodZnetdb_ping_rateZnever_directZno_cacheZpassthrough_proxyZpconn_timeoutZpid_filenameZpinger_programZpositive_dns_ttlZprefer_directZ
proxy_authZproxy_auth_realmZ
query_icmpZquick_abortZquick_abort_maxZquick_abort_minZquick_abort_pctZrange_offset_limitZread_timeoutZredirect_childrenZredirect_programZredirect_rewrites_host_headerZreference_ageZrefresh_patternZreload_into_imsZrequest_body_max_sizeZrequest_sizeZrequest_timeoutZshutdown_lifetimeZsingle_parent_bypassZsiteselect_timeoutZsnmp_accessZsnmp_incoming_addressZ	snmp_portZsource_pingZ	ssl_proxyZstore_avg_object_sizeZstore_objects_per_bucketZstrip_query_termsZswap_level1_dirsZswap_level2_dirsZtcp_incoming_addressZtcp_outgoing_addressZtcp_recv_bufsizeZtest_reachabilityZudp_hit_objZudp_hit_obj_sizeZudp_incoming_addressZudp_outgoing_addressZunique_hostnameZunlinkd_programZuri_whitespaceZuseragent_logZvisible_hostnameZ
wais_relayZwais_relay_hostZwais_relay_port)z
proxy-onlyZweightZttlzno-queryr   zround-robinzmulticast-responderZonZoffallZdenyZallowZviaparentz	no-digestheapZlruZrealmZchildrenZq1Zq2ZcredentialsttlZnonedisableZoffline_toggleZdiskd)ZshutdowninfoZ	parameterZserver_listZclient_listr   )ZobjectsZ
vm_objectsZutilizationZipcacheZ	fqdncacheZdnsZ
redirectorioZreply_headersZfiledescriptorsZnetdb)statusenabler   clear)Z	url_regexZurlpath_regexZreferer_regexportprotoZreq_mime_typeZrep_mime_typemethodZbrowserusersrcdsttimeZ	dstdomainidentZsnmp_communitya  (?:(?:(?:[3-9]\d?|2(?:5[0-5]|[0-4]?\d)?|1\d{0,2}|0x0*[0-9a-f]{1,2}|0+[1-3]?[0-7]{0,2})(?:\.(?:[3-9]\d?|2(?:5[0-5]|[0-4]?\d)?|1\d{0,2}|0x0*[0-9a-f]{1,2}|0+[1-3]?[0-7]{0,2})){3})|(?!.*::.*::)(?:(?!:)|:(?=:))(?:[0-9a-f]{0,4}(?:(?<=::)|(?<!::):)){6}(?:[0-9a-f]{0,4}(?:(?<=::)|(?<!::):)[0-9a-f]{0,4}(?:(?<=::)|(?<!:)|(?<=:)(?<!::):)|(?:25[0-4]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-4]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))r+   #rZ   r`   prefixrb   zstats/zlog/=z(?:/(?:z|\b\d+\b))?z(?:\b\d+\b(?:-\b\d+|%)?)re   z	\s*TAG:.*rE   rF   )r*   rZ   N)r7   r8   r9   r:   r;   r<   r=   r>   r   r   rj   keywordsZoptsactionsZactions_statsZactions_logZaclsZip_rer   r
   r   r   r   Constantr   r   r}   r	   r   r   rA   r4   r4   r4   r5   r   P  s>   ;
r   c                   @   s   e Zd ZdZdZdgZdgZdgZdee	e
efde	dfed	gd
edfde	jdfed	gdedfdedfed	gdejfdejfdejfdeeeejfdefdejfdeee
ejfdefdefdefde
fdefgdZdS )r   za
    Lexer for `Nginx <http://nginx.net/>`_ configuration files.

    .. versionadded:: 0.11
    zNginx configuration fileZnginxz
nginx.confztext/x-nginx-confz(include)(\s+)([^\s;]+)z[^\s;#]+stmtbase\}rV   z\{block;rE   #.*\nzon|offz\$[^\s;#()]+z([a-z0-9.-]+)(:)([0-9]+)z[a-z-]+/[a-z-+]+z[0-9]+[km]?\bz(~)(\s*)([^\s{]+)z[:=~]z[^\s;#{}$]+z	/[^\s;#]*r+   z[$;])r*   r   r   r   N)r7   r8   r9   r:   r;   r<   r=   r>   r   r   r   r   r   r   	Namespacer
   r?   r   rJ   r   rk   r   Regexr	   rA   r4   r4   r4   r5   r     sB   
r   c                   @   sr   e Zd ZdZdZddgZdgZdgZddej	fd	e
fd
efdefdefdefde
jfdefdejfdefg
iZdS )r   zg
    Lexer for `Lighttpd <http://lighttpd.net/>`_ configuration files.

    .. versionadded:: 0.11
    zLighttpd configuration fileZlighttpdZlightyzlighttpd.confztext/x-lighttpd-confr*   r   z/\S*z[a-zA-Z._-]+r   rd   z=>|=~|\+=|==|=|\+z\$[A-Z]+z[(){}\[\],]z"([^"\\]*(?:\\.[^"\\]*)*)"r+   N)r7   r8   r9   r:   r;   r<   r=   r>   r
   r?   r   r   r   r   rI   r   r   rl   r   rA   r4   r4   r4   r5   r      s$   r   c                   @   s   e Zd ZdZdZddgZddgZdgZdZd	Z	d
Z
ejejB Zddefdeeeeeeeefde
f eeeeefde
e
f eeeeefde
f eeeeeeefde
e
f eeeeefde eeeefde	f eeefdeefg	iZdS )r    z`
    Lexer for `Docker <http://docker.io>`_ configuration files.

    .. versionadded:: 2.0
    ZDockerZdockerZ
dockerfileZ
Dockerfilez*.dockerztext/x-dockerfile-configz-(?:MAINTAINER|EXPOSE|WORKDIR|USER|STOPSIGNAL)z-(?:RUN|CMD|ENTRYPOINT|ENV|ARG|LABEL|ADD|COPY)z(?:\s*\\?\s*)r*   z#.*z1(FROM)([ \t]*)(\S*)([ \t]*)(?:(AS)([ \t]*)(\S*))?z(ONBUILD)(\s+)(%s)z$(HEALTHCHECK)(\s+)((%s--\w+=\w+%s)*)z/(VOLUME|ENTRYPOINT|CMD|SHELL)(\s+)(%s)(\[.*?\])z$(LABEL|ENV|ARG)(\s+)((%s\w+=\w+%s)*)z(%s|VOLUME)\b(\s+)(.*)z	(%s)(\s+)z(.*\\\n)*.+N)r7   r8   r9   r:   r;   r<   r=   r>   Z	_keywordsZ_bash_keywordsZ_lbr   r   r   rj   r
   r   r   r   r   r   r   r   rA   r4   r4   r4   r5   r      s:   


r    c                   @   s
  e Zd ZdZdZddgZdgZddgZdZd		d

eZdZdZdZdZdZdZdZdZdZdZee e e e e e e e Zd		d

eZdd Zededdeejfeddddejfeeddde j!fededde"fgd e#j$d!fd"e#j%fedd#ee&ej'e&e(e&e)fd$ee&ej*e&e(e&fd%ee&e+jje&e(e&fed& eej,e)fd'ee)ej'e)fed( ee j-e&d)fd*efg
d+ee&ej.e&ej/e&e)fgd,eej/fd-eej/fgd.e)fgd/e#j$fd0e#j$d1fd2e#j$d3fd4e#j$fgd5e&fd6e&fd7ee0e&fgd8Z1d9S ):r!   zc
    Lexer for `terraformi .tf files <https://www.terraform.io/>`_.

    .. versionadded:: 2.1
    Z	TerraformZ	terraformZtfz*.tfzapplication/x-tfzapplication/x-terraform)ZbackenddatamoduleoutputZproviderZprovisionerresourcevariablez({})|)	ro   ZnumberboollisttuplemapsetobjectZnull)	absZceilZfloorlogmaxZmixZparseintpowZsignum)ZchompformatZ
formatlistindentjoinlowerregexZregexallreplacesplitZstrrevZsubstrtitleZtrimZ
trimprefixZ
trimsuffixZ	trimspaceupper)ZalltrueZanytrueZ	chunklistZcoalesceZcoalescelistZcompactconcatcontainsZdistinctelementZflattenindexkeyslengthr   lookupr   Z	matchkeysmerger^   reverseZsetintersectionZ
setproductZsetsubtractZsetunionslicesortsumZ	transposevaluesZzipmap)Zbase64decodeZbase64encodeZ
base64gzipZ	csvdecodeZ
jsondecodeZ
jsonencodeZtextdecodebase64Ztextencodebase64	urlencodeZ
yamldecodeZ
yamlencode)	abspathdirnameZ
pathexpandbasenamefileZ
fileexistsZfilesetZ
filebase64Ztemplatefile)Z
formatdateZtimeaddZ	timestamp)Zbase64sha256Zbase64sha512ZbcryptZfilebase64sha256Zfilebase64sha512Zfilemd5Zfilesha1Z
filesha256Z
filesha512Zmd5Z
rsadecryptZsha1Zsha256Zsha512ZuuidZuuidv5)ZcidrhostZcidrnetmaskZ
cidrsubnetZcidrsubnets)	ZcandefaultsZtobooltolistZtomapZtonumberZtosetZtostringtryc           
      c   sX  | d}|t|dfV  | dtj|dfV  | d|_|d|_|jtj|dfV  | |_|d}|dd dk}g }t	d}|
|j|jD ]~}|r|  }n|  }||kr|D ]}	|	  tj|	 fV  q|  tj| fV  | |_ qHq|| q|D ]}	|	  t|	 fV  q,t|j|_d S )Nr0   rL   r.   rD   z.*?
)startr   groupr   Z	DelimiterposendZHeredocr   compilefinditerr3   striprstripappendr   len)
selfmatchctxr   ZhdnameZtolerantlinesZline_recheckZamatchr4   r4   r5   heredoc_callback{  s2    





zTerraformLexer.heredoc_callbackbasic
whitespacez(".*"))trueZfalser`   r   
identifierpunctuationrd   z\s*/\*rZ   z\s*#.*\nz'(\s*)([0-9a-zA-Z-_]+)(\s*)(=?)(\s*)(\{)z"(\s*)([0-9a-zA-Z-_]+)(\s*)(=)(\s*)z(\s*)("\S+")(\s*)([=:])(\s*)z(\()z(\[)([a-z_,\s]+)(\])z(\s+)	blocknamez(<<-?)\s*([a-zA-Z_]\w*)(.*?\n)z8(\s*)("[0-9a-zA-Z-_]+")?(\s*)("[0-9a-zA-Z-_]+")(\s+)(\{)z\b(var\.[0-9a-zA-Z-_\.\[\]]+)\bz.\b([0-9a-zA-Z-_\[\]]+\.[0-9a-zA-Z-_\.\[\]]+)\bz[\[\]()\{\},.?:!=]z[^*/]z/\*rv   z\*/rE   z[*/]rt   r+   z(\\)(\n))r*   r   r   r   r   rZ   r   N)2r7   r8   r9   r:   r;   r<   r=   r>   classesr   r   Z
classes_retypesZnumeric_functionsZstring_functionsZcollection_functionsZencoding_functionsZfilesystem_functionsZdate_time_functionsZhash_crypto_functionsZip_network_functionsZtype_conversion_functionsbuiltinsZbuiltins_rer   r   r   r   rl   r   r   r   r   ry   r   r
   	Multiliner?   r   rI   r   r   r@   r   rx   rz   r{   rJ   r	   rA   r4   r4   r4   r5   r!   ?  s   	(
&

r!   c                	   @   s   e Zd ZdZdZdgZddgZg Zdefde	j
dfdefgd	ed
fdedfdefde	jfgdeeefdedfdeeefdedfdefde	jfgdefded
fdefdefgdZdS )r"   zm
    Lexer for termcap database source.

    This is very simple and minimal.

    .. versionadded:: 2.1
    ZTermcapZtermcapztermcap.srcz^#.*z
^[^\s#:|]+namesr+   rt   rE   :defs\|z[^:|]+z(\\)(\n[ \t]*)z\n[ \t]*rV   (#)([0-9]+)r   r   z	[^\s:=#]+z\\072z[^:\\]+ru   r*   r   r   r   N)r7   r8   r9   r:   r;   r<   r=   r>   r
   r   r   r   r   r@   r   r	   r   r   r{   r   rA   r4   r4   r4   r5   r"     s6   	
	r"   c                
   @   s   e Zd ZdZdZdgZddgZg Zdefde	j
dfdefgd	ed
fdeeedfdefde	jfgdefd	edfdeeefdedfdeeefde	jfgdefdeeed
fdefdefgdZdS )r#   zn
    Lexer for terminfo database source.

    This is very simple and minimal.

    .. versionadded:: 2.1
    ZTerminfoZterminfozterminfo.srcz^#.*$z
^[^\s#,|]+r   r+   rt   rE   z(,)([ \t]*)r   r   z[^,|]+z\n[ \t]+rV   r   r   r   z	[^\s,=#]+z\\[,\\]z[^\\,]+ru   r   N)r7   r8   r9   r:   r;   r<   r=   r>   r
   r   r   r   r   r   r@   r   r   r{   r   rA   r4   r4   r4   r5   r#      s6   	
	r#   c                
   @   s   e Zd ZdZdZdgZdgZg Zdej	fde
ejefde
ejedfed	d
efdefdefgdefdejdfgdejdfdejfged	dej	dfdedfd
efdefdefgdZdS )r$   z
    Lexer for `pkg-config
    <http://www.freedesktop.org/wiki/Software/pkg-config/>`_
    (see also `manual page <http://linux.die.net/man/1/pkg-config>`_).

    .. versionadded:: 2.1
    Z	PkgConfigZ	pkgconfigz*.pc#.*$z	^(\w+)(=)z^([\w.]+)(:)spvalueinterpr+   z[^${}#=:\n.]+ru   z\$\$z\$\{curlyr   rE   rq   rt   z[^${}#\n\s]+)r*   r   r   r   N)r7   r8   r9   r:   r;   r<   r=   r>   r
   r?   r   r   r@   r   r   r   r   r   r	   r   r~   rA   r4   r4   r4   r5   r$   O  s:   


r$   c                	   @   s~   e Zd ZdZdZdgZdgZg Zddej	fde
eeefde
ejeefd	e
eejefed
ddejfdefdefgiZdS )r%   a  
    Lexer for `pacman.conf
    <https://www.archlinux.org/pacman/pacman.conf.5.html>`_.

    Actually, IniLexer works almost fine for this format,
    but it yield error token. It is because pacman.conf has
    a form without assignment like:

        UseSyslog
        Color
        TotalDownload
        CheckSpace
        VerbosePkgLists

    These are flags to switch on.

    .. versionadded:: 2.1
    Z
PacmanConfZ
pacmanconfzpacman.confr*   r   z^(\s*)(\[.*?\])(\s*)$z(\w+)(\s*)(=)z^(\s*)(\w+)(\s*)$)z$repoz$archz%oz%ur`   ra   r+   ru   N)r7   r8   r9   r:   r;   r<   r=   r>   r
   r?   r   r   r   r   r@   r   r   rJ   r	   rA   r4   r4   r4   r5   r%     s.   	r%   c                   @   s  e Zd ZdZdZdgZdgZdeej	e
ej	fdeeje
ejfdeeje
fdeeejeejefd	ejd
fdefdefdejdfdejdfdeej	eejfdejfde
fgdejfdejfdejdfgdejfdejfdejdfgdejfd	ejdfdejdfdejfgdZdS )r&   zM
    Lexer for `Augeas <http://augeas.net>`_.

    .. versionadded:: 2.4
    ZAugeasZaugeasz*.augz(module)(\s*)([^\s=]+)z(let)(\s*)([^\s=]+)zV(del|store|value|counter|seq|key|label|autoload|incl|excl|transform|test|get|put)(\s+)z8(\()([^:]+)(\:)(unit|string|regexp|lens|tree|filter)(\))z\(\*rZ   z[*+\-.;=?|]z
[()\[\]{}]rn   ro   z\/r   z([A-Z]\w*)(\.)(\w+)ru   r+   rs   z[^"]rE   z[^/]z[^*)]rv   z\*\)z[)*])r*   ro   r   rZ   N)r7   r8   r9   r:   r;   r<   r=   r   r   r   r   r   r|   rJ   rI   r   ry   r
   r   r   r   rl   r   r   rA   r4   r4   r4   r5   r&     s>   






r&   c                   @   s   e Zd ZdZdZdgZg dZddeee	fdefdefd	e
jfd
efdefdefde	jfdefdejfdejfdejfdejfdejfdefdefdefgiZdS )r'   z
    Lexer for `TOML <https://github.com/toml-lang/toml>`_, a simple language
    for config files.

    .. versionadded:: 2.4
    ZTOMLZtoml)z*.tomlZPipfilezpoetry.lockr*   z^(\s*)(\[.*?\])$[ \t]+rt   z#.*?$z"(\\\\|\\[^\\]|[^"\\])*"z\'\'\'(.*)\'\'\'z
\'[^\']*\'z(true|false)$z[a-zA-Z_][\w\-]*z>\d{4}-\d{2}-\d{2}(?:T| )\d{2}:\d{2}:\d{2}(?:Z|[-+]\d{2}:\d{2})z'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?z\d+[eE][+-]?[0-9]+j?z[+-]?(?:(inf(?:inity)?)|nan)z[+-]?\d+z[]{}:(),;[]z\.r   N)r7   r8   r9   r:   r;   r<   r=   r   r   r   r
   r?   r   r   r   r   rk   r}   r   r   rA   r4   r4   r4   r5   r'     s0   r'   c                   @   s   e Zd ZdZdZddgZdgZdZddee	e
fd	ee	ee	ee	fd
ee	ee	ee	fedee	eeeee	fedee	eeeee	fdee	eee	ee	fgiZdS )r(   z}
    Lexer for `NextedText <https://nestedtext.org>`_, a human-friendly data 
    format.
    
    .. versionadded:: 2.9
    Z
NestedTextZ
nestedtextntz*.ntz#^(\s*)({0})(.*?)({0}: ?)(.*?)(\s*)$r*   z^(\s*)(#.*?)$z^(\s*)(>)( ?)(.*?)(\s*)$z^(\s*)(-)( ?)(.*?)(\s*)$'rn   z^(\s*)(.*?)(:)( ?)(.*?)(\s*)$N)r7   r8   r9   r:   r;   r<   r=   Z_quoted_dict_itemr   r   r
   r   r   r   r   rA   r4   r4   r4   r5   r(   "  s   r(   c                   @   s   e Zd ZdZdZdgZddgZejej	B ej
B ZdZdZdZeeejedfeeejedfeeeeefd	efd
efdefdefgdeedfgdZdd ZdS )r)   z
    Lexer for `Singularity definition files
    <https://www.sylabs.io/guides/3.0/user-guide/definition_files.html>`_.

    .. versionadded:: 2.6
    ZSingularityZsingularityz*.defzS^(\s*)(bootstrap|from|osversion|mirrorurl|include|registry|namespace|includecmd)(:)zT^(%(?:pre|post|setup|environment|help|labels|test|runscript|files|startscript))(\s*)z6^(%app(?:install|help|run|labels|env|test|files))(\s*)scriptz	\s*#.*?\nz"\b(([0-9]+\.?[0-9]*)|(\.[0-9]+))\br   z
(?!^\s*%).z(.+?(?=^\s*%))|(.*)rE   )r*   r   c                 C   s>   d}t d| t jr|d7 }t tjdd | r:|d7 }|S )zlThis is a quite simple script file, but there are a few keywords
        which seem unique to this language.r   z&\b(?:osversion|includecmd|mirrorurl)\bg      ?r0   Ng\(\?)r   searchr   r)   _section)r3   resultr4   r4   r5   r6   \  s    zSingularityLexer.analyse_textN)r7   r8   r9   r:   r;   r<   r=   r   r   r   DOTALLrj   Z_headersr   Z_appsectr   r   ZHeadingr   r   r	   r
   r   r   r   rA   r6   r4   r4   r4   r5   r)   <  s(   
r)   )0r:   r   Zpygments.lexerr   r   r   r   r   r   r   Zpygments.tokenr	   r
   r   r   r   r   r   r   r   r   r   r   Zpygments.lexers.shellr   Zpygments.lexers.datar   __all__r   r   r   rP   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r4   r4   r4   r5   <module>   s8   
$8#,M=+ .# 3//::,3