Commits

blackbird  committed c6b5a45

[svn] added examplefile for apache lexer and improved it

  • Participants
  • Parent commits 3b5c6dd
  • Branches trunk

Comments (0)

Files changed (4)

File docs/src/lexers.txt

 
     *New in Pygments 0.6.*
 
-    :Aliases: ``apacheconf``, ``aconf``
-    :Filename patterns: ``.htaccess``, ``apache.conf``
+    :Aliases: ``apacheconf``, ``aconf``, ``apache``
+    :Filename patterns: ``.htaccess``, ``apache.conf``, ``apache2.conf``
     :Mimetypes: None
 
 

File pygments/lexers/_mapping.py

 """
 
 LEXERS = {
-    'ApacheConfLexer': ('pygments.lexers.text', 'ApacheConf', ('apacheconf', 'aconf'), ('.htaccess', 'apache.conf'), ()),
+    'ApacheConfLexer': ('pygments.lexers.text', 'ApacheConf', ('apacheconf', 'aconf', 'apache'), ('.htaccess', 'apache.conf', 'apache2.conf'), ()),
     'BBCodeLexer': ('pygments.lexers.text', 'BBCode', ('bbcode',), (), ()),
     'BashLexer': ('pygments.lexers.other', 'Bash', ('bash', 'sh'), ('*.sh',), ('application/x-sh', 'application/x-shellscript')),
     'BooLexer': ('pygments.lexers.dotnet', 'Boo', ('boo',), ('*.boo',), ('text/x-boo',)),

File pygments/lexers/text.py

         if text[1:3].isalnum() and text[3].isspace():
             return 0.9
 
+
 class ApacheConfLexer(RegexLexer):
     """
     Lex Apache configuration like files.
     """
     name = 'ApacheConf'
-    aliases = ['apacheconf', 'aconf']
-    filenames = ['.htaccess', 'apache.conf']
+    aliases = ['apacheconf', 'aconf', 'apache']
+    filenames = ['.htaccess', 'apache.conf', 'apache2.conf']
+    flags = re.MULTILINE | re.IGNORECASE
 
     tokens = {
         'root': [
-            (r'(\s*)(#.*)',
-             bygroups(Text, Comment)),
-            (r'^(\s*)(</?\w+)',
-             bygroups(Text, Name.Tag), 'section'),
-            (r'^(\s*)(\w+)(\s+)',
-             bygroups(Text, Name.Attribute, Text),
-             'value'),
-            (r'[^<\n]+', Text),
-        ],
-        'datatypes': [
-            (r'\d+\b', Number),
-            (r'"(\\\\|\\"|[^"\n])*"', String.Double),
-            (r'\S+\b', String.Symbol),
-            (r'[ \t]+', Text),
-            (r'[^\n]+', String),
-        ],
-        'section': [
-            (r'>', Name.Tag, '#pop'),
-            include('datatypes'),
+            (r'^(\s*)(#.*?)$', bygroups(Text, Comment)),
+            (r'\s+', Text),
+            (r'(<[^\s>]+)(?:(\s+)(.*?))?(>)',
+             bygroups(Name.Tag, Text, String, Name.Tag)),
+            (r'([a-zA-Z][a-zA-Z0-9]*)(\s+)',
+             bygroups(Name.Builtin, Text), 'value')
         ],
         'value': [
-            include('datatypes'),
-            (r'\n', Text, '#pop'),
-        ],
+            (r'$', Text, '#pop'),
+            (r'\s', Text), # XXX: \s+ does not work with examplefile
+            (r'\d+', Number),
+            (r'/([a-zA-Z0-9][a-zA-Z0-9_./-]+)', String.Other),
+            (r'(on|off|none|any|all|double|email|dns|min|minimal|'
+             r'os|productonly|full|emerg|alert|crit|error|warn|'
+             r'notice|info|debug|registry|script|inetd|standalone|'
+             r'user|group)\b', Keyword),
+            (r'"([^"\\]*(?:\\.[^"\\]*)*)"', String.Double),
+            (r'[^\s"]+', Text)
+        ]
     }

File tests/examplefiles/apache2.conf

+# Based upon the NCSA server configuration files originally by Rob McCool.
+# Changed extensively for the Debian package by Daniel Stone <daniel@sfarc.net>
+# and also by Thom May <thom@debian.org>.
+
+# ServerRoot: The top of the directory tree under which the server's
+# configuration, error, and log files are kept.
+#
+# NOTE!  If you intend to place this on an NFS (or otherwise network)
+# mounted filesystem then please read the LockFile documentation
+# (available at <URL:http://www.apache.org/docs/mod/core.html#lockfile>);
+# you will save yourself a lot of trouble.
+
+ServerRoot "/etc/apache2"
+
+# The LockFile directive sets the path to the lockfile used when Apache
+# is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or
+# USE_FLOCK_SERIALIZED_ACCEPT. This directive should normally be left at
+# its default value. The main reason for changing it is if the logs
+# directory is NFS mounted, since the lockfile MUST BE STORED ON A LOCAL
+# DISK. The PID of the main server process is automatically appended to
+# the filename. 
+
+LockFile /var/lock/apache2/accept.lock
+
+# PidFile: The file in which the server should record its process
+# identification number when it starts.
+
+PidFile /var/run/apache2.pid
+
+# Timeout: The number of seconds before receives and sends time out.
+
+Timeout 300
+
+# KeepAlive: Whether or not to allow persistent connections (more than
+# one request per connection). Set to "Off" to deactivate.
+
+KeepAlive On
+
+# MaxKeepAliveRequests: The maximum number of requests to allow
+# during a persistent connection. Set to 0 to allow an unlimited amount.
+# We recommend you leave this number high, for maximum performance.
+
+MaxKeepAliveRequests 100
+
+# KeepAliveTimeout: Number of seconds to wait for the next request from the
+# same client on the same connection.
+
+KeepAliveTimeout 15
+
+##
+## Server-Pool Size Regulation (MPM specific)
+## 
+
+# prefork MPM
+# StartServers ......... number of server processes to start
+# MinSpareServers ...... minimum number of server processes which are kept spare
+# MaxSpareServers ...... maximum number of server processes which are kept spare
+# MaxClients ........... maximum number of server processes allowed to start
+# MaxRequestsPerChild .. maximum number of requests a server process serves
+<IfModule prefork.c>
+StartServers         5
+MinSpareServers      5
+MaxSpareServers     10
+MaxClients          20
+MaxRequestsPerChild  0
+</IfModule>
+
+# pthread MPM
+# StartServers ......... initial  number of server processes to start
+# MaxClients ........... maximum  number of server processes allowed to start
+# MinSpareThreads ...... minimum  number of worker threads which are kept spare
+# MaxSpareThreads ...... maximum  number of worker threads which are kept spare
+# ThreadsPerChild ...... constant number of worker threads in each server process
+# MaxRequestsPerChild .. maximum  number of requests a server process serves
+<IfModule worker.c>
+StartServers         2
+MaxClients         150 
+MinSpareThreads     25
+MaxSpareThreads     75
+ThreadsPerChild     25
+MaxRequestsPerChild  0
+</IfModule>
+
+# perchild MPM
+# NumServers ........... constant number of server processes
+# StartThreads ......... initial  number of worker threads in each server process
+# MinSpareThreads ...... minimum  number of worker threads which are kept spare
+# MaxSpareThreads ...... maximum  number of worker threads which are kept spare
+# MaxThreadsPerChild ... maximum  number of worker threads in each server process
+# MaxRequestsPerChild .. maximum  number of connections per server process (then it dies)
+<IfModule perchild.c>
+NumServers           5
+StartThreads         5
+MinSpareThreads      5
+MaxSpareThreads     10
+MaxThreadsPerChild  20
+MaxRequestsPerChild  0
+AcceptMutex fcntl
+</IfModule>
+
+User www-data
+Group www-data
+
+# The following directives define some format nicknames for use with
+# a CustomLog directive (see below).
+LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
+LogFormat "%h %l %u %t \"%r\" %>s %b" common
+LogFormat "%{Referer}i -> %U" referer
+LogFormat "%{User-agent}i" agent
+
+
+# Global error log.
+ErrorLog /var/log/apache2/error.log
+
+# Include module configuration:
+Include /etc/apache2/mods-enabled/*.load
+Include /etc/apache2/mods-enabled/*.conf
+
+# Include all the user configurations:
+Include /etc/apache2/httpd.conf
+
+# Include ports listing
+Include /etc/apache2/ports.conf
+
+# Include generic snippets of statements
+Include /etc/apache2/conf.d/[^.#]*
+
+#Let's have some Icons, shall we?
+Alias /icons/ "/usr/share/apache2/icons/"
+<Directory "/usr/share/apache2/icons">
+    Options Indexes MultiViews
+    AllowOverride None
+    Order allow,deny
+    Allow from all
+</Directory>
+
+# Set up the default error docs.
+#
+# Customizable error responses come in three flavors:
+# 1) plain text 2) local redirects 3) external redirects
+#
+# Some examples:
+#ErrorDocument 500 "The server made a boo boo."
+#ErrorDocument 404 /missing.html
+#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
+#ErrorDocument 402 http://www.example.com/subscription_info.html
+#
+
+#
+# Putting this all together, we can Internationalize error responses.
+#
+# We use Alias to redirect any /error/HTTP_<error>.html.var response to
+# our collection of by-error message multi-language collections.  We use 
+# includes to substitute the appropriate text.
+#
+# You can modify the messages' appearance without changing any of the
+# default HTTP_<error>.html.var files by adding the line;
+#
+#   Alias /error/include/ "/your/include/path/"
+#
+# which allows you to create your own set of files by starting with the
+# /usr/local/apache2/error/include/ files and
+# copying them to /your/include/path/, even on a per-VirtualHost basis.
+#
+
+<IfModule mod_negotiation.c>
+<IfModule mod_include.c>
+    Alias /error/ "/usr/share/apache2/error/"
+
+    <Directory "/usr/share/apache2/error">
+        AllowOverride None
+        Options IncludesNoExec
+        AddOutputFilter Includes html
+        AddHandler type-map var
+        Order allow,deny
+        Allow from all
+        LanguagePriority en es de fr
+        ForceLanguagePriority Prefer Fallback
+    </Directory>
+
+    ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
+    ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
+    ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
+    ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
+    ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
+    ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
+    ErrorDocument 410 /error/HTTP_GONE.html.var
+    ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
+    ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
+    ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
+    ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
+    ErrorDocument 415 /error/HTTP_SERVICE_UNAVAILABLE.html.var
+    ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
+    ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
+    ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
+    ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
+    ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
+
+</IfModule>
+</IfModule>
+
+DirectoryIndex index.html index.cgi index.pl index.php index.xhtml
+
+# UserDir is now a module
+#UserDir public_html
+#UserDir disabled root
+
+#<Directory /home/*/public_html>
+#	AllowOverride FileInfo AuthConfig Limit
+#	Options Indexes SymLinksIfOwnerMatch IncludesNoExec
+#</Directory>
+
+AccessFileName .htaccess
+
+<Files ~ "^\.ht">
+    Order allow,deny
+    Deny from all
+</Files>
+
+UseCanonicalName Off
+
+TypesConfig /etc/mime.types
+DefaultType text/plain
+
+HostnameLookups Off
+
+IndexOptions FancyIndexing VersionSort
+
+AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
+
+AddIconByType (TXT,/icons/text.gif) text/*
+AddIconByType (IMG,/icons/image2.gif) image/*
+AddIconByType (SND,/icons/sound2.gif) audio/*
+AddIconByType (VID,/icons/movie.gif) video/*
+
+# This really should be .jpg.
+
+AddIcon /icons/binary.gif .bin .exe
+AddIcon /icons/binhex.gif .hqx
+AddIcon /icons/tar.gif .tar
+AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
+AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
+AddIcon /icons/a.gif .ps .ai .eps
+AddIcon /icons/layout.gif .html .shtml .htm .pdf
+AddIcon /icons/text.gif .txt
+AddIcon /icons/c.gif .c
+AddIcon /icons/p.gif .pl .py
+AddIcon /icons/f.gif .for
+AddIcon /icons/dvi.gif .dvi
+AddIcon /icons/uuencoded.gif .uu
+AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
+AddIcon /icons/tex.gif .tex
+AddIcon /icons/bomb.gif core
+
+AddIcon /icons/back.gif ..
+AddIcon /icons/hand.right.gif README
+AddIcon /icons/folder.gif ^^DIRECTORY^^
+AddIcon /icons/blank.gif ^^BLANKICON^^
+
+
+# This is from Matty J's patch. Anyone want to make the icons?
+#AddIcon /icons/dirsymlink.jpg ^^SYMDIR^^
+#AddIcon /icons/symlink.jpg ^^SYMLINK^^
+
+DefaultIcon /icons/unknown.gif
+
+ReadmeName README.html
+HeaderName HEADER.html
+
+IndexIgnore .??* *~ *# HEADER* RCS CVS *,t
+
+AddEncoding x-compress Z
+AddEncoding x-gzip gz tgz
+
+AddLanguage da .dk
+AddLanguage nl .nl
+AddLanguage en .en
+AddLanguage et .et
+AddLanguage fr .fr
+AddLanguage de .de
+AddLanguage el .el
+AddLanguage it .it
+AddLanguage ja .ja
+AddLanguage pl .po
+AddLanguage ko .ko
+AddLanguage pt .pt
+AddLanguage no .no
+AddLanguage pt-br .pt-br
+AddLanguage ltz .ltz
+AddLanguage ca .ca
+AddLanguage es .es
+AddLanguage sv .se
+AddLanguage cz .cz
+AddLanguage ru .ru
+AddLanguage tw .tw
+AddLanguage zh-tw .tw
+
+LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw
+
+
+#AddDefaultCharset	ISO-8859-1
+
+AddCharset ISO-8859-1  .iso8859-1  .latin1
+AddCharset ISO-8859-2  .iso8859-2  .latin2 .cen
+AddCharset ISO-8859-3  .iso8859-3  .latin3
+AddCharset ISO-8859-4  .iso8859-4  .latin4
+AddCharset ISO-8859-5  .iso8859-5  .latin5 .cyr .iso-ru
+AddCharset ISO-8859-6  .iso8859-6  .latin6 .arb
+AddCharset ISO-8859-7  .iso8859-7  .latin7 .grk
+AddCharset ISO-8859-8  .iso8859-8  .latin8 .heb	
+AddCharset ISO-8859-9  .iso8859-9  .latin9 .trk
+AddCharset ISO-2022-JP .iso2022-jp .jis
+AddCharset ISO-2022-KR .iso2022-kr .kis
+AddCharset ISO-2022-CN .iso2022-cn .cis
+AddCharset Big5        .Big5       .big5
+# For russian, more than one charset is used (depends on client, mostly):
+AddCharset WINDOWS-1251 .cp-1251   .win-1251
+AddCharset CP866       .cp866
+AddCharset KOI8-r      .koi8-r .koi8-ru
+AddCharset KOI8-ru     .koi8-uk .ua
+AddCharset ISO-10646-UCS-2 .ucs2
+AddCharset ISO-10646-UCS-4 .ucs4
+AddCharset UTF-8       .utf8
+
+AddCharset GB2312      .gb2312 .gb 
+AddCharset utf-7       .utf7
+AddCharset utf-8       .utf8
+AddCharset big5	       .big5 .b5
+AddCharset EUC-TW      .euc-tw	
+AddCharset EUC-JP      .euc-jp
+AddCharset EUC-KR      .euc-kr
+AddCharset shift_jis   .sjis
+
+#AddType application/x-httpd-php .php
+#AddType application/x-httpd-php-source .phps
+
+AddType application/x-tar .tgz
+
+# To use CGI scripts outside /cgi-bin/:
+#
+#AddHandler cgi-script .cgi
+
+# To use server-parsed HTML files
+#
+<FilesMatch "\.shtml(\..+)?$">
+    SetOutputFilter INCLUDES
+</FilesMatch>
+
+# If you wish to use server-parsed imagemap files, use
+#
+#AddHandler imap-file map
+
+BrowserMatch "Mozilla/2" nokeepalive
+BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
+BrowserMatch "RealPlayer 4\.0" force-response-1.0
+BrowserMatch "Java/1\.0" force-response-1.0
+BrowserMatch "JDK/1\.0" force-response-1.0
+
+#
+# The following directive disables redirects on non-GET requests for
+# a directory that does not include the trailing slash.  This fixes a 
+# problem with Microsoft WebFolders which does not appropriately handle 
+# redirects for folders with DAV methods.
+#
+
+BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
+BrowserMatch "^WebDrive" redirect-carefully
+BrowserMatch "^gnome-vfs" redirect-carefully 
+BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
+
+# Allow server status reports, with the URL of http://servername/server-status
+# Change the ".your_domain.com" to match your domain to enable.
+#
+#<Location /server-status>
+#    SetHandler server-status
+#    Order deny,allow
+#    Deny from all
+#    Allow from .your_domain.com
+#</Location>
+
+# Allow remote server configuration reports, with the URL of
+#  http://servername/server-info (requires that mod_info.c be loaded).
+# Change the ".your_domain.com" to match your domain to enable.
+#
+#<Location /server-info>
+#    SetHandler server-info
+#    Order deny,allow
+#    Deny from all
+#    Allow from .your_domain.com
+#</Location>
+
+# Include the virtual host configurations:
+Include /etc/apache2/sites-enabled/[^.#]*