category-theory-presentation/js/highlight/languages/nginx.js
2013-02-28 16:49:12 +01:00

221 lines
11 KiB
JavaScript

/*
Language: Nginx
Author: Peter Leonov <gojpeg@yandex.ru>
*/
hljs.LANGUAGES.nginx = function() {
var VAR1 = {
className: 'variable',
begin: '\\$\\d+'
};
var VAR2 = {
className: 'variable',
begin: '\\${', end: '}'
};
var VAR3 = {
className: 'variable',
begin: '[\\$\\@]' + hljs.UNDERSCORE_IDENT_RE
};
return {
defaultMode: {
contains: [
hljs.HASH_COMMENT_MODE,
{ // directive
begin: hljs.UNDERSCORE_IDENT_RE, end: ';|{', returnEnd: true,
keywords: {
accept_mutex: 1, accept_mutex_delay: 1, access_log: 1,
add_after_body: 1, add_before_body: 1, add_header: 1,
addition_types: 1, alias: 1, allow: 1, ancient_browser: 1,
ancient_browser_value: 1, auth_basic: 1, auth_basic_user_file: 1,
autoindex: 1, autoindex_exact_size: 1, autoindex_localtime: 1,
'break': 1, charset: 1, charset_map: 1,
charset_types: 1, client_body_buffer_size: 1,
client_body_in_file_only: 1, client_body_in_single_buffer: 1,
client_body_temp_path: 1, client_body_timeout: 1,
client_header_buffer_size: 1, client_header_timeout: 1,
client_max_body_size: 1, connection_pool_size: 1, connections: 1,
create_full_put_path: 1, daemon: 1, dav_access: 1, dav_methods: 1,
debug_connection: 1, debug_points: 1, default_type: 1, deny: 1,
directio: 1, directio_alignment: 1, echo: 1, echo_after_body: 1,
echo_before_body: 1, echo_blocking_sleep: 1, echo_duplicate: 1,
echo_end: 1, echo_exec: 1, echo_flush: 1, echo_foreach_split: 1,
echo_location: 1, echo_location_async: 1, echo_read_request_body: 1,
echo_request_body: 1, echo_reset_timer: 1, echo_sleep: 1,
echo_subrequest: 1, echo_subrequest_async: 1, empty_gif: 1,
env: 1, error_log: 1, error_page: 1,
events: 1, expires: 1, fastcgi_bind: 1, fastcgi_buffer_size: 1,
fastcgi_buffers: 1, fastcgi_busy_buffers_size: 1, fastcgi_cache: 1,
fastcgi_cache_key: 1, fastcgi_cache_methods: 1,
fastcgi_cache_min_uses: 1, fastcgi_cache_path: 1,
fastcgi_cache_use_stale: 1, fastcgi_cache_valid: 1,
fastcgi_catch_stderr: 1, fastcgi_connect_timeout: 1,
fastcgi_hide_header: 1, fastcgi_ignore_client_abort: 1,
fastcgi_ignore_headers: 1, fastcgi_index: 1,
fastcgi_intercept_errors: 1, fastcgi_max_temp_file_size: 1,
fastcgi_next_upstream: 1, fastcgi_param: 1, fastcgi_pass: 1,
fastcgi_pass_header: 1, fastcgi_pass_request_body: 1,
fastcgi_pass_request_headers: 1, fastcgi_read_timeout: 1,
fastcgi_send_lowat: 1, fastcgi_send_timeout: 1,
fastcgi_split_path_info: 1, fastcgi_store: 1, fastcgi_store_access: 1,
fastcgi_temp_file_write_size: 1, fastcgi_temp_path: 1,
fastcgi_upstream_fail_timeout: 1, fastcgi_upstream_max_fails: 1,
flv: 1, geo: 1, geoip_city: 1, geoip_country: 1, gzip: 1,
gzip_buffers: 1, gzip_comp_level: 1, gzip_disable: 1, gzip_hash: 1,
gzip_http_version: 1, gzip_min_length: 1, gzip_no_buffer: 1,
gzip_proxied: 1, gzip_static: 1, gzip_types: 1, gzip_vary: 1,
gzip_window: 1, http: 1, 'if': 1, if_modified_since: 1,
ignore_invalid_headers: 1, image_filter: 1, image_filter_buffer: 1,
image_filter_jpeg_quality: 1, image_filter_transparency: 1, include: 1,
index: 1, internal: 1, ip_hash: 1, js: 1, js_load: 1, js_require: 1,
js_utf8: 1, keepalive_requests: 1, keepalive_timeout: 1,
kqueue_changes: 1, kqueue_events: 1, large_client_header_buffers: 1,
limit_conn: 1, limit_conn_log_level: 1, limit_except: 1, limit_rate: 1,
limit_rate_after: 1, limit_req: 1, limit_req_log_level: 1,
limit_req_zone: 1, limit_zone: 1, lingering_time: 1,
lingering_timeout: 1, listen: 1, location: 1, lock_file: 1,
log_format: 1, log_not_found: 1, log_subrequest: 1, map: 1,
map_hash_bucket_size: 1, map_hash_max_size: 1, master_process: 1,
memcached_bind: 1, memcached_buffer_size: 1,
memcached_connect_timeout: 1, memcached_next_upstream: 1,
memcached_pass: 1, memcached_read_timeout: 1,
memcached_send_timeout: 1, memcached_upstream_fail_timeout: 1,
memcached_upstream_max_fails: 1, merge_slashes: 1, min_delete_depth: 1,
modern_browser: 1, modern_browser_value: 1, more_clear_headers: 1,
more_clear_input_headers: 1, more_set_headers: 1,
more_set_input_headers: 1, msie_padding: 1, msie_refresh: 1,
multi_accept: 1, open_file_cache: 1, open_file_cache_errors: 1,
open_file_cache_events: 1, open_file_cache_min_uses: 1,
open_file_cache_retest: 1, open_file_cache_valid: 1,
open_log_file_cache: 1, optimize_server_names: 1, output_buffers: 1,
override_charset: 1, perl: 1, perl_modules: 1,
perl_require: 1, perl_set: 1, pid: 1, port_in_redirect: 1,
post_action: 1, postpone_gzipping: 1, postpone_output: 1,
proxy_bind: 1, proxy_buffer_size: 1, proxy_buffering: 1,
proxy_buffers: 1, proxy_busy_buffers_size: 1, proxy_cache: 1,
proxy_cache_key: 1, proxy_cache_methods: 1, proxy_cache_min_uses: 1,
proxy_cache_path: 1, proxy_cache_use_stale: 1, proxy_cache_valid: 1,
proxy_connect_timeout: 1, proxy_headers_hash_bucket_size: 1,
proxy_headers_hash_max_size: 1, proxy_hide_header: 1,
proxy_ignore_client_abort: 1, proxy_ignore_headers: 1,
proxy_intercept_errors: 1, proxy_max_temp_file_size: 1,
proxy_method: 1, proxy_next_upstream: 1, proxy_pass: 1,
proxy_pass_header: 1, proxy_pass_request_body: 1,
proxy_pass_request_headers: 1, proxy_read_timeout: 1,
proxy_redirect: 1, proxy_send_lowat: 1, proxy_send_timeout: 1,
proxy_set_body: 1, proxy_set_header: 1, proxy_store: 1,
proxy_store_access: 1, proxy_temp_file_write_size: 1,
proxy_temp_path: 1, proxy_upstream_fail_timeout: 1,
proxy_upstream_max_fails: 1, push_authorized_channels_only: 1,
push_channel_group: 1, push_max_channel_id_length: 1,
push_max_channel_subscribers: 1, push_max_message_buffer_length: 1,
push_max_reserved_memory: 1, push_message_buffer_length: 1,
push_message_timeout: 1, push_min_message_buffer_length: 1,
push_min_message_recipients: 1, push_publisher: 1,
push_store_messages: 1, push_subscriber: 1,
push_subscriber_concurrency: 1, random_index: 1, read_ahead: 1,
real_ip_header: 1, recursive_error_pages: 1, request_pool_size: 1,
reset_timedout_connection: 1, resolver: 1, resolver_timeout: 1,
'return': 1, rewrite: 1, rewrite_log: 1, root: 1, satisfy: 1,
satisfy_any: 1, send_lowat: 1, send_timeout: 1, sendfile: 1,
sendfile_max_chunk: 1, server: 1, server_name: 1,
server_name_in_redirect: 1, server_names_hash_bucket_size: 1,
server_names_hash_max_size: 1, server_tokens: 1, 'set': 1,
set_real_ip_from: 1, source_charset: 1, ssi: 1,
ssi_ignore_recycled_buffers: 1, ssi_min_file_chunk: 1,
ssi_silent_errors: 1, ssi_types: 1, ssi_value_length: 1, ssl: 1,
ssl_certificate: 1, ssl_certificate_key: 1, ssl_ciphers: 1,
ssl_client_certificate: 1, ssl_crl: 1, ssl_dhparam: 1,
ssl_prefer_server_ciphers: 1, ssl_protocols: 1, ssl_session_cache: 1,
ssl_session_timeout: 1, ssl_verify_client: 1, ssl_verify_depth: 1,
sub_filter: 1, sub_filter_once: 1, sub_filter_types: 1, tcp_nodelay: 1,
tcp_nopush: 1, timer_resolution: 1, try_files: 1, types: 1,
types_hash_bucket_size: 1, types_hash_max_size: 1,
underscores_in_headers: 1, uninitialized_variable_warn: 1, upstream: 1,
use: 1, user: 1, userid: 1, userid_domain: 1, userid_expires: 1, userid_mark: 1,
userid_name: 1, userid_p3p: 1, userid_path: 1, userid_service: 1,
valid_referers: 1, variables_hash_bucket_size: 1,
variables_hash_max_size: 1, worker_connections: 1,
worker_cpu_affinity: 1, worker_priority: 1, worker_processes: 1,
worker_rlimit_core: 1, worker_rlimit_nofile: 1,
worker_rlimit_sigpending: 1, working_directory: 1, xml_entities: 1,
xslt_stylesheet: 1, xslt_types: 1
},
relevance: 0,
contains: [
hljs.HASH_COMMENT_MODE,
{
begin: '\\s', end: '[;{]', returnBegin: true, returnEnd: true,
lexems: '[a-z/]+',
keywords: {
'built_in': {
'on': 1, 'off': 1, 'yes': 1, 'no': 1, 'true': 1, 'false': 1,
'none': 1, 'blocked': 1, 'debug': 1, 'info': 1, 'notice': 1,
'warn': 1, 'error': 1, 'crit': 1, 'select': 1, 'permanent': 1,
'redirect': 1, 'kqueue': 1, 'rtsig': 1, 'epoll': 1, 'poll': 1,
'/dev/poll': 1
}
},
relevance: 0,
contains: [
hljs.HASH_COMMENT_MODE,
{
className: 'string',
begin: '"', end: '"',
contains: [hljs.BACKSLASH_ESCAPE, VAR1, VAR2, VAR3],
relevance: 0
},
{
className: 'string',
begin: "'", end: "'",
contains: [hljs.BACKSLASH_ESCAPE, VAR1, VAR2, VAR3],
relevance: 0
},
{
className: 'string',
begin: '([a-z]+):/', end: '[;\\s]', returnEnd: true
},
{
className: 'regexp',
begin: "\\s\\^", end: "\\s|{|;", returnEnd: true,
contains: [hljs.BACKSLASH_ESCAPE, VAR1, VAR2, VAR3]
},
// regexp locations (~, ~*)
{
className: 'regexp',
begin: "~\\*?\\s+", end: "\\s|{|;", returnEnd: true,
contains: [hljs.BACKSLASH_ESCAPE, VAR1, VAR2, VAR3]
},
// *.example.com
{
className: 'regexp',
begin: "\\*(\\.[a-z\\-]+)+",
contains: [hljs.BACKSLASH_ESCAPE, VAR1, VAR2, VAR3]
},
// sub.example.*
{
className: 'regexp',
begin: "([a-z\\-]+\\.)+\\*",
contains: [hljs.BACKSLASH_ESCAPE, VAR1, VAR2, VAR3]
},
// IP
{
className: 'number',
begin: '\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b'
},
// units
{
className: 'number',
begin: '\\s\\d+[kKmMgGdshdwy]*\\b',
relevance: 0
},
VAR1, VAR2, VAR3
]
}
]
}
]
}
}
}();