rouge 3.17.0 → 3.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/rouge.rb +65 -51
- data/lib/rouge/demos/cypher +5 -0
- data/lib/rouge/demos/datastudio +21 -0
- data/lib/rouge/demos/ghc-cmm +23 -0
- data/lib/rouge/demos/isbl +4 -0
- data/lib/rouge/demos/rego +8 -0
- data/lib/rouge/demos/solidity +13 -0
- data/lib/rouge/demos/yang +17 -0
- data/lib/rouge/lexer.rb +2 -1
- data/lib/rouge/lexers/apache.rb +4 -8
- data/lib/rouge/lexers/apache/keywords.rb +15 -0
- data/lib/rouge/lexers/cmake.rb +1 -0
- data/lib/rouge/lexers/console.rb +53 -37
- data/lib/rouge/lexers/cpp.rb +12 -5
- data/lib/rouge/lexers/cypher.rb +108 -0
- data/lib/rouge/lexers/datastudio.rb +138 -0
- data/lib/rouge/lexers/fsharp.rb +1 -0
- data/lib/rouge/lexers/ghc_cmm.rb +340 -0
- data/lib/rouge/lexers/gherkin.rb +1 -1
- data/lib/rouge/lexers/isbl.rb +97 -0
- data/lib/rouge/lexers/isbl/builtins.rb +17 -0
- data/lib/rouge/lexers/json.rb +3 -0
- data/lib/rouge/lexers/json_doc.rb +1 -0
- data/lib/rouge/lexers/kotlin.rb +4 -0
- data/lib/rouge/lexers/lasso.rb +4 -9
- data/lib/rouge/lexers/lasso/keywords.rb +14 -0
- data/lib/rouge/lexers/lua.rb +1 -1
- data/lib/rouge/lexers/markdown.rb +1 -1
- data/lib/rouge/lexers/mathematica.rb +1 -1
- data/lib/rouge/lexers/matlab.rb +3 -4
- data/lib/rouge/lexers/matlab/builtins.rb +11 -0
- data/lib/rouge/lexers/pascal.rb +1 -1
- data/lib/rouge/lexers/php.rb +47 -32
- data/lib/rouge/lexers/python.rb +66 -57
- data/lib/rouge/lexers/racket.rb +24 -1
- data/lib/rouge/lexers/rego.rb +45 -0
- data/lib/rouge/lexers/ruby.rb +11 -1
- data/lib/rouge/lexers/solidity.rb +185 -0
- data/lib/rouge/lexers/sqf.rb +1 -1
- data/lib/rouge/lexers/terraform.rb +15 -0
- data/lib/rouge/lexers/typescript.rb +4 -0
- data/lib/rouge/lexers/viml.rb +1 -1
- data/lib/rouge/lexers/vue.rb +4 -1
- data/lib/rouge/lexers/yang.rb +147 -0
- data/lib/rouge/version.rb +1 -1
- metadata +20 -5
- data/lib/rouge/lexers/apache/keywords.yml +0 -764
- data/lib/rouge/lexers/lasso/keywords.yml +0 -446
- data/lib/rouge/lexers/matlab/builtins.yml +0 -3515
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 579264110ed9ae2f82195af1d9d83d2ebf6288f8ce3cd6909c2a9d563ae0e1d5
|
4
|
+
data.tar.gz: 25a1809f05ec5aab6f04ee7b885a17cf8b1388e1247284e773bc166d13a9e296
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 832c13a7236b814d53a5a6b170fc00b4961efb2cdee91053bfc3a6386a9bc6c7b071f9fa51606321e94249b57c6f549f6e4bb420e7647ab68ca6a3c6e49d8c63
|
7
|
+
data.tar.gz: 5889f29c2788788120fd698ec004b847c5bafb7df0b22af36c9f1d2a78218c81e7fd136b359b586ed8f586e0a65eceb156721efcb95d95e3af7df34d0b174038
|
data/lib/rouge.rb
CHANGED
@@ -6,6 +6,10 @@ require 'pathname'
|
|
6
6
|
|
7
7
|
# The containing module for Rouge
|
8
8
|
module Rouge
|
9
|
+
# cache value in a constant since `__dir__` allocates a new string
|
10
|
+
# on every call.
|
11
|
+
LIB_DIR = __dir__.freeze
|
12
|
+
|
9
13
|
class << self
|
10
14
|
def reload!
|
11
15
|
Object.send :remove_const, :Rouge
|
@@ -31,63 +35,73 @@ module Rouge
|
|
31
35
|
|
32
36
|
formatter.format(lexer.lex(text), &b)
|
33
37
|
end
|
34
|
-
end
|
35
|
-
end
|
36
38
|
|
37
|
-
#
|
38
|
-
|
39
|
-
|
40
|
-
|
39
|
+
# Load a file relative to the `lib/rouge` path.
|
40
|
+
#
|
41
|
+
# @api private
|
42
|
+
def load_file(path)
|
43
|
+
load File.join(LIB_DIR, "rouge/#{path}.rb")
|
44
|
+
end
|
41
45
|
|
42
|
-
|
43
|
-
|
46
|
+
# Load the lexers in the `lib/rouge/lexers` directory.
|
47
|
+
#
|
48
|
+
# @api private
|
49
|
+
def load_lexers
|
50
|
+
# The trailing slash is necessary to avoid lexers being loaded multiple
|
51
|
+
# times by `Lexers.load_lexer`
|
52
|
+
lexer_dir = File.join(LIB_DIR, "rouge/lexers/")
|
53
|
+
Dir.glob(File.join(lexer_dir, '*.rb')).each do |f|
|
54
|
+
Lexers.load_lexer(f.sub(lexer_dir, ''))
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
44
58
|
end
|
45
59
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
60
|
+
Rouge.load_file 'version'
|
61
|
+
Rouge.load_file 'util'
|
62
|
+
Rouge.load_file 'text_analyzer'
|
63
|
+
Rouge.load_file 'token'
|
50
64
|
|
51
|
-
|
52
|
-
|
53
|
-
|
65
|
+
Rouge.load_file 'lexer'
|
66
|
+
Rouge.load_file 'regex_lexer'
|
67
|
+
Rouge.load_file 'template_lexer'
|
54
68
|
|
55
|
-
|
69
|
+
Rouge.load_lexers
|
56
70
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
71
|
+
Rouge.load_file 'guesser'
|
72
|
+
Rouge.load_file 'guessers/util'
|
73
|
+
Rouge.load_file 'guessers/glob_mapping'
|
74
|
+
Rouge.load_file 'guessers/modeline'
|
75
|
+
Rouge.load_file 'guessers/filename'
|
76
|
+
Rouge.load_file 'guessers/mimetype'
|
77
|
+
Rouge.load_file 'guessers/source'
|
78
|
+
Rouge.load_file 'guessers/disambiguation'
|
65
79
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
80
|
+
Rouge.load_file 'formatter'
|
81
|
+
Rouge.load_file 'formatters/html'
|
82
|
+
Rouge.load_file 'formatters/html_table'
|
83
|
+
Rouge.load_file 'formatters/html_pygments'
|
84
|
+
Rouge.load_file 'formatters/html_legacy'
|
85
|
+
Rouge.load_file 'formatters/html_linewise'
|
86
|
+
Rouge.load_file 'formatters/html_line_table'
|
87
|
+
Rouge.load_file 'formatters/html_inline'
|
88
|
+
Rouge.load_file 'formatters/terminal256'
|
89
|
+
Rouge.load_file 'formatters/terminal_truecolor'
|
90
|
+
Rouge.load_file 'formatters/tex'
|
91
|
+
Rouge.load_file 'formatters/null'
|
78
92
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
93
|
+
Rouge.load_file 'theme'
|
94
|
+
Rouge.load_file 'tex_theme_renderer'
|
95
|
+
Rouge.load_file 'themes/thankful_eyes'
|
96
|
+
Rouge.load_file 'themes/colorful'
|
97
|
+
Rouge.load_file 'themes/base16'
|
98
|
+
Rouge.load_file 'themes/github'
|
99
|
+
Rouge.load_file 'themes/igor_pro'
|
100
|
+
Rouge.load_file 'themes/monokai'
|
101
|
+
Rouge.load_file 'themes/molokai'
|
102
|
+
Rouge.load_file 'themes/monokai_sublime'
|
103
|
+
Rouge.load_file 'themes/gruvbox'
|
104
|
+
Rouge.load_file 'themes/tulip'
|
105
|
+
Rouge.load_file 'themes/pastie'
|
106
|
+
Rouge.load_file 'themes/bw'
|
107
|
+
Rouge.load_file 'themes/magritte'
|
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
Get_Variable("EUSER","ENV","USERNAME");
|
3
|
+
|
4
|
+
Message("Le Login Windows est : %EUSER%");
|
5
|
+
|
6
|
+
Get_Variable("st","JOB","FOLDER1.date_err.SYSTEM.STATUS");
|
7
|
+
|
8
|
+
|
9
|
+
AFFECT("filter1", '%%/"t"');
|
10
|
+
AFFECT("filter2", '%%/"pi"');
|
11
|
+
JSONTOSQL("%{jsonpath}%/file.json", "",
|
12
|
+
" JSONPATH like '%filter1%' ", "a = JSONVALUE",
|
13
|
+
" JSONPATH like '%filter2%' ", "b = JSONVALUE; output(json_data, a, b)");
|
14
|
+
|
15
|
+
|
16
|
+
Affect(VAR1,'%TEST%'); //Créer et affecter la variable VAR1 avec une chaîne
|
17
|
+
select * from TABLE1 where COL1 like %VAR1%; //utiliser la variable VAR1 dans une requête
|
18
|
+
|
19
|
+
select * from TEST_TABLE; //exécution d'une requête Select pour ramener des valeurs
|
20
|
+
Affect_LastColumns("TEST1"); //création du paramètre TEST1
|
21
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
[lvl_s4t3_entry() // [R1]
|
2
|
+
{ info_tbls: [(c4uB,
|
3
|
+
label: lvl_s4t3_info
|
4
|
+
rep: HeapRep 1 ptrs { Thunk }
|
5
|
+
srt: Nothing)]
|
6
|
+
stack_info: arg_space: 8 updfr_space: Just 8
|
7
|
+
}
|
8
|
+
{offset
|
9
|
+
c4uB: // global
|
10
|
+
if ((Sp + -32) < SpLim) (likely: False) goto c4uC; else goto c4uD;
|
11
|
+
c4uC: // global
|
12
|
+
R1 = R1;
|
13
|
+
call (stg_gc_enter_1)(R1) args: 8, res: 0, upd: 8;
|
14
|
+
c4uD: // global
|
15
|
+
I64[Sp - 16] = stg_upd_frame_info;
|
16
|
+
P64[Sp - 8] = R1;
|
17
|
+
R2 = P64[R1 + 16];
|
18
|
+
I64[Sp - 32] = stg_ap_p_info;
|
19
|
+
P64[Sp - 24] = Main.fib3_closure+1;
|
20
|
+
Sp = Sp - 32;
|
21
|
+
call GHC.Num.fromInteger_info(R2) args: 40, res: 0, upd: 24;
|
22
|
+
}
|
23
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
pragma solidity ~0.4.15;
|
2
|
+
|
3
|
+
interface IMirror {
|
4
|
+
function reflect() external payable returns(bool /* ain't I pretty?.. */);
|
5
|
+
}
|
6
|
+
|
7
|
+
contract Mirror is IMirror {
|
8
|
+
event logMessage(address indexed sender, uint256 value, uint256 gas, bytes data);
|
9
|
+
|
10
|
+
function () { // no funny stuff
|
11
|
+
revert();
|
12
|
+
}
|
13
|
+
}
|
data/lib/rouge/lexer.rb
CHANGED
@@ -505,12 +505,13 @@ module Rouge
|
|
505
505
|
end
|
506
506
|
|
507
507
|
module Lexers
|
508
|
+
BASE_DIR = "#{__dir__}/lexers".freeze
|
508
509
|
@_loaded_lexers = {}
|
509
510
|
|
510
511
|
def self.load_lexer(relpath)
|
511
512
|
return if @_loaded_lexers.key?(relpath)
|
512
513
|
@_loaded_lexers[relpath] = true
|
513
|
-
load File.join(
|
514
|
+
load File.join(BASE_DIR, relpath)
|
514
515
|
end
|
515
516
|
end
|
516
517
|
end
|
data/lib/rouge/lexers/apache.rb
CHANGED
@@ -11,14 +11,10 @@ module Rouge
|
|
11
11
|
mimetypes 'text/x-httpd-conf', 'text/x-apache-conf'
|
12
12
|
filenames '.htaccess', 'httpd.conf'
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
@keywords = ::YAML.load_file(File.join(__dir__, 'apache/keywords.yml')).tap do |h|
|
19
|
-
h.each do |k,v|
|
20
|
-
h[k] = Set.new v
|
21
|
-
end
|
14
|
+
# self-modifying method that loads the keywords file
|
15
|
+
def self.keywords
|
16
|
+
load File.join(Lexers::BASE_DIR, 'apache/keywords.rb')
|
17
|
+
keywords
|
22
18
|
end
|
23
19
|
|
24
20
|
def name_for_token(token, kwtype, tktype)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
# automatically generated by `rake builtins:apache`
|
5
|
+
module Rouge
|
6
|
+
module Lexers
|
7
|
+
def Apache.keywords
|
8
|
+
@keywords ||= {}.tap do |h|
|
9
|
+
h[:sections] = Set.new ["directory", "directorymatch", "files", "filesmatch", "ifdefine", "ifmodule", "limit", "limitexcept", "location", "locationmatch", "proxy", "proxymatch", "virtualhost"]
|
10
|
+
h[:directives] = Set.new ["acceptfilter", "acceptmutex", "acceptpathinfo", "accessconfig", "accessfilename", "action", "addalt", "addaltbyencoding", "addaltbytype", "addcharset", "adddefaultcharset", "adddescription", "addencoding", "addhandler", "addicon", "addiconbyencoding", "addiconbytype", "addinputfilter", "addlanguage", "addmodule", "addmoduleinfo", "addoutputfilter", "addoutputfilterbytype", "addtype", "agentlog", "alias", "aliasmatch", "allow", "allowconnect", "allowencodedslashes", "allowmethods", "allowoverride", "allowoverridelist", "anonymous", "anonymous_authoritative", "anonymous_logemail", "anonymous_mustgiveemail", "anonymous_nouserid", "anonymous_verifyemail", "assignuserid", "authauthoritative", "authdbauthoritative", "authdbgroupfile", "authdbmauthoritative", "asyncrequestworkerfactor", "authbasicauthoritative", "authbasicfake", "authbasicprovider", "authbasicusedigestalgorithm", "authdbduserpwquery", "authdbduserrealmquery", "authdbmgroupfile", "authdbmtype", "authdbmuserfile", "authdbuserfile", "authdigestalgorithm", "authdigestdomain", "authdigestfile", "authdigestgroupfile", "authdigestnccheck", "authdigestnonceformat", "authdigestnoncelifetime", "authdigestprovider", "authdigestqop", "authdigestshmemsize", "authformauthoritative", "authformbody", "authformdisablenostore", "authformfakebasicauth", "authformlocation", "authformloginrequiredlocation", "authformloginsuccesslocation", "authformlogoutlocation", "authformmethod", "authformmimetype", "authformpassword", "authformprovider", "authformsitepassphrase", "authformsize", "authformusername", "authgroupfile", "authldapauthoritative", "authldapauthorizeprefix", "authldapbindauthoritative", "authldapbinddn", "authldapbindpassword", "authldapcharsetconfig", "authldapcompareasuser", "authldapcomparednonserver", "authldapdereferencealiases", "authldapenabled", "authldapfrontpagehack", "authldapgroupattribute", "authldapgroupattributeisdn", "authldapinitialbindasuser", "authldapinitialbindpattern", "authldapmaxsubgroupdepth", "authldapremoteuserattribute", "authldapremoteuserisdn", "authldapsearchasuser", "authldapsubgroupattribute", "authldapsubgroupclass", "authldapurl", "authmerging", "authname", "authncachecontext", "authncacheenable", "authncacheprovidefor", "authncachesocache", "authncachetimeout", "authnzfcgicheckauthnprovider", "authnzfcgidefineprovider", "authtype", "authuserfile", "authzdbdlogintoreferer", "authzdbdquery", "authzdbdredirectquery", "authzdbmtype", "authzsendforbiddenonfailure", "balancergrowth", "balancerinherit", "balancermember", "balancerpersist", "bindaddress", "browsermatch", "browsermatchnocase", "bs2000account", "bufferedlogs", "buffersize", "cachedefaultexpire", "cachedetailheader", "cachedirlength", "cachedirlevels", "cachedisable", "cacheenable", "cacheexpirycheck", "cachefile", "cacheforcecompletion", "cachegcclean", "cachegcdaily", "cachegcinterval", "cachegcmemusage", "cachegcunused", "cacheheader", "cacheignorecachecontrol", "cacheignoreheaders", "cacheignorenolastmod", "cacheignorequerystring", "cacheignoreurlsessionidentifiers", "cachekeybaseurl", "cachelastmodifiedfactor", "cachelock", "cachelockmaxage", "cachelockpath", "cachemaxexpire", "cachemaxfilesize", "cacheminexpire", "cacheminfilesize", "cachenegotiateddocs", "cachequickhandler", "cachereadsize", "cachereadtime", "cacheroot", "cachesize", "cachetimemargin", "cachesocache", "cachesocachemaxsize", "cachesocachemaxtime", "cachesocachemintime", "cachesocachereadsize", "cachesocachereadtime", "cachestaleonerror", "cachestoreexpired", "cachestorenostore", "cachestoreprivate", "cgidscripttimeout", "cgimapextension", "cgipassauth", "charsetdefault", "charsetoptions", "charsetsourceenc", "checkcaseonly", "checkspelling", "childperuserid", "clearmodulelist", "chrootdir", "contentdigest", "cookiedomain", "cookieexpires", "cookielog", "cookiename", "cookiestyle", "cookietracking", "coredumpdirectory", "customlog", "dav", "davdepthinfinity", "davgenericlockdb", "davlockdb", "davmintimeout", "dbdexptime", "dbdinitsql", "dbdkeep", "dbdmax", "dbdmin", "dbdparams", "dbdpersist", "dbdpreparesql", "dbdriver", "defaulticon", "defaultlanguage", "defaultmode", "defaultruntimedir", "defaulttype", "define", "deflatebuffersize", "deflatecompressionlevel", "deflatefilternote", "deflateinflatelimitrequestbody", "deflateinflateratioburst", "deflateinflateratiolimit", "deflatememlevel", "deflatewindowsize", "deny", "directorycheckhandler", "directoryindex", "directoryindexredirect", "directoryslash", "doctitle", "doctrailer", "documentroot", "dtraceprivileges", "dumpioinput", "dumpiooutput", "enableexceptionhook", "enablemmap", "enablesendfile", "error", "errordocument", "errorlog", "errorlogformat", "example", "expiresactive", "expiresbytype", "expiresdefault", "extendedstatus", "extfilterdefine", "extfilteroptions", "fallbackresource", "fancyindexing", "fileetag", "filterchain", "filterdeclare", "filterprotocol", "filterprovider", "filtertrace", "forcelanguagepriority", "forcetype", "forensiclog", "globallog", "gprofdir", "gracefulshutdowntimeout", "group", "h2direct", "h2keepalivetimeout", "h2maxsessionstreams", "h2maxworkeridleseconds", "h2maxworkers", "h2minworkers", "h2moderntlsonly", "h2push", "h2pushdiarysize", "h2pushpriority", "h2serializeheaders", "h2sessionextrafiles", "h2streammaxmemsize", "h2streamtimeout", "h2timeout", "h2tlscooldownsecs", "h2tlswarmupsize", "h2upgrade", "h2windowsize", "header", "headername", "headprefix", "headsuffix", "hidesys", "hideurl", "heartbeataddress", "heartbeatlisten", "heartbeatmaxservers", "heartbeatstorage", "heartbeatstorage", "hostnamelookups", "htmldir", "httplogfile", "identitycheck", "identitychecktimeout", "imapbase", "imapdefault", "imapmenu", "include", "includeoptional", "indexheadinsert", "indexignore", "indexignorereset", "indexoptions", "indexorderdefault", "indexstylesheet", "inputsed", "isapiappendlogtoerrors", "isapiappendlogtoquery", "isapicachefile", "isapifakeasync", "isapilognotsupported", "isapireadaheadbuffer", "keepalive", "keepalivetimeout", "keptbodysize", "languagepriority", "lasturls", "ldapcacheentries", "ldapcachettl", "ldapconnectionpoolttl", "ldapconnectiontimeout", "ldaplibrarydebug", "ldapopcacheentries", "ldapopcachettl", "ldapreferralhoplimit", "ldapreferrals", "ldapretries", "ldapretrydelay", "ldapsharedcachefile", "ldapsharedcachesize", "ldaptimeout", "ldaptrustedca", "ldaptrustedcatype", "ldaptrustedclientcert", "ldaptrustedglobalcert", "ldaptrustedmode", "ldapverifyservercert", "limitinternalrecursion", "limitrequestbody", "limitrequestfields", "limitrequestfieldsize", "limitrequestline", "limitxmlrequestbody", "listen", "listenbacklog", "listencoresbucketsratio", "loadfile", "loadmodule", "lockfile", "logformat", "logiotrackttfb", "loglevel", "logmessage", "luaauthzprovider", "luacodecache", "luahookaccesschecker", "luahookauthchecker", "luahookcheckuserid", "luahookfixups", "luahookinsertfilter", "luahooklog", "luahookmaptostorage", "luahooktranslatename", "luahooktypechecker", "luainherit", "luainputfilter", "luamaphandler", "luaoutputfilter", "luapackagecpath", "luapackagepath", "luaquickhandler", "luaroot", "luascope", "maxclients", "maxconnectionsperchild", "maxkeepaliverequests", "maxmemfree", "maxrequestsperchild", "maxrequestsperthread", "maxrangeoverlaps", "maxrangereversals", "maxranges", "maxrequestworkers", "maxspareservers", "maxsparethreads", "maxthreads", "maxthreadsperchild", "mcachemaxobjectcount", "mcachemaxobjectsize", "mcachemaxstreamingbuffer", "mcacheminobjectsize", "mcacheremovalalgorithm", "mcachesize", "memcacheconnttl", "mergetrailers", "metadir", "metafiles", "metasuffix", "mimemagicfile", "minspareservers", "minsparethreads", "mmapfile", "modemstandard", "modmimeusepathinfo", "multiviewsmatch", "mutex", "namevirtualhost", "nocache", "noproxy", "numservers", "nwssltrustedcerts", "nwsslupgradeable", "options", "order", "outputsed", "passenv", "pidfile", "port", "privatedir", "privilegesmode", "protocol", "protocolecho", "protocols", "protocolshonororder", "proxyaddheaders", "proxybadheader", "proxyblock", "proxydomain", "proxyerroroverride", "proxyexpressdbmfile", "proxyexpressdbmtype", "proxyexpressenable", "proxyftpdircharset", "proxyftpescapewildcards", "proxyftplistonwildcard", "proxyhtmlbufsize", "proxyhtmlcharsetout", "proxyhtmldoctype", "proxyhtmlenable", "proxyhtmlevents", "proxyhtmlextended", "proxyhtmlfixups", "proxyhtmlinterp", "proxyhtmllinks", "proxyhtmlmeta", "proxyhtmlstripcomments", "proxyhtmlurlmap", "proxyiobuffersize", "proxymaxforwards", "proxypass", "proxypassinherit", "proxypassinterpolateenv", "proxypassmatch", "proxypassreverse", "proxypassreversecookiedomain", "proxypassreversecookiepath", "proxypreservehost", "proxyreceivebuffersize", "proxyremote", "proxyremotematch", "proxyrequests", "proxyscgiinternalredirect", "proxyscgisendfile", "proxyset", "proxysourceaddress", "proxystatus", "proxytimeout", "proxyvia", "qualifyredirecturl", "readmename", "receivebuffersize", "redirect", "redirectmatch", "redirectpermanent", "redirecttemp", "refererignore", "refererlog", "reflectorheader", "remoteipheader", "remoteipinternalproxy", "remoteipinternalproxylist", "remoteipproxiesheader", "remoteiptrustedproxy", "remoteiptrustedproxylist", "removecharset", "removeencoding", "removehandler", "removeinputfilter", "removelanguage", "removeoutputfilter", "removetype", "requestheader", "requestreadtimeout", "require", "resourceconfig", "rewritebase", "rewritecond", "rewriteengine", "rewritelock", "rewritelog", "rewriteloglevel", "rewritemap", "rewriteoptions", "rewriterule", "rlimitcpu", "rlimitmem", "rlimitnproc", "satisfy", "scoreboardfile", "script", "scriptalias", "scriptaliasmatch", "scriptinterpretersource", "scriptlog", "scriptlogbuffer", "scriptloglength", "scriptsock", "securelisten", "seerequesttail", "sendbuffersize", "serveradmin", "serveralias", "serverlimit", "servername", "serverpath", "serverroot", "serversignature", "servertokens", "servertype", "session", "sessioncookiename", "sessioncookiename2", "sessioncookieremove", "sessioncryptocipher", "sessioncryptodriver", "sessioncryptopassphrase", "sessioncryptopassphrasefile", "sessiondbdcookiename", "sessiondbdcookiename2", "sessiondbdcookieremove", "sessiondbddeletelabel", "sessiondbdinsertlabel", "sessiondbdperuser", "sessiondbdselectlabel", "sessiondbdupdatelabel", "sessionenv", "sessionexclude", "sessionheader", "sessioninclude", "sessionmaxage", "setenv", "setenvif", "setenvifexpr", "setenvifnocase", "sethandler", "setinputfilter", "setoutputfilter", "ssiendtag", "ssierrormsg", "ssietag", "ssilastmodified", "ssilegacyexprparser", "ssistarttag", "ssitimeformat", "ssiundefinedecho", "sslcacertificatefile", "sslcacertificatepath", "sslcadnrequestfile", "sslcadnrequestpath", "sslcarevocationcheck", "sslcarevocationfile", "sslcarevocationpath", "sslcertificatechainfile", "sslcertificatefile", "sslcertificatekeyfile", "sslciphersuite", "sslcompression", "sslcryptodevice", "sslengine", "sslfips", "sslhonorcipherorder", "sslinsecurerenegotiation", "sslmutex", "sslocspdefaultresponder", "sslocspenable", "sslocspoverrideresponder", "sslocspproxyurl", "sslocsprespondertimeout", "sslocspresponsemaxage", "sslocspresponsetimeskew", "sslocspuserequestnonce", "sslopensslconfcmd", "ssloptions", "sslpassphrasedialog", "sslprotocol", "sslproxycacertificatefile", "sslproxycacertificatepath", "sslproxycarevocationcheck", "sslproxycarevocationfile", "sslproxycarevocationpath", "sslproxycheckpeercn", "sslproxycheckpeerexpire", "sslproxycheckpeername", "sslproxyciphersuite", "sslproxyengine", "sslproxymachinecertificatechainfile", "sslproxymachinecertificatefile", "sslproxymachinecertificatepath", "sslproxyprotocol", "sslproxyverify", "sslproxyverifydepth", "sslrandomseed", "sslrenegbuffersize", "sslrequire", "sslrequiressl", "sslsessioncache", "sslsessioncachetimeout", "sslsessionticketkeyfile", "sslsessiontickets", "sslsrpunknownuserseed", "sslsrpverifierfile", "sslstaplingcache", "sslstaplingerrorcachetimeout", "sslstaplingfaketrylater", "sslstaplingforceurl", "sslstaplingrespondertimeout", "sslstaplingresponsemaxage", "sslstaplingresponsetimeskew", "sslstaplingreturnrespondererrors", "sslstaplingstandardcachetimeout", "sslstrictsnivhostcheck", "sslusername", "sslusestapling", "sslverifyclient", "sslverifydepth", "startservers", "startthreads", "substitute", "substituteinheritbefore", "substitutemaxlinelength", "suexec", "suexecusergroup", "threadlimit", "threadsperchild", "threadstacksize", "timeout", "topsites", "topurls", "traceenable", "transferlog", "typesconfig", "undefine", "undefmacro", "unsetenv", "use", "usecanonicalname", "usecanonicalphysicalport", "user", "userdir", "vhostcgimode", "vhostcgiprivs", "vhostgroup", "vhostprivs", "vhostsecure", "vhostuser", "virtualdocumentroot", "virtualdocumentrootip", "virtualscriptalias", "virtualscriptaliasip", "win32disableacceptex", "watchdoginterval", "xbithack", "xml2encalias", "xml2encdefault", "xml2startparse"]
|
11
|
+
h[:values] = Set.new ["add", "All", "allow", "any", "append", "AuthConfig", "Basic", "CONNECT", "DELETE", "deny", "Digest", "double", "downgrade-1.0", "email", "env", "error", "ExecCGI", "FancyIndexing", "FileInfo", "FollowSymLinks", "force-response-1.0", "formatted", "from", "full", "Full", "GET", "gone", "group", "IconsAreLinks", "Includes", "IncludesNOEXEC", "Indexes", "inetd", "inherit", "Limit", "map", "Minimal", "MultiViews", "mutual-failure", "nocontent", "nokeepalive", "none", "None", "off", "on", "Options", "OPTIONS", "OS", "permanent", "POST", "PUT", "referer", "ScanHTMLTitles", "seeother", "semi-formatted", "set", "standalone", "SuppressDescription", "SuppressLastModified", "SuppressSize", "SymLinksIfOwnerMatch", "temporary", "unformatted", "unset", "URL", "user", "valid-user"]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/rouge/lexers/cmake.rb
CHANGED
data/lib/rouge/lexers/console.rb
CHANGED
@@ -9,12 +9,14 @@ module Rouge
|
|
9
9
|
# line before passing the remainder of the line to the language lexer for
|
10
10
|
# the shell (by default, the {Shell} lexer).
|
11
11
|
#
|
12
|
-
# The {ConsoleLexer} class accepts
|
12
|
+
# The {ConsoleLexer} class accepts five options:
|
13
13
|
# 1. **lang**: the shell language to lex (default: `shell`);
|
14
14
|
# 2. **output**: the output language (default: `plaintext?token=Generic.Output`);
|
15
15
|
# 3. **prompt**: comma-separated list of strings that indicate the end of a
|
16
16
|
# prompt (default: `$,#,>,;`);
|
17
17
|
# 4. **comments**: whether to enable comments.
|
18
|
+
# 5. **error**: comma-separated list of strings that indicate the start of an
|
19
|
+
# error message
|
18
20
|
#
|
19
21
|
# The comments option, if enabled, will lex lines that begin with a `#` as a
|
20
22
|
# comment. Please note that this option will only work if the prompt is
|
@@ -39,12 +41,13 @@ module Rouge
|
|
39
41
|
tag 'console'
|
40
42
|
aliases 'terminal', 'shell_session', 'shell-session'
|
41
43
|
filenames '*.cap'
|
42
|
-
desc 'A generic lexer for shell sessions. Accepts ?lang and ?output lexer options, a ?prompt option,
|
44
|
+
desc 'A generic lexer for shell sessions. Accepts ?lang and ?output lexer options, a ?prompt option, ?comments to enable # comments, and ?error to handle error messages.'
|
43
45
|
|
44
46
|
option :lang, 'the shell language to lex (default: shell)'
|
45
47
|
option :output, 'the output language (default: plaintext?token=Generic.Output)'
|
46
48
|
option :prompt, 'comma-separated list of strings that indicate the end of a prompt. (default: $,#,>,;)'
|
47
49
|
option :comments, 'enable hash-comments at the start of a line - otherwise interpreted as a prompt. (default: false, implied by ?prompt not containing `#`)'
|
50
|
+
option :error, 'comma-separated list of strings that indicate the start of an error message'
|
48
51
|
|
49
52
|
def initialize(*)
|
50
53
|
super
|
@@ -52,14 +55,24 @@ module Rouge
|
|
52
55
|
@lang = lexer_option(:lang) { 'shell' }
|
53
56
|
@output = lexer_option(:output) { PlainText.new(token: Generic::Output) }
|
54
57
|
@comments = bool_option(:comments) { :guess }
|
58
|
+
@error = list_option(:error) { nil }
|
55
59
|
end
|
56
60
|
|
57
|
-
|
58
|
-
|
59
|
-
|
61
|
+
# whether to allow comments. if manually specifying a prompt that isn't
|
62
|
+
# simply "#", we flag this to on
|
63
|
+
def allow_comments?
|
64
|
+
case @comments
|
65
|
+
when :guess
|
66
|
+
@prompt && !@prompt.empty? && !end_chars.include?('#')
|
67
|
+
else
|
68
|
+
@comments
|
60
69
|
end
|
61
70
|
end
|
62
71
|
|
72
|
+
def comment_regex
|
73
|
+
/\A\s*?#/
|
74
|
+
end
|
75
|
+
|
63
76
|
def end_chars
|
64
77
|
@end_chars ||= if @prompt.any?
|
65
78
|
@prompt.reject { |c| c.empty? }
|
@@ -70,22 +83,9 @@ module Rouge
|
|
70
83
|
end
|
71
84
|
end
|
72
85
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
case @comments
|
77
|
-
when :guess
|
78
|
-
@prompt && !@prompt.empty? && !end_chars.include?('#')
|
79
|
-
else
|
80
|
-
@comments
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def prompt_prefix_regex
|
85
|
-
if allow_comments?
|
86
|
-
/[^<#]*?/m
|
87
|
-
else
|
88
|
-
/.*?/m
|
86
|
+
def error_regex
|
87
|
+
@error_regex ||= if @error.any?
|
88
|
+
/^(?:#{@error.map(&Regexp.method(:escape)).join('|')})/
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
@@ -102,6 +102,10 @@ module Rouge
|
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
+
def line_regex
|
106
|
+
/(\\.|[^\\])*?(\n|$)/m
|
107
|
+
end
|
108
|
+
|
105
109
|
def output_lexer
|
106
110
|
@output_lexer ||= case @output
|
107
111
|
when nil
|
@@ -115,22 +119,6 @@ module Rouge
|
|
115
119
|
end
|
116
120
|
end
|
117
121
|
|
118
|
-
def line_regex
|
119
|
-
/(\\.|[^\\])*?(\n|$)/m
|
120
|
-
end
|
121
|
-
|
122
|
-
def comment_regex
|
123
|
-
/\A\s*?#/
|
124
|
-
end
|
125
|
-
|
126
|
-
def stream_tokens(input, &output)
|
127
|
-
input = StringScanner.new(input)
|
128
|
-
lang_lexer.reset!
|
129
|
-
output_lexer.reset!
|
130
|
-
|
131
|
-
process_line(input, &output) while !input.eos?
|
132
|
-
end
|
133
|
-
|
134
122
|
def process_line(input, &output)
|
135
123
|
input.scan(line_regex)
|
136
124
|
|
@@ -162,6 +150,12 @@ module Rouge
|
|
162
150
|
lang_lexer.reset!
|
163
151
|
|
164
152
|
yield Comment, input[0]
|
153
|
+
elsif error_regex =~ input[0]
|
154
|
+
puts "console: matched error #{input[0].inspect}" if @debug
|
155
|
+
output_lexer.reset!
|
156
|
+
lang_lexer.reset!
|
157
|
+
|
158
|
+
yield Generic::Error, input[0]
|
165
159
|
else
|
166
160
|
puts "console: matched output #{input[0].inspect}" if @debug
|
167
161
|
lang_lexer.reset!
|
@@ -169,6 +163,28 @@ module Rouge
|
|
169
163
|
output_lexer.continue_lex(input[0], &output)
|
170
164
|
end
|
171
165
|
end
|
166
|
+
|
167
|
+
def prompt_prefix_regex
|
168
|
+
if allow_comments?
|
169
|
+
/[^<#]*?/m
|
170
|
+
else
|
171
|
+
/.*?/m
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
def prompt_regex
|
176
|
+
@prompt_regex ||= begin
|
177
|
+
/^#{prompt_prefix_regex}(?:#{end_chars.map(&Regexp.method(:escape)).join('|')})/
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
def stream_tokens(input, &output)
|
182
|
+
input = StringScanner.new(input)
|
183
|
+
lang_lexer.reset!
|
184
|
+
output_lexer.reset!
|
185
|
+
|
186
|
+
process_line(input, &output) while !input.eos?
|
187
|
+
end
|
172
188
|
end
|
173
189
|
end
|
174
190
|
end
|