rouge 3.16.0 → 3.21.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.
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