rouge 3.16.0 → 3.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rougify +2 -2
  3. data/lib/rouge.rb +67 -53
  4. data/lib/rouge/demos/augeas +16 -0
  5. data/lib/rouge/demos/bibtex +12 -0
  6. data/lib/rouge/demos/brightscript +6 -0
  7. data/lib/rouge/demos/cypher +5 -0
  8. data/lib/rouge/demos/datastudio +21 -0
  9. data/lib/rouge/demos/ecl +18 -0
  10. data/lib/rouge/demos/ghc-cmm +23 -0
  11. data/lib/rouge/demos/hlsl +20 -0
  12. data/lib/rouge/demos/isbl +4 -0
  13. data/lib/rouge/demos/janet +3 -0
  14. data/lib/rouge/demos/livescript +15 -0
  15. data/lib/rouge/demos/rego +8 -0
  16. data/lib/rouge/demos/solidity +13 -0
  17. data/lib/rouge/demos/ssh +4 -0
  18. data/lib/rouge/demos/vcl +12 -0
  19. data/lib/rouge/demos/velocity +9 -0
  20. data/lib/rouge/demos/yang +17 -0
  21. data/lib/rouge/demos/zig +6 -0
  22. data/lib/rouge/lexer.rb +2 -1
  23. data/lib/rouge/lexers/apache.rb +22 -12
  24. data/lib/rouge/lexers/apache/keywords.rb +24 -0
  25. data/lib/rouge/lexers/augeas.rb +93 -0
  26. data/lib/rouge/lexers/batchfile.rb +1 -1
  27. data/lib/rouge/lexers/bibtex.rb +115 -0
  28. data/lib/rouge/lexers/brightscript.rb +147 -0
  29. data/lib/rouge/lexers/cmake.rb +1 -0
  30. data/lib/rouge/lexers/coffeescript.rb +47 -15
  31. data/lib/rouge/lexers/console.rb +53 -37
  32. data/lib/rouge/lexers/cpp.rb +21 -7
  33. data/lib/rouge/lexers/css.rb +3 -1
  34. data/lib/rouge/lexers/cypher.rb +108 -0
  35. data/lib/rouge/lexers/datastudio.rb +138 -0
  36. data/lib/rouge/lexers/diff.rb +1 -1
  37. data/lib/rouge/lexers/docker.rb +1 -1
  38. data/lib/rouge/lexers/ecl.rb +175 -0
  39. data/lib/rouge/lexers/fsharp.rb +1 -0
  40. data/lib/rouge/lexers/ghc_cmm.rb +340 -0
  41. data/lib/rouge/lexers/gherkin.rb +1 -1
  42. data/lib/rouge/lexers/gherkin/keywords.rb +9 -6
  43. data/lib/rouge/lexers/haskell.rb +27 -19
  44. data/lib/rouge/lexers/hlsl.rb +166 -0
  45. data/lib/rouge/lexers/html.rb +7 -7
  46. data/lib/rouge/lexers/isbl.rb +97 -0
  47. data/lib/rouge/lexers/isbl/builtins.rb +17 -0
  48. data/lib/rouge/lexers/janet.rb +217 -0
  49. data/lib/rouge/lexers/javascript.rb +4 -4
  50. data/lib/rouge/lexers/jinja.rb +22 -7
  51. data/lib/rouge/lexers/json.rb +3 -0
  52. data/lib/rouge/lexers/json_doc.rb +1 -0
  53. data/lib/rouge/lexers/jsx.rb +47 -59
  54. data/lib/rouge/lexers/julia.rb +4 -2
  55. data/lib/rouge/lexers/kotlin.rb +14 -2
  56. data/lib/rouge/lexers/lasso.rb +11 -12
  57. data/lib/rouge/lexers/lasso/keywords.rb +20 -0
  58. data/lib/rouge/lexers/livescript.rb +310 -0
  59. data/lib/rouge/lexers/llvm.rb +6 -33
  60. data/lib/rouge/lexers/llvm/keywords.rb +25 -0
  61. data/lib/rouge/lexers/lua.rb +2 -2
  62. data/lib/rouge/lexers/lua/keywords.rb +28 -0
  63. data/lib/rouge/lexers/markdown.rb +9 -5
  64. data/lib/rouge/lexers/mathematica.rb +2 -2
  65. data/lib/rouge/lexers/mathematica/keywords.rb +17 -0
  66. data/lib/rouge/lexers/matlab.rb +3 -4
  67. data/lib/rouge/lexers/matlab/builtins.rb +11 -0
  68. data/lib/rouge/lexers/matlab/keywords.rb +15 -0
  69. data/lib/rouge/lexers/nasm.rb +42 -168
  70. data/lib/rouge/lexers/opentype_feature_file.rb +27 -42
  71. data/lib/rouge/lexers/pascal.rb +1 -1
  72. data/lib/rouge/lexers/perl.rb +21 -3
  73. data/lib/rouge/lexers/php.rb +48 -33
  74. data/lib/rouge/lexers/php/keywords.rb +202 -0
  75. data/lib/rouge/lexers/powershell.rb +5 -3
  76. data/lib/rouge/lexers/python.rb +58 -57
  77. data/lib/rouge/lexers/racket.rb +24 -1
  78. data/lib/rouge/lexers/rego.rb +60 -0
  79. data/lib/rouge/lexers/ruby.rb +16 -3
  80. data/lib/rouge/lexers/sass/common.rb +1 -0
  81. data/lib/rouge/lexers/scala.rb +1 -1
  82. data/lib/rouge/lexers/solidity.rb +185 -0
  83. data/lib/rouge/lexers/sparql.rb +5 -4
  84. data/lib/rouge/lexers/sqf.rb +2 -2
  85. data/lib/rouge/lexers/sqf/keywords.rb +12 -0
  86. data/lib/rouge/lexers/ssh.rb +33 -0
  87. data/lib/rouge/lexers/terraform.rb +15 -0
  88. data/lib/rouge/lexers/tsx.rb +10 -3
  89. data/lib/rouge/lexers/turtle.rb +1 -1
  90. data/lib/rouge/lexers/twig.rb +4 -4
  91. data/lib/rouge/lexers/typescript.rb +1 -8
  92. data/lib/rouge/lexers/typescript/common.rb +18 -4
  93. data/lib/rouge/lexers/varnish.rb +53 -16
  94. data/lib/rouge/lexers/velocity.rb +71 -0
  95. data/lib/rouge/lexers/viml.rb +6 -38
  96. data/lib/rouge/lexers/viml/keywords.rb +11 -4
  97. data/lib/rouge/lexers/vue.rb +4 -1
  98. data/lib/rouge/lexers/xml.rb +5 -3
  99. data/lib/rouge/lexers/yaml.rb +5 -3
  100. data/lib/rouge/lexers/yang.rb +147 -0
  101. data/lib/rouge/lexers/zig.rb +139 -0
  102. data/lib/rouge/version.rb +1 -1
  103. metadata +47 -10
  104. data/lib/rouge/demos/varnish +0 -55
  105. data/lib/rouge/lexers/apache/keywords.yml +0 -764
  106. data/lib/rouge/lexers/lasso/keywords.yml +0 -446
  107. data/lib/rouge/lexers/lua/builtins.rb +0 -24
  108. data/lib/rouge/lexers/mathematica/builtins.rb +0 -13
  109. data/lib/rouge/lexers/matlab/builtins.yml +0 -3515
  110. data/lib/rouge/lexers/php/builtins.rb +0 -203
  111. data/lib/rouge/lexers/sqf/commands.rb +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5342709cd08d6095557fbe22c79544c6be522f2343ed53360ab57f96bb37c077
4
- data.tar.gz: 25e1d81909ad22cece899eaf4d6c32ec1e0931611031f3ac8a37b6be3bceb497
3
+ metadata.gz: 8ef1072cc2523dba637a191d195865b0b2fb9f38c4f6d9961fb58748306f6cd1
4
+ data.tar.gz: 4cd1b0d5262fa8a1d4ddb564cf4e9a185d6e8043bee0261f119e7a8ccb81e1fd
5
5
  SHA512:
6
- metadata.gz: e1244771613b6d0ec7523c834084974c4c9e6145a06d237e1bf937ffced73af0a7f7c4bf5efbf397b5bf943df7a66d4614cc601c82721f6b2d03425dc9118ecc
7
- data.tar.gz: ba9ecdc95aae8f45745820720b167ac102c1ac6d9af431024090cb79dd7805fb2ba981207de97c052339388b2886d2eb79e036b9aa60aaa8b6bc869bef9b5468
6
+ metadata.gz: 04a39cda7513ce8084b6cdddd3016e7ca679218688dfb2dcb6f6fd8a0e627ec189f38a31ba2c44bd2a8c5b16191e24d0f343f860db5dfbcbb7ca49b92aaff197
7
+ data.tar.gz: 50172d87860fa9fb4b187dee66c72954ce926e0d73f3e78e1a15a7f3437e749d48b2f935fa6ad08be457a6dd317a3c5c20340a7f7cc1621825b97887e82822c1
@@ -3,8 +3,8 @@
3
3
 
4
4
  require 'pathname'
5
5
  ROOT_DIR = Pathname.new(__FILE__).dirname.parent
6
- load ROOT_DIR.join('lib/rouge.rb')
7
- load ROOT_DIR.join('lib/rouge/cli.rb')
6
+ Kernel::load ROOT_DIR.join('lib/rouge.rb')
7
+ Kernel::load ROOT_DIR.join('lib/rouge/cli.rb')
8
8
  Signal.trap('PIPE', 'SYSTEM_DEFAULT') if Signal.list.include? 'PIPE'
9
9
 
10
10
  begin
@@ -6,10 +6,14 @@ 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
- Object.send :remove_const, :Rouge
12
- load __FILE__
15
+ Object::send :remove_const, :Rouge
16
+ Kernel::load __FILE__
13
17
  end
14
18
 
15
19
  # Highlight some text with a given lexer and formatter.
@@ -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
- # mimic Kernel#require_relative API
38
- def load_relative(path)
39
- load File.join(__dir__, "#{path}.rb")
40
- end
39
+ # Load a file relative to the `lib/rouge` path.
40
+ #
41
+ # @api private
42
+ def load_file(path)
43
+ Kernel::load File.join(LIB_DIR, "rouge/#{path}.rb")
44
+ end
41
45
 
42
- def lexer_dir(path = '')
43
- File.join(__dir__, 'rouge', 'lexers', path)
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
- load_relative 'rouge/version'
47
- load_relative 'rouge/util'
48
- load_relative 'rouge/text_analyzer'
49
- load_relative 'rouge/token'
60
+ Rouge.load_file 'version'
61
+ Rouge.load_file 'util'
62
+ Rouge.load_file 'text_analyzer'
63
+ Rouge.load_file 'token'
50
64
 
51
- load_relative 'rouge/lexer'
52
- load_relative 'rouge/regex_lexer'
53
- load_relative 'rouge/template_lexer'
65
+ Rouge.load_file 'lexer'
66
+ Rouge.load_file 'regex_lexer'
67
+ Rouge.load_file 'template_lexer'
54
68
 
55
- Dir.glob(lexer_dir('*rb')).each { |f| Rouge::Lexers.load_lexer(f.sub(lexer_dir, '')) }
69
+ Rouge.load_lexers
56
70
 
57
- load_relative 'rouge/guesser'
58
- load_relative 'rouge/guessers/util'
59
- load_relative 'rouge/guessers/glob_mapping'
60
- load_relative 'rouge/guessers/modeline'
61
- load_relative 'rouge/guessers/filename'
62
- load_relative 'rouge/guessers/mimetype'
63
- load_relative 'rouge/guessers/source'
64
- load_relative 'rouge/guessers/disambiguation'
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
- load_relative 'rouge/formatter'
67
- load_relative 'rouge/formatters/html'
68
- load_relative 'rouge/formatters/html_table'
69
- load_relative 'rouge/formatters/html_pygments'
70
- load_relative 'rouge/formatters/html_legacy'
71
- load_relative 'rouge/formatters/html_linewise'
72
- load_relative 'rouge/formatters/html_line_table'
73
- load_relative 'rouge/formatters/html_inline'
74
- load_relative 'rouge/formatters/terminal256'
75
- load_relative 'rouge/formatters/terminal_truecolor'
76
- load_relative 'rouge/formatters/tex'
77
- load_relative 'rouge/formatters/null'
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
- load_relative 'rouge/theme'
80
- load_relative 'rouge/tex_theme_renderer'
81
- load_relative 'rouge/themes/thankful_eyes'
82
- load_relative 'rouge/themes/colorful'
83
- load_relative 'rouge/themes/base16'
84
- load_relative 'rouge/themes/github'
85
- load_relative 'rouge/themes/igor_pro'
86
- load_relative 'rouge/themes/monokai'
87
- load_relative 'rouge/themes/molokai'
88
- load_relative 'rouge/themes/monokai_sublime'
89
- load_relative 'rouge/themes/gruvbox'
90
- load_relative 'rouge/themes/tulip'
91
- load_relative 'rouge/themes/pastie'
92
- load_relative 'rouge/themes/bw'
93
- load_relative 'rouge/themes/magritte'
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,16 @@
1
+ (*
2
+ This is a comment
3
+ *)
4
+ module Foo =
5
+ autoload xfm
6
+
7
+ let a = b | c . d
8
+
9
+ let lns = a*
10
+
11
+ let filter = incl "/path/to/file"
12
+ . incl "/path/to/other_file"
13
+ . Util.stdexcl
14
+
15
+ (* xmf is the transform *)
16
+ let xmf = transform lns filter
@@ -0,0 +1,12 @@
1
+ @article{Witten:1988hf,
2
+ author = "Witten, Edward",
3
+ title = "{Quantum Field Theory and the Jones Polynomial}",
4
+ journal = "Commun. Math. Phys.",
5
+ volume = "121",
6
+ year = "1989",
7
+ pages = "351-399",
8
+ doi = "10.1007/BF01217730",
9
+ note = "[,233(1988)]",
10
+ reportNumber = "IASSNS-HEP-88-33",
11
+ SLACcitation = "%%CITATION = CMPHA,121,351;%%"
12
+ }
@@ -0,0 +1,6 @@
1
+ function main(args as dynamic) as void
2
+ screen = CreateObject("roSGScreen")
3
+ 'Create a scene and load /components/helloworld.xml'
4
+ scene = screen.CreateScene("HelloWorld")
5
+ screen.show()
6
+ end function
@@ -0,0 +1,5 @@
1
+ // Cypher Mode for Rouge
2
+ CREATE (john:Person {name: 'John'})
3
+ MATCH (user)-[:friend]->(follower)
4
+ WHERE user.name IN ['Joe', 'John', 'Sara', 'Maria', 'Steve'] AND follower.name =~ 'S.*'
5
+ RETURN user.name, follower.name
@@ -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,18 @@
1
+ /*
2
+ Example code - use without restriction.
3
+ */
4
+ Layout_Person := RECORD
5
+ UNSIGNED1 PersonID;
6
+ STRING15 FirstName;
7
+ STRING25 LastName;
8
+ END;
9
+
10
+ allPeople := DATASET([ {1,'Fred','Smith'},
11
+ {2,'Joe','Blow'},
12
+ {3,'Jane','Smith'}],Layout_Person);
13
+
14
+ somePeople := allPeople(LastName = 'Smith');
15
+
16
+ // Outputs ---
17
+ somePeople;
18
+
@@ -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,20 @@
1
+ struct PSInput
2
+ {
3
+ float4 position : SV_POSITION;
4
+ float4 color : COLOR;
5
+ };
6
+
7
+ // Vertex shader
8
+ PSInput VSMain(float4 position : POSITION, float4 color : COLOR)
9
+ {
10
+ PSInput result;
11
+ result.position = position;
12
+ result.color = color;
13
+ return result;
14
+ }
15
+
16
+ // Pixel shader
17
+ float4 PSMain(PSInput input) : SV_TARGET
18
+ {
19
+ return input.color;
20
+ }
@@ -0,0 +1,4 @@
1
+ NameReq = Object.Requisites(SYSREQ_NAME)
2
+ if Assigned(NameReq.AsString)
3
+ ShowMessage("Привет мир")
4
+ endif
@@ -0,0 +1,3 @@
1
+ (defn a-fun
2
+ "A function"
3
+ (do-something))
@@ -0,0 +1,15 @@
1
+ mitch =
2
+ age: 21
3
+ height: 180cm
4
+ pets: [\dog, \goldfish]
5
+
6
+ phile = {}
7
+ phile{height, pets} = mitch
8
+ phile.height #=> 180
9
+ phile.pets #=> ['dog', 'goldfish']
10
+
11
+ a = [2 7 1 8]
12
+ ..push 3
13
+ ..shift!
14
+ ..sort!
15
+ a #=> [1,3,7,8]
@@ -0,0 +1,8 @@
1
+ package httpapi.authz
2
+
3
+ subordinates = {"alice": [], "charlie": [], "bob": ["alice"], "betty": ["charlie"]}
4
+
5
+ # HTTP API request
6
+ import input
7
+
8
+ default allow = false
@@ -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
+ }
@@ -0,0 +1,4 @@
1
+ Host example
2
+ Hostname example.com
3
+ User user
4
+ Port 1234
@@ -0,0 +1,12 @@
1
+ vcl 4.0;
2
+
3
+ backend server1 {
4
+ .host = "server1.example.com";
5
+ .probe = {
6
+ .url = "/";
7
+ .timeout = 1s;
8
+ .interval = 5s;
9
+ .window = 5;
10
+ .threshold = 3;
11
+ }
12
+ }
@@ -0,0 +1,9 @@
1
+ #*
2
+ There is multi-line comment.
3
+ see this text because the Velocity Templating Engine will ignore it.
4
+ *#
5
+ <h3>List</h3>
6
+ ## This is a single line comment.
7
+ #if( $allProducts )
8
+ <p>not found.</p>
9
+ #end
@@ -0,0 +1,17 @@
1
+ module petstore {
2
+ namespace "http://autlan.dt/gribok/yang/example";
3
+ prefix ex;
4
+
5
+ revision 2020-04-01 {
6
+ description "Example yang";
7
+ }
8
+
9
+ container pets {
10
+ list dogs {
11
+ key name;
12
+ leaf name {
13
+ type string;
14
+ }
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,6 @@
1
+ const std = @import("std");
2
+ const warn = std.debug.warn;
3
+
4
+ fn add_floats(x: f16, y: f16) f16 {
5
+ return x + y;
6
+ }
@@ -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(__dir__, 'lexers', relpath)
514
+ Kernel::load File.join(BASE_DIR, relpath)
514
515
  end
515
516
  end
516
517
  end
@@ -11,18 +11,28 @@ module Rouge
11
11
  mimetypes 'text/x-httpd-conf', 'text/x-apache-conf'
12
12
  filenames '.htaccess', 'httpd.conf'
13
13
 
14
- class << self
15
- attr_reader :keywords
14
+ # self-modifying method that loads the keywords file
15
+ def self.directives
16
+ Kernel::load File.join(Lexers::BASE_DIR, 'apache/keywords.rb')
17
+ directives
16
18
  end
17
- # Load Apache keywords from separate YML file
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
19
+
20
+ def self.sections
21
+ Kernel::load File.join(Lexers::BASE_DIR, 'apache/keywords.rb')
22
+ sections
23
+ end
24
+
25
+ def self.values
26
+ Kernel::load File.join(Lexers::BASE_DIR, 'apache/keywords.rb')
27
+ values
22
28
  end
23
29
 
24
- def name_for_token(token, kwtype, tktype)
25
- if self.class.keywords[kwtype].include? token
30
+ def name_for_token(token, tktype)
31
+ if self.class.sections.include? token
32
+ tktype
33
+ elsif self.class.directives.include? token
34
+ tktype
35
+ elsif self.class.values.include? token
26
36
  tktype
27
37
  else
28
38
  Text
@@ -38,12 +48,12 @@ module Rouge
38
48
  mixin :whitespace
39
49
 
40
50
  rule %r/(<\/?)(\w+)/ do |m|
41
- groups Punctuation, name_for_token(m[2].downcase, :sections, Name::Label)
51
+ groups Punctuation, name_for_token(m[2].downcase, Name::Label)
42
52
  push :section
43
53
  end
44
54
 
45
55
  rule %r/\w+/ do |m|
46
- token name_for_token(m[0].downcase, :directives, Name::Class)
56
+ token name_for_token(m[0].downcase, Name::Class)
47
57
  push :directive
48
58
  end
49
59
  end
@@ -65,7 +75,7 @@ module Rouge
65
75
  mixin :whitespace
66
76
 
67
77
  rule %r/\S+/ do |m|
68
- token name_for_token(m[0], :values, Literal::String::Symbol)
78
+ token name_for_token(m[0].downcase, Literal::String::Symbol)
69
79
  end
70
80
  end
71
81
  end