o a@sdZddlZddlmZmZmZmZmZmZm Z ddl m Z m Z m Z mZmZmZmZmZmZmZmZmZddlmZddlmZgdZGdd d eZGd d d eZGd d d eZddZGdddeZ GdddeZ!GdddeZ"GdddeZ#GdddeZ$GdddeZ%GdddeZ&GdddeZ'Gd d!d!eZ(Gd"d#d#eZ)Gd$d%d%eZ*Gd&d'd'eZ+Gd(d)d)eZ,Gd*d+d+eZ-Gd,d-d-eZ.Gd.d/d/eZ/dS)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 RegexLexerdefaultwordsbygroupsincludeusing) TextCommentOperatorKeywordNameStringNumber Punctuation WhitespaceLiteralErrorGeneric) BashLexer) JsonLexer)IniLexer RegeditLexerPropertiesLexer KconfigLexerCfengine3LexerApacheConfLexerSquidConfLexerNginxConfLexerLighttpdConfLexer DockerLexerTerraformLexer TermcapLexer TerminfoLexerPkgConfigLexerPacmanConfLexer AugeasLexer TOMLLexerNestedTextLexerSingularityLexerc @sleZdZdZdZgdZgdZddgZddefd e j fd e fd e e jeeeefd e jfgiZd dZdS)rz5 Lexer for configuration files in INI style. INI)inicfgdosini)z*.iniz*.cfgz*.infz .editorconfigz *.servicez*.socketz*.devicez*.mountz *.automountz*.swapz*.targetz*.pathz*.timerz*.slicez*.scopez text/x-iniztext/infroot\s+[;#].*z\[.*?\]$z"(.*?)([ \t]*)(=)([ \t]*)([^\t\n]*)z(.+?)$cCs2|d}|dkr dS|ddko||ddkS)N Fr[])find)textnposr99/usr/lib/python3/dist-packages/pygments/lexers/configs.py analyse_text8s zIniLexer.analyse_textN)__name__ __module__ __qualname____doc__namealiases filenames mimetypesrr Singler rr Attributer rtokensr;r9r9r9r:rs" rc @seZdZdZdZdgZdgZdgZdefde fde j fd e e eeje fd e eje ee d fd e eje ee d fgd edfde ejeedfdedfedgdZddZdS)rz Lexer for `Windows Registry `_ files produced by regedit. .. versionadded:: 1.6 regregistryz*.regztext/x-windows-registryzWindows Registry Editor.*r/r0z(\[)(-?)(HKEY_[A-Z_]+)(.*?\])$z)("(?:\\"|\\\\|[^"])+")([ \t]*)(=)([ \t]*)valuez(.*?)([ \t]*)(=)([ \t]*)-#popz1(dword|hex(?:\([0-9a-fA-F]\))?)(:)([0-9a-fA-F,]+).+r.rIcCs |dS)NzWindows Registry Editor) startswith)r7r9r9r:r;gs zRegeditLexer.analyse_textN)r<r=r>r?r@rArBrCr rr rDrr r r BuiltinrEVariablerrrrrFr;r9r9r9r:r?s< rc @szeZdZdZdZddgZdgZdgZddee j e e fd e j fd ee e fd ee e fd ee j e ee e fd e fgiZdS)rz Lexer for configuration files in Java's properties format. Note: trailing whitespace counts as part of the value as per spec .. versionadded:: 1.4 Properties properties jpropertiesz *.propertiesztext/x-java-propertiesr.z^(\w+)([ \t])(\w+\s*)$z^\w+(\\[ \t]\w*)*$z (^ *)([#!].*)z(^ *)((?:;|//).*)z/(.*?)([ \t]*)([=:])([ \t]*)(.*(?:(?<=\\)\n.*)*)z\sN)r<r=r>r?r@rArBrCrr rErrr r rFr9r9r9r:rks"  rcCsBd}|dkr d}nd|d}|dkrd}nd|}d|||fS) N+z{1,%d}r4z{%s}z(?:\t| %s\t| {%s})%s.*\nr9)level tab_width space_repeat level_repeatr9r9r: _rx_indents r\c @seZdZdZdZgdZgdZdgZdZddZ d d Z d e fd e j fed ddefdedfdejfdefdefdejfdej fdejfdefg defe de de de de de de d ed!g e de de de de de de d d" Zd#S)$rzC For Linux-style Kconfig files. .. versionadded:: 1.6 Kconfig)kconfig menuconfigz linux-configz kernel-config)zKconfig*z *Config.in*z external.in*zstandard-modules.inztext/x-kconfigrcCst|tjd|fS)Nzindent%s)r\rDocrXr9r9r: call_indentszKconfigLexer.call_indentcCst|tjfdtftdgS)N\s*\n#pop:2)r\rr`r rrar9r9r: do_indents zKconfigLexer.do_indentr/#.*?\n)mainmenuconfigr_choice endchoicecommentmenuendmenuz visible ififendifsourcepromptselectz depends onrrangeoption\bsuffixz(---help---|help)[\t ]*\nhelpz;(bool|tristate|string|hex|int|defconfig_list|modules|env)\bz[!=&|]z[()][0-9]+z '(''|[^'])*'z "(""|[^"])*"\S+rcr2rUr4rK) r.rxindent7indent6indent5indent4indent3indent2indent1N)r<r=r>r?r@rArBrCflagsrbrerr rDrr r rOr rrIntegerrDoubler rrFr9r9r9r:rsZ  rc@sneZdZdZdZddgZdgZgZdefde e e e e e fde e e e e e j ed fd e e e e e e j fd e ee jee e je ee fd e e je eefd edfde e j efde e jefde e jefde jfdefdefdefdejfdejfde j fde fgdejdfdejfd edfdefdefgdejd fd!ejdfd"ejfgd#edfd$efde jfde fgd%Zd&S)'rz_ Lexer for `CFEngine3 `_ policy files. .. versionadded:: 1.5 CFEngine3 cfengine3cf3z*.cfrfz(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\\.rK\n.#pushz[})]z [^${()}]+z\),)r.rrrN)r<r=r>r?r@rArBrCr rr rr FunctionrrPTyper Reservedr rClass DeclarationrFloatrInterpolEscaperFr9r9r9r:rsl      rc @seZdZdZdZgdZgdZdgZej ej BZ de fde fdeeje eejfd eejejfd ejd fd efgd efde dfdefde fdefdefdejfdefdejfdefg dZdS)rzo Lexer for configuration files following the Apache config file format. .. versionadded:: 0.6 ApacheConf) apacheconfaconfapache)z .htaccessz apache.confz apache2.confztext/x-apacheconfr/z#(.*\\\n)+.*$|(#.*?)$z"(<[^\s>/][^\s>]*)(?:(\s+)(.*))?(>)z(]+)(>)z[a-z]\w*rIz\.+z\\\nz\n+rKz\\z[^\S\n]+\d+\.\d+\.\d+\.\d+(?:/\d+)?rz/([*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"\\]+rMN)r<r=r>r?r@rArBrCre MULTILINE IGNORECASErrr rr TagrrOr rOtherr rrFr9r9r9r:r%s@     rc @seZdZdZdZgdZdgZdgZej Z dZ dZ dZ d Zd Zd Zd Zd efdedfee dddefee dddejfee dddefeedddefeedddefeedddefededejfdefdefg dejdfdedfedgdZdS)rzj Lexer for `squid `_ configuration files. .. versionadded:: 0.9 SquidConf) squidconf squid.confsquidrztext/x-squidconf) access_logacl always_direct announce_hostannounce_period announce_port announce_toanonymize_headers append_domainas_whois_serverauth_param_basicauthenticate_childrenauthenticate_programauthenticate_ttl broken_posts buffered_logscache_access_logcache_announce cache_dircache_dns_programcache_effective_groupcache_effective_user cache_hostcache_host_aclcache_host_domain cache_log cache_memcache_mem_high cache_mem_low cache_mgrcachemgr_passwd cache_peercache_peer_accesscache_replacement_policycache_stoplistcache_stoplist_patterncache_store_log cache_swapcache_swap_highcache_swap_logcache_swap_low client_dbclient_lifetimeclient_netmaskconnect_timeout coredump_dirdead_peer_timeout debug_options delay_access delay_classdelay_initial_bucket_leveldelay_parameters delay_pools deny_info dns_children dns_defnamesdns_nameservers dns_testnamesemulate_httpd_log err_html_textfake_user_agent firewall_ip forwarded_forforward_snmpd_portfqdncache_sizeftpget_optionsftpget_programftp_list_width ftp_passiveftp_userhalf_closed_clients header_accessheader_replacehierarchy_stoplisthigh_response_time_warninghigh_page_fault_warning hosts_file htcp_port http_accesshttp_anonymizer httpd_accelhttpd_accel_hosthttpd_accel_porthttpd_accel_uses_host_headerhttpd_accel_with_proxy http_porthttp_reply_access icp_access icp_hit_staleicp_porticp_query_timeout ident_lookupident_lookup_access ident_timeoutincoming_http_averageincoming_icp_averageinside_firewall ipcache_high ipcache_low ipcache_size local_domainlocal_iplogfile_rotatelog_fqdnlog_icp_queries log_mime_hdrsmaximum_object_sizemaximum_single_addr_tries mcast_groupsmcast_icp_query_timeoutmcast_miss_addrmcast_miss_encode_keymcast_miss_port memory_poolsmemory_pools_limitmemory_replacement_policy mime_tablemin_http_poll_cntmin_icp_poll_cntminimum_direct_hopsminimum_object_sizeminimum_retry_timeout miss_accessnegative_dns_ttl negative_ttlneighbor_timeoutneighbor_type_domain netdb_high netdb_lownetdb_ping_periodnetdb_ping_rate never_directno_cachepassthrough_proxy pconn_timeout pid_filenamepinger_programpositive_dns_ttl prefer_direct proxy_authproxy_auth_realm query_icmp quick_abortquick_abort_maxquick_abort_minquick_abort_pctrange_offset_limit read_timeoutredirect_childrenredirect_programredirect_rewrites_host_header reference_agerefresh_patternreload_into_imsrequest_body_max_size request_sizerequest_timeoutshutdown_lifetimesingle_parent_bypasssiteselect_timeout snmp_accesssnmp_incoming_address snmp_port source_ping ssl_proxystore_avg_object_sizestore_objects_per_bucketstrip_query_termsswap_level1_dirsswap_level2_dirstcp_incoming_addresstcp_outgoing_addresstcp_recv_bufsizetest_reachability udp_hit_objudp_hit_obj_sizeudp_incoming_addressudp_outgoing_addressunique_hostnameunlinkd_programuri_whitespace useragent_logvisible_hostname wais_relaywais_relay_hostwais_relay_port)z proxy-onlyweightttlzno-queryrz round-robinzmulticast-responderonoffalldenyallowviaparentz no-digestheaplrurealmchildrenq1q2credentialsttlnonedisableoffline_togglediskd)shutdowninfo parameter server_list client_listr) objects vm_objects utilizationipcache fqdncachedns redirectorio reply_headersfiledescriptorsnetdb)statusenablerxclear) url_regex urlpath_regex referer_regexportproto req_mime_type rep_mime_typemethodbrowserusersrcdsttime dstdomainidentsnmp_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}(?:(?<=::)|(?r?r@rArBrCrrrkeywordsoptsactions actions_stats actions_logaclsip_rerr rr r Constantrrrr rrrFr9r9r9r:rPs@;   rc@seZdZdZdZdgZdgZdgZdee e e fde dfe d gd e d fde jdfe d gd e d fde dfe d gdejfde jfde jfdee e ejfdefdejfdee e ejfde fdefde fde fdefg dZdS)rza Lexer for `Nginx `_ configuration files. .. versionadded:: 0.11 zNginx configuration filenginxz nginx.confztext/x-nginx-confz(include)(\s+)([^\s;]+)z[^\s;#]+stmtbase\}rdz\{block;rK#.*\nzon|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.rrrN)r<r=r>r?r@rArBrCrr rr rr Namespacer rDrrPrrrRegexr rFr9r9r9r:rsD   rc @sreZdZdZdZddgZdgZdgZddej fd e fd e fd e fd e fd e fde jfdefdejfdefg iZdS)rzg Lexer for `Lighttpd `_ configuration files. .. versionadded:: 0.11 zLighttpd configuration filelighttpdlightyz lighttpd.confztext/x-lighttpd-confr.rz/\S*z [a-zA-Z._-]+rryz=>|=~|\+=|==|=|\+z\$[A-Z]+z [(){}\[\],]z"([^"\\]*(?:\\.[^"\\]*)*)"r/N)r<r=r>r?r@rArBrCr rDr r rr rOrrrrrFr9r9r9r:rs&rc @seZdZdZdZddgZddgZdgZdZd Z d Z e j e j BZd d efd eeeeeeeefde feeeeefde e feeeeefde feeeeeeefde e feeeeefdeeeeefde feeefdeefg iZdS)r z` Lexer for `Docker `_ configuration files. .. versionadded:: 2.0 Dockerdocker dockerfile Dockerfilez*.dockerztext/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)r<r=r>r?r@rArBrC _keywords_bash_keywords_lbrrrrr rr rrrrrrFr9r9r9r:r s<    r c @s eZdZdZdZddgZdgZddgZdZd d eZ d Z d Z d ZdZdZdZdZdZdZdZe eeeeeeeeZd d eZddZededdeejfeddddejfee ddde j!fededde"fgd e#j$d!fd"e#j%fedd#ee&ej'e&e(e&e)fd$ee&ej*e&e(e&fd%ee&e+jje&e(e&fed&eej,e)fd'ee)ej'e)fe d(ee j-e&d)fd*efg d+ee&ej.e&ej/e&e)fgd,eej/fd-eej/fgd.e)fgd/e#j$fd0e#j$d1fd2e#j$d3fd4e#j$fgd5e&fd6e&fd7ee0e&fgd8Z1d9S):r!zc Lexer for `terraformi .tf files `_. .. versionadded:: 2.1 Terraform terraformtfz*.tfzapplication/x-tfzapplication/x-terraform)backenddatamoduleoutputprovider provisionerresourcevariablez({})|) rnumberboollisttuplemapsetobjectnull) absceilfloorlogmaxmixparseintpowsignum)chompformat formatlistindentjoinlowerregexregexallreplacesplitstrrevsubstrtitletrim trimprefix trimsuffix trimspaceupper)alltrueanytrue chunklistcoalesce coalescelistcompactconcatcontainsdistinctelementflattenindexkeyslengthrlookupr matchkeysmergersreversesetintersection setproduct setsubtractsetunionslicesortsum transposevalueszipmap) base64decode base64encode base64gzip csvdecode jsondecode jsonencodetextdecodebase64textencodebase64 urlencode yamldecode yamlencode) abspathdirname pathexpandbasenamefile fileexistsfileset filebase64 templatefile) formatdatetimeadd timestamp) base64sha256 base64sha512bcryptfilebase64sha256filebase64sha512filemd5filesha1 filesha256 filesha512md5 rsadecryptsha1sha256sha512uuiduuidv5)cidrhost cidrnetmask cidrsubnet cidrsubnets) candefaultstobooltolisttomaptonumbertosettostringtryc csR|d}|t|dfV|dtj|dfV|d|_|d|_|jtj|dfV||_|d}|dddk}g}t d}| |j |jD]<}|r`| }n| }||kr|D] } | tj| fVql|tj|fV||_n||qU|D] } | t| fVqt|j |_dS)Nr4rUr2rJz.*? )startr groupr DelimiterposendHeredocrcompilefinditerr7striprstripappendrlen) selfmatchctxr<hdnametolerantlinesline_recheckamatchr9r9r:heredoc_callback{s4         zTerraformLexer.heredoc_callbackbasic whitespacez(".*"))truefalserur identifier punctuationryz\s*/\*rkz\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/\*rz\*/rKz[*/]rr/z(\\)(\n))r.rRrXrVrWrkrSN)2r<r=r>r?r@rArBrCclassesrr classes_retypesnumeric_functionsstring_functionscollection_functionsencoding_functionsfilesystem_functionsdate_time_functionshash_crypto_functionsip_network_functionstype_conversion_functionsbuiltins builtins_rerQrrrrrr rr rrr MultilinerDrrOr rrErrrrrPr rFr9r9r9r:r!?s (  &      r!c @seZdZdZdZdgZddgZgZdefde j dfde fgd e d fd e d fd e fde j fgdeee fde dfdeeefdedfd e fde jfgdefd e d fdefdefgdZdS)r"zm Lexer for termcap database source. This is very simple and minimal. .. versionadded:: 2.1 Termcaptermcapz termcap.srcz^#.*z ^[^\s#:|]+namesr/rrK:defs\|z[^:|]+z(\\)(\n[ \t]*)z\n[ \t]*rd (#)([0-9]+)rrz [^\s:=#]+z\\072z[^:\\]+rr.rjrlrN)r<r=r>r?r@rArBrCr r rrrrErr r rrrrFr9r9r9r:r"s8     r"c @seZdZdZdZdgZddgZgZdefde j dfde fgd e d fd e e e d fd e fde jfgde fd e dfde eefdedfd e e e fde jfgdefd e e e d fdefdefgdZdS)r#zn Lexer for terminfo database source. This is very simple and minimal. .. versionadded:: 2.1 Terminfoterminfoz terminfo.srcz^#.*$z ^[^\s#,|]+rjr/rrKz (,)([ \t]*)rlrmz[^,|]+z\n[ \t]+rdrnrrz [^\s,=#]+z\\[,\\]z[^\\,]+rroN)r<r=r>r?r@rArBrCr r rrrrrEr rrrrFr9r9r9r:r# s8     r#c @seZdZdZdZdgZdgZgZdej fde e j e fde e jedfed d efd efd efgd efdejdfgdejdfde j fged dej dfdedfd efdefd efgdZdS)r$z Lexer for `pkg-config `_ (see also `manual page `_). .. versionadded:: 2.1 PkgConfig pkgconfigz*.pc#.*$z ^(\w+)(=)z ^([\w.]+)(:)spvalueinterpr/z [^${}#=:\n.]+rz\$\$z\$\{curlyrrKrrz [^${}#\n\s]+)r.rvrwruN)r<r=r>r?r@rArBrCr rDrr rEr rrrrr rrrFr9r9r9r:r$Os<     r$c @s~eZdZdZdZdgZdgZgZddej fde e e e fde e je efd e e e je fed d d e jfd e fdefgiZdS)r%a Lexer for `pacman.conf `_. 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 PacmanConf pacmanconfz pacman.confr.rtz^(\s*)(\[.*?\])(\s*)$z (\w+)(\s*)(=)z^(\s*)(\w+)(\s*)$)z$repoz$archz%oz%ururvr/rN)r<r=r>r?r@rArBrCr rDrrr r rEr rrPr rFr9r9r9r:r%s0   r%c@seZdZdZdZdgZdgZdeej e e j fdeej e e j fdee je fdeee j eejefd ejd fd efd efd ejdfdejdfdee j ee j fde j fde fg dejfdejfd ejdfgdejfdejfdejdfgdejfd ejdfdejdfdejfgdZdS)r&zM Lexer for `Augeas `_. .. versionadded:: 2.4 Augeasaugeasz*.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\(\*rkz [*+\-.;=?|]z [()\[\]{}]rrz\/rz([A-Z]\w*)(\.)(\w+)rr/rz[^"]rKz[^/]z[^*)]rz\*\)z[)*])r.rrrkN)r<r=r>r?r@rArBrr rrr rrPrOrrr rgr rrrrrFr9r9r9r:r&s@        r&c@seZdZdZdZdgZgdZddeee fdefdefd e j fd e fd e fd e fd e j fdefdejfdejfdejfdejfdejfdefdefdefgiZdS)r'z Lexer for `TOML `_, a simple language for config files. .. versionadded:: 2.4 TOMLtoml)z*.tomlPipfilez poetry.lockr.z^(\s*)(\[.*?\])$[ \t]+rz#.*?$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\.rN)r<r=r>r?r@rArBrrr r rDrrr rrrrr rFr9r9r9r:r's2 r'c@seZdZdZdZddgZdgZdZddee e fd ee e e e e fd ee e e e e fe d ee e ee e e fe d ee e ee e e fd ee ee e e e fgiZdS)r(z} Lexer for `NextedText `_, a human-friendly data format. .. versionadded:: 2.9 NestedText nestedtextntz*.ntz#^(\s*)({0})(.*?)({0}: ?)(.*?)(\s*)$r.z ^(\s*)(#.*?)$z^(\s*)(>)( ?)(.*?)(\s*)$z^(\s*)(-)( ?)(.*?)(\s*)$'rz^(\s*)(.*?)(:)( ?)(.*?)(\s*)$N)r<r=r>r?r@rArB_quoted_dict_itemrrr rrrr rFr9r9r9r:r("s r(c@seZdZdZdZdgZddgZejej Bej BZ dZ dZ dZe eejedfeeejedfe eeeefd efd efd efd efgd eedfgdZddZdS)r)z Lexer for `Singularity definition files `_. .. versionadded:: 2.6 Singularity 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]+))\brz (?!^\s*%).z(.+?(?=^\s*%))|(.*)rK)r.rcCs>d}td|tjr|d7}ttjdd|r|d7}|S)zlThis is a quite simple script file, but there are a few keywords which seem unique to this language.rz&\b(?:osversion|includecmd|mirrorurl)\bg?r4Ng\(\?)rsearchrr)_section)r7resultr9r9r:r;\s zSingularityLexer.analyse_textN)r<r=r>r?r@rArBrrrDOTALLr_headersr_appsectrrHeadingrr r r rrrrFr;r9r9r9r:r)<s*  r))0r?rpygments.lexerrrrrrrrpygments.tokenr r r r r rrrrrrrpygments.lexers.shellrpygments.lexers.datar__all__rrrr\rrrrrrr r!r"r#r$r%r&r'r(r)r9r9r9r:s: $8  #,M=+.#3//::,3