rouge 3.2.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.
Files changed (316) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +17 -3
  3. data/bin/rougify +1 -0
  4. data/lib/rouge.rb +67 -43
  5. data/lib/rouge/cli.rb +84 -17
  6. data/lib/rouge/demos/ada +26 -0
  7. data/lib/rouge/demos/apex +9 -0
  8. data/lib/rouge/demos/armasm +12 -0
  9. data/lib/rouge/demos/batchfile +3 -0
  10. data/lib/rouge/demos/bbcbasic +6 -0
  11. data/lib/rouge/demos/bpf +7 -0
  12. data/lib/rouge/demos/brainfuck +5 -0
  13. data/lib/rouge/demos/clean +6 -0
  14. data/lib/rouge/demos/cmhg +8 -0
  15. data/lib/rouge/demos/csvs +8 -0
  16. data/lib/rouge/demos/cuda +11 -0
  17. data/lib/rouge/demos/cypher +5 -0
  18. data/lib/rouge/demos/cython +6 -0
  19. data/lib/rouge/demos/datastudio +21 -0
  20. data/lib/rouge/demos/ecl +18 -0
  21. data/lib/rouge/demos/eex +1 -0
  22. data/lib/rouge/demos/epp +4 -0
  23. data/lib/rouge/demos/escape +3 -0
  24. data/lib/rouge/demos/freefem +16 -0
  25. data/lib/rouge/demos/gdscript +18 -0
  26. data/lib/rouge/demos/ghc-cmm +23 -0
  27. data/lib/rouge/demos/ghc-core +26 -0
  28. data/lib/rouge/demos/haxe +5 -0
  29. data/lib/rouge/demos/hocon +8 -0
  30. data/lib/rouge/demos/hql +5 -0
  31. data/lib/rouge/demos/isbl +4 -0
  32. data/lib/rouge/demos/jsl +3 -0
  33. data/lib/rouge/demos/jsp +29 -0
  34. data/lib/rouge/demos/liquid +0 -1
  35. data/lib/rouge/demos/lustre +6 -0
  36. data/lib/rouge/demos/lutin +18 -0
  37. data/lib/rouge/demos/m68k +16 -0
  38. data/lib/rouge/demos/magik +6 -0
  39. data/lib/rouge/demos/mason +22 -0
  40. data/lib/rouge/demos/mathematica +8 -0
  41. data/lib/rouge/demos/minizinc +23 -0
  42. data/lib/rouge/demos/msgtrans +4 -0
  43. data/lib/rouge/demos/nasm +6 -6
  44. data/lib/rouge/demos/nesasm +11 -0
  45. data/lib/rouge/demos/objective_cpp +17 -0
  46. data/lib/rouge/demos/openedge +4 -0
  47. data/lib/rouge/demos/opentype_feature_file +6 -0
  48. data/lib/rouge/demos/plist +1 -132
  49. data/lib/rouge/demos/powershell +12 -48
  50. data/lib/rouge/demos/q +6 -0
  51. data/lib/rouge/demos/reasonml +12 -0
  52. data/lib/rouge/demos/rego +8 -0
  53. data/lib/rouge/demos/robot_framework +27 -0
  54. data/lib/rouge/demos/sas +13 -0
  55. data/lib/rouge/demos/slice +10 -0
  56. data/lib/rouge/demos/solidity +13 -0
  57. data/lib/rouge/demos/sparql +6 -0
  58. data/lib/rouge/demos/sqf +14 -0
  59. data/lib/rouge/demos/supercollider +11 -0
  60. data/lib/rouge/demos/terraform +0 -15
  61. data/lib/rouge/demos/ttcn3 +6 -0
  62. data/lib/rouge/demos/vcl +12 -0
  63. data/lib/rouge/demos/xojo +14 -0
  64. data/lib/rouge/demos/xpath +2 -0
  65. data/lib/rouge/demos/xquery +22 -0
  66. data/lib/rouge/demos/yang +17 -0
  67. data/lib/rouge/formatter.rb +39 -2
  68. data/lib/rouge/formatters/html.rb +21 -2
  69. data/lib/rouge/formatters/html_inline.rb +1 -0
  70. data/lib/rouge/formatters/html_legacy.rb +1 -0
  71. data/lib/rouge/formatters/html_line_table.rb +53 -0
  72. data/lib/rouge/formatters/html_linewise.rb +7 -11
  73. data/lib/rouge/formatters/html_pygments.rb +2 -0
  74. data/lib/rouge/formatters/html_table.rb +21 -31
  75. data/lib/rouge/formatters/null.rb +1 -0
  76. data/lib/rouge/formatters/terminal256.rb +23 -5
  77. data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
  78. data/lib/rouge/formatters/tex.rb +92 -0
  79. data/lib/rouge/guesser.rb +2 -0
  80. data/lib/rouge/guessers/disambiguation.rb +35 -0
  81. data/lib/rouge/guessers/filename.rb +2 -0
  82. data/lib/rouge/guessers/glob_mapping.rb +3 -1
  83. data/lib/rouge/guessers/mimetype.rb +2 -0
  84. data/lib/rouge/guessers/modeline.rb +3 -1
  85. data/lib/rouge/guessers/source.rb +3 -1
  86. data/lib/rouge/guessers/util.rb +2 -0
  87. data/lib/rouge/lexer.rb +71 -15
  88. data/lib/rouge/lexers/abap.rb +13 -11
  89. data/lib/rouge/lexers/actionscript.rb +35 -34
  90. data/lib/rouge/lexers/ada.rb +162 -0
  91. data/lib/rouge/lexers/apache.rb +13 -15
  92. data/lib/rouge/lexers/apache/keywords.rb +15 -0
  93. data/lib/rouge/lexers/apex.rb +126 -0
  94. data/lib/rouge/lexers/apiblueprint.rb +2 -0
  95. data/lib/rouge/lexers/apple_script.rb +17 -14
  96. data/lib/rouge/lexers/armasm.rb +145 -0
  97. data/lib/rouge/lexers/awk.rb +26 -25
  98. data/lib/rouge/lexers/batchfile.rb +164 -0
  99. data/lib/rouge/lexers/bbcbasic.rb +112 -0
  100. data/lib/rouge/lexers/biml.rb +6 -4
  101. data/lib/rouge/lexers/bpf.rb +118 -0
  102. data/lib/rouge/lexers/brainfuck.rb +53 -0
  103. data/lib/rouge/lexers/bsl.rb +13 -12
  104. data/lib/rouge/lexers/c.rb +35 -57
  105. data/lib/rouge/lexers/ceylon.rb +7 -34
  106. data/lib/rouge/lexers/cfscript.rb +27 -26
  107. data/lib/rouge/lexers/clean.rb +156 -0
  108. data/lib/rouge/lexers/clojure.rb +15 -14
  109. data/lib/rouge/lexers/cmake.rb +16 -14
  110. data/lib/rouge/lexers/cmhg.rb +34 -0
  111. data/lib/rouge/lexers/coffeescript.rb +90 -49
  112. data/lib/rouge/lexers/common_lisp.rb +39 -38
  113. data/lib/rouge/lexers/conf.rb +7 -6
  114. data/lib/rouge/lexers/console.rb +92 -38
  115. data/lib/rouge/lexers/coq.rb +27 -23
  116. data/lib/rouge/lexers/cpp.rb +24 -13
  117. data/lib/rouge/lexers/crystal.rb +71 -70
  118. data/lib/rouge/lexers/csharp.rb +29 -29
  119. data/lib/rouge/lexers/css.rb +24 -23
  120. data/lib/rouge/lexers/csvs.rb +44 -0
  121. data/lib/rouge/lexers/cuda.rb +35 -0
  122. data/lib/rouge/lexers/cypher.rb +108 -0
  123. data/lib/rouge/lexers/cython.rb +151 -0
  124. data/lib/rouge/lexers/d.rb +64 -63
  125. data/lib/rouge/lexers/dart.rb +34 -33
  126. data/lib/rouge/lexers/datastudio.rb +138 -0
  127. data/lib/rouge/lexers/diff.rb +10 -4
  128. data/lib/rouge/lexers/digdag.rb +3 -1
  129. data/lib/rouge/lexers/docker.rb +12 -11
  130. data/lib/rouge/lexers/dot.rb +19 -18
  131. data/lib/rouge/lexers/ecl.rb +175 -0
  132. data/lib/rouge/lexers/eex.rb +52 -0
  133. data/lib/rouge/lexers/eiffel.rb +21 -20
  134. data/lib/rouge/lexers/elixir.rb +52 -36
  135. data/lib/rouge/lexers/elm.rb +30 -29
  136. data/lib/rouge/lexers/epp.rb +51 -0
  137. data/lib/rouge/lexers/erb.rb +5 -4
  138. data/lib/rouge/lexers/erlang.rb +1 -0
  139. data/lib/rouge/lexers/escape.rb +58 -0
  140. data/lib/rouge/lexers/factor.rb +41 -40
  141. data/lib/rouge/lexers/fortran.rb +34 -32
  142. data/lib/rouge/lexers/freefem.rb +240 -0
  143. data/lib/rouge/lexers/fsharp.rb +33 -31
  144. data/lib/rouge/lexers/gdscript.rb +171 -0
  145. data/lib/rouge/lexers/ghc_cmm.rb +340 -0
  146. data/lib/rouge/lexers/ghc_core.rb +151 -0
  147. data/lib/rouge/lexers/gherkin.rb +17 -14
  148. data/lib/rouge/lexers/gherkin/keywords.rb +2 -0
  149. data/lib/rouge/lexers/glsl.rb +2 -5
  150. data/lib/rouge/lexers/go.rb +3 -2
  151. data/lib/rouge/lexers/gradle.rb +1 -0
  152. data/lib/rouge/lexers/graphql.rb +78 -60
  153. data/lib/rouge/lexers/groovy.rb +24 -25
  154. data/lib/rouge/lexers/hack.rb +2 -1
  155. data/lib/rouge/lexers/haml.rb +26 -29
  156. data/lib/rouge/lexers/handlebars.rb +32 -20
  157. data/lib/rouge/lexers/haskell.rb +67 -65
  158. data/lib/rouge/lexers/haxe.rb +246 -0
  159. data/lib/rouge/lexers/hcl.rb +26 -25
  160. data/lib/rouge/lexers/hocon.rb +86 -0
  161. data/lib/rouge/lexers/hql.rb +139 -0
  162. data/lib/rouge/lexers/html.rb +33 -31
  163. data/lib/rouge/lexers/http.rb +10 -9
  164. data/lib/rouge/lexers/hylang.rb +15 -14
  165. data/lib/rouge/lexers/idlang.rb +34 -32
  166. data/lib/rouge/lexers/igorpro.rb +32 -31
  167. data/lib/rouge/lexers/ini.rb +13 -12
  168. data/lib/rouge/lexers/io.rb +10 -9
  169. data/lib/rouge/lexers/irb.rb +6 -5
  170. data/lib/rouge/lexers/isbl.rb +97 -0
  171. data/lib/rouge/lexers/isbl/builtins.rb +17 -0
  172. data/lib/rouge/lexers/java.rb +29 -25
  173. data/lib/rouge/lexers/javascript.rb +58 -61
  174. data/lib/rouge/lexers/jinja.rb +39 -22
  175. data/lib/rouge/lexers/jsl.rb +55 -0
  176. data/lib/rouge/lexers/json.rb +54 -11
  177. data/lib/rouge/lexers/json_doc.rb +8 -5
  178. data/lib/rouge/lexers/jsonnet.rb +19 -18
  179. data/lib/rouge/lexers/jsp.rb +120 -0
  180. data/lib/rouge/lexers/jsx.rb +18 -16
  181. data/lib/rouge/lexers/julia.rb +182 -58
  182. data/lib/rouge/lexers/kotlin.rb +78 -26
  183. data/lib/rouge/lexers/lasso.rb +54 -58
  184. data/lib/rouge/lexers/lasso/keywords.rb +14 -0
  185. data/lib/rouge/lexers/liquid.rb +116 -118
  186. data/lib/rouge/lexers/literate_coffeescript.rb +3 -2
  187. data/lib/rouge/lexers/literate_haskell.rb +6 -5
  188. data/lib/rouge/lexers/llvm.rb +66 -49
  189. data/lib/rouge/lexers/lua.rb +43 -4
  190. data/lib/rouge/lexers/lua/builtins.rb +2 -0
  191. data/lib/rouge/lexers/lustre.rb +79 -0
  192. data/lib/rouge/lexers/lutin.rb +33 -0
  193. data/lib/rouge/lexers/m68k.rb +143 -0
  194. data/lib/rouge/lexers/magik.rb +127 -0
  195. data/lib/rouge/lexers/make.rb +57 -34
  196. data/lib/rouge/lexers/markdown.rb +67 -39
  197. data/lib/rouge/lexers/mason.rb +110 -0
  198. data/lib/rouge/lexers/mathematica.rb +96 -0
  199. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  200. data/lib/rouge/lexers/matlab.rb +26 -17
  201. data/lib/rouge/lexers/matlab/builtins.rb +4 -4
  202. data/lib/rouge/lexers/minizinc.rb +87 -0
  203. data/lib/rouge/lexers/moonscript.rb +4 -3
  204. data/lib/rouge/lexers/mosel.rb +64 -63
  205. data/lib/rouge/lexers/msgtrans.rb +26 -0
  206. data/lib/rouge/lexers/mxml.rb +19 -18
  207. data/lib/rouge/lexers/nasm.rb +43 -169
  208. data/lib/rouge/lexers/nesasm.rb +78 -0
  209. data/lib/rouge/lexers/nginx.rb +15 -14
  210. data/lib/rouge/lexers/nim.rb +4 -2
  211. data/lib/rouge/lexers/nix.rb +44 -43
  212. data/lib/rouge/lexers/objective_c.rb +5 -178
  213. data/lib/rouge/lexers/objective_c/common.rb +184 -0
  214. data/lib/rouge/lexers/objective_cpp.rb +31 -0
  215. data/lib/rouge/lexers/ocaml.rb +29 -64
  216. data/lib/rouge/lexers/ocaml/common.rb +53 -0
  217. data/lib/rouge/lexers/openedge.rb +429 -0
  218. data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
  219. data/lib/rouge/lexers/pascal.rb +6 -5
  220. data/lib/rouge/lexers/perl.rb +102 -67
  221. data/lib/rouge/lexers/php.rb +91 -53
  222. data/lib/rouge/lexers/php/builtins.rb +183 -174
  223. data/lib/rouge/lexers/plain_text.rb +2 -1
  224. data/lib/rouge/lexers/plist.rb +16 -14
  225. data/lib/rouge/lexers/pony.rb +21 -20
  226. data/lib/rouge/lexers/powershell.rb +190 -638
  227. data/lib/rouge/lexers/praat.rb +76 -75
  228. data/lib/rouge/lexers/prolog.rb +27 -19
  229. data/lib/rouge/lexers/prometheus.rb +32 -30
  230. data/lib/rouge/lexers/properties.rb +13 -12
  231. data/lib/rouge/lexers/protobuf.rb +23 -22
  232. data/lib/rouge/lexers/puppet.rb +33 -32
  233. data/lib/rouge/lexers/python.rb +124 -99
  234. data/lib/rouge/lexers/q.rb +17 -14
  235. data/lib/rouge/lexers/qml.rb +13 -12
  236. data/lib/rouge/lexers/r.rb +13 -13
  237. data/lib/rouge/lexers/racket.rb +47 -22
  238. data/lib/rouge/lexers/reasonml.rb +65 -0
  239. data/lib/rouge/lexers/rego.rb +45 -0
  240. data/lib/rouge/lexers/robot_framework.rb +249 -0
  241. data/lib/rouge/lexers/ruby.rb +88 -71
  242. data/lib/rouge/lexers/rust.rb +45 -44
  243. data/lib/rouge/lexers/sas.rb +563 -0
  244. data/lib/rouge/lexers/sass.rb +9 -8
  245. data/lib/rouge/lexers/sass/common.rb +41 -40
  246. data/lib/rouge/lexers/scala.rb +67 -40
  247. data/lib/rouge/lexers/scheme.rb +19 -18
  248. data/lib/rouge/lexers/scss.rb +4 -3
  249. data/lib/rouge/lexers/sed.rb +31 -30
  250. data/lib/rouge/lexers/shell.rb +67 -55
  251. data/lib/rouge/lexers/sieve.rb +10 -9
  252. data/lib/rouge/lexers/slice.rb +32 -0
  253. data/lib/rouge/lexers/slim.rb +27 -26
  254. data/lib/rouge/lexers/smalltalk.rb +34 -33
  255. data/lib/rouge/lexers/smarty.rb +20 -19
  256. data/lib/rouge/lexers/sml.rb +68 -67
  257. data/lib/rouge/lexers/solidity.rb +185 -0
  258. data/lib/rouge/lexers/sparql.rb +129 -0
  259. data/lib/rouge/lexers/sqf.rb +109 -0
  260. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  261. data/lib/rouge/lexers/sql.rb +47 -26
  262. data/lib/rouge/lexers/supercollider.rb +116 -0
  263. data/lib/rouge/lexers/swift.rb +49 -44
  264. data/lib/rouge/lexers/tap.rb +22 -20
  265. data/lib/rouge/lexers/tcl.rb +28 -27
  266. data/lib/rouge/lexers/terraform.rb +37 -13
  267. data/lib/rouge/lexers/tex.rb +20 -19
  268. data/lib/rouge/lexers/toml.rb +59 -20
  269. data/lib/rouge/lexers/tsx.rb +1 -0
  270. data/lib/rouge/lexers/ttcn3.rb +119 -0
  271. data/lib/rouge/lexers/tulip.rb +38 -36
  272. data/lib/rouge/lexers/turtle.rb +36 -38
  273. data/lib/rouge/lexers/twig.rb +1 -0
  274. data/lib/rouge/lexers/typescript.rb +12 -0
  275. data/lib/rouge/lexers/typescript/common.rb +1 -0
  276. data/lib/rouge/lexers/vala.rb +19 -18
  277. data/lib/rouge/lexers/varnish.rb +168 -0
  278. data/lib/rouge/lexers/vb.rb +28 -27
  279. data/lib/rouge/lexers/verilog.rb +27 -28
  280. data/lib/rouge/lexers/vhdl.rb +12 -11
  281. data/lib/rouge/lexers/viml.rb +15 -14
  282. data/lib/rouge/lexers/viml/keywords.rb +2 -0
  283. data/lib/rouge/lexers/vue.rb +15 -10
  284. data/lib/rouge/lexers/wollok.rb +27 -26
  285. data/lib/rouge/lexers/xml.rb +18 -21
  286. data/lib/rouge/lexers/xojo.rb +61 -0
  287. data/lib/rouge/lexers/xpath.rb +332 -0
  288. data/lib/rouge/lexers/xquery.rb +145 -0
  289. data/lib/rouge/lexers/yaml.rb +64 -61
  290. data/lib/rouge/lexers/yang.rb +147 -0
  291. data/lib/rouge/plugins/redcarpet.rb +9 -2
  292. data/lib/rouge/regex_lexer.rb +27 -25
  293. data/lib/rouge/template_lexer.rb +1 -0
  294. data/lib/rouge/tex_theme_renderer.rb +132 -0
  295. data/lib/rouge/text_analyzer.rb +1 -0
  296. data/lib/rouge/theme.rb +5 -0
  297. data/lib/rouge/themes/base16.rb +1 -0
  298. data/lib/rouge/themes/bw.rb +41 -0
  299. data/lib/rouge/themes/colorful.rb +1 -0
  300. data/lib/rouge/themes/github.rb +1 -0
  301. data/lib/rouge/themes/gruvbox.rb +1 -0
  302. data/lib/rouge/themes/igor_pro.rb +1 -0
  303. data/lib/rouge/themes/magritte.rb +78 -0
  304. data/lib/rouge/themes/molokai.rb +1 -0
  305. data/lib/rouge/themes/monokai.rb +1 -0
  306. data/lib/rouge/themes/monokai_sublime.rb +4 -1
  307. data/lib/rouge/themes/pastie.rb +2 -1
  308. data/lib/rouge/themes/thankful_eyes.rb +2 -1
  309. data/lib/rouge/themes/tulip.rb +2 -1
  310. data/lib/rouge/token.rb +31 -22
  311. data/lib/rouge/util.rb +3 -2
  312. data/lib/rouge/version.rb +2 -1
  313. data/rouge.gemspec +6 -3
  314. metadata +130 -8
  315. data/lib/rouge/lexers/apache/keywords.yml +0 -764
  316. data/lib/rouge/lexers/lasso/keywords.yml +0 -446
@@ -0,0 +1,139 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ load_lexer 'sql.rb'
6
+
7
+ class HQL < SQL
8
+ title "HQL"
9
+ desc "Hive Query Language SQL dialect"
10
+ tag 'hql'
11
+ filenames '*.hql'
12
+
13
+ def self.keywords
14
+ # sources:
15
+ # https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
16
+ # https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
17
+ @keywords ||= Set.new(%w(
18
+ ADD ADMIN AFTER ANALYZE ARCHIVE ASC BEFORE BUCKET BUCKETS CASCADE
19
+ CHANGE CLUSTER CLUSTERED CLUSTERSTATUS COLLECTION COLUMNS COMMENT
20
+ COMPACT COMPACTIONS COMPUTE CONCATENATE CONTINUE DATA DATABASES
21
+ DATETIME DAY DBPROPERTIES DEFERRED DEFINED DELIMITED DEPENDENCY DESC
22
+ DIRECTORIES DIRECTORY DISABLE DISTRIBUTE ELEM_TYPE ENABLE ESCAPED
23
+ EXCLUSIVE EXPLAIN EXPORT FIELDS FILE FILEFORMAT FIRST FORMAT FORMATTED
24
+ FUNCTIONS HOLD_DDLTIME HOUR IDXPROPERTIES IGNORE INDEX INDEXES INPATH
25
+ INPUTDRIVER INPUTFORMAT ITEMS JAR KEYS KEY_TYPE LIMIT LINES LOAD
26
+ LOCATION LOCK LOCKS LOGICAL LONG MAPJOIN MATERIALIZED METADATA MINUS
27
+ MINUTE MONTH MSCK NOSCAN NO_DROP OFFLINE OPTION OUTPUTDRIVER
28
+ OUTPUTFORMAT OVERWRITE OWNER PARTITIONED PARTITIONS PLUS PRETTY
29
+ PRINCIPALS PROTECTION PURGE READ READONLY REBUILD RECORDREADER
30
+ RECORDWRITER REGEXP RELOAD RENAME REPAIR REPLACE REPLICATION RESTRICT
31
+ REWRITE RLIKE ROLE ROLES SCHEMA SCHEMAS SECOND SEMI SERDE
32
+ SERDEPROPERTIES SERVER SETS SHARED SHOW SHOW_DATABASE SKEWED SORT
33
+ SORTED SSL STATISTICS STORED STREAMTABLE STRING STRUCT TABLES
34
+ TBLPROPERTIES TEMPORARY TERMINATED TINYINT TOUCH TRANSACTIONS UNARCHIVE
35
+ UNDO UNIONTYPE UNLOCK UNSET UNSIGNED URI USE UTC UTCTIMESTAMP
36
+ VALUE_TYPE VIEW WHILE YEAR IF
37
+
38
+ ALL ALTER AND ARRAY AS AUTHORIZATION BETWEEN BIGINT BINARY BOOLEAN
39
+ BOTH BY CASE CAST CHAR COLUMN CONF CREATE CROSS CUBE CURRENT
40
+ CURRENT_DATE CURRENT_TIMESTAMP CURSOR DATABASE DATE DECIMAL DELETE
41
+ DESCRIBE DISTINCT DOUBLE DROP ELSE END EXCHANGE EXISTS EXTENDED
42
+ EXTERNAL FALSE FETCH FLOAT FOLLOWING FOR FROM FULL FUNCTION GRANT
43
+ GROUP GROUPING HAVING IF IMPORT IN INNER INSERT INT INTERSECT
44
+ INTERVAL INTO IS JOIN LATERAL LEFT LESS LIKE LOCAL MACRO MAP MORE
45
+ NONE NOT NULL OF ON OR ORDER OUT OUTER OVER PARTIALSCAN PARTITION
46
+ PERCENT PRECEDING PRESERVE PROCEDURE RANGE READS REDUCE REVOKE RIGHT
47
+ ROLLUP ROW ROWS SELECT SET SMALLINT TABLE TABLESAMPLE THEN TIMESTAMP
48
+ TO TRANSFORM TRIGGER TRUE TRUNCATE UNBOUNDED UNION UNIQUEJOIN UPDATE
49
+ USER USING UTC_TMESTAMP VALUES VARCHAR WHEN WHERE WINDOW WITH
50
+
51
+ AUTOCOMMIT ISOLATION LEVEL OFFSET SNAPSHOT TRANSACTION WORK WRITE
52
+
53
+ COMMIT ONLY REGEXP RLIKE ROLLBACK START
54
+
55
+ ABORT KEY LAST NORELY NOVALIDATE NULLS RELY VALIDATE
56
+
57
+ CACHE CONSTRAINT FOREIGN PRIMARY REFERENCES
58
+
59
+ DETAIL DOW EXPRESSION OPERATOR QUARTER SUMMARY VECTORIZATION WEEK YEARS MONTHS WEEKS DAYS HOURS MINUTES SECONDS
60
+
61
+ DAYOFWEEK EXTRACT FLOOR INTEGER PRECISION VIEWS
62
+
63
+ TIMESTAMPTZ ZONE
64
+
65
+ TIME NUMERIC
66
+
67
+ NAMED_STRUCT CREATE_UNION
68
+
69
+ ROUND BROUND FLOOR CEIL CEILING RAND EXP LN LOG10 LOG2 LOG POW POWER SQRT BIN
70
+ HEX UNHEX CONV ABS PMOD SIN ASIN COS ACOS TAN ATAN DEGREES RADIANS POSITIVE
71
+ NEGATIVE SIGN E PI FACTORIAL CBRT SHIFTLEFT SHIFTRIGHT SHIFTRIGHTUNSIGNED
72
+ GREATEST LEAST WIDTH_BUCKET SIZE SIZE MAP_KEYS MAP_VALUES ARRAY_CONTAINS
73
+ SORT_ARRAY BINARY CAST FROM_UNIXTIME UNIX_TIMESTAMP UNIX_TIMESTAMP
74
+ UNIX_TIMESTAMP TO_DATE YEAR QUARTER MONTH DAY DAYOFMONTH HOUR MINUTE SECOND
75
+ WEEKOFYEAR EXTRACT DATEDIFF DATE_ADD DATE_SUB FROM_UTC_TIMESTAMP
76
+ TO_UTC_TIMESTAMP CURRENT_DATE CURRENT_TIMESTAMP ADD_MONTHS LAST_DAY NEXT_DAY
77
+ TRUNC MONTHS_BETWEEN DATE_FORMAT IF ISNULL ISNOTNULL NVL COALESCE CASE WHEN
78
+ then else end NULLIF ASSERT_TRUE ASCII BASE64 CHARACTER_LENGTH CHR CONCAT
79
+ CONTEXT_NGRAMS CONCAT_WS CONCAT_WS DECODE ELT ENCODE FIELD FIND_IN_SET
80
+ FORMAT_NUMBER GET_JSON_OBJECT IN_FILE INSTR LENGTH LOCATE LOWER LCASE LPAD LTRIM
81
+ NGRAMS OCTET_LENGTH PARSE_URL PRINTF REGEXP_EXTRACT REGEXP_REPLACE REPEAT
82
+ REPLACE REVERSE RPAD RTRIM SENTENCES SPACE SPLIT STR_TO_MAP SUBSTR SUBSTRING
83
+ SUBSTRING_INDEX TRANSLATE TRIM UNBASE64 UPPER UCASE INITCAP LEVENSHTEIN SOUNDEX
84
+ MASK MASK_FIRST_N MASK_LAST_N MASK_SHOW_FIRST_N MASK_SHOW_LAST_N MASK_HASH
85
+ JAVA_METHOD REFLECT HASH CURRENT_USER LOGGED_IN_USER CURRENT_DATABASE MD5 SHA1
86
+ SHA CRC32 SHA2 AES_ENCRYPT AES_DECRYPT VERSION COUNT SUM AVG MIN MAX VARIANCE
87
+ VAR_POP VAR_SAMP STDDEV_POP STDDEV_SAMP COVAR_POP COVAR_SAMP CORR PERCENTILE
88
+ PERCENTILE_APPROX PERCENTILE_APPROX REGR_AVGX REGR_AVGY REGR_COUNT
89
+ REGR_INTERCEPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY HISTOGRAM_NUMERIC
90
+ COLLECT_SET COLLECT_LIST NTILE EXPLODE EXPLODE POSEXPLODE INLINE STACK
91
+
92
+ JSON_TUPLE PARSE_URL_TUPLE
93
+
94
+ XPATH XPATH_SHORT XPATH_INT XPATH_LONG XPATH_FLOAT XPATH_DOUBLE
95
+ XPATH_NUMBER XPATH_STRING GET_JSON_OBJECT JSON_TUPLE
96
+
97
+ PARSE_URL_TUPLE
98
+ ))
99
+ end
100
+
101
+ def self.keywords_type
102
+ # source: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types
103
+ @keywords_type ||= Set.new(%w(
104
+ TINYINT SMALLINT INT INTEGER BIGINT FLOAT DOUBLE PRECISION DECIMAL NUMERIC
105
+ TIMESTAMP DATE INTERVAL
106
+ STRING VARCHAR CHAR
107
+ BOOLEAN BINARY
108
+ ARRAY MAP STRUCT UNIONTYPE
109
+ ))
110
+ end
111
+
112
+ prepend :root do
113
+ # a double-quoted string is a string literal in Hive QL.
114
+ rule %r/"/, Str::Double, :double_string
115
+
116
+ # interpolation of variables through ${...}
117
+ rule %r/\$\{/, Name::Variable, :hive_variable
118
+ end
119
+
120
+ prepend :single_string do
121
+ rule %r/\$\{/, Name::Variable, :hive_variable
122
+ rule %r/[^\\'\$]+/, Str::Single
123
+ end
124
+
125
+ prepend :double_string do
126
+ rule %r/\$\{/, Name::Variable, :hive_variable
127
+ # double-quoted strings are string literals so need to change token
128
+ rule %r/"/, Str::Double, :pop!
129
+ rule %r/[^\\"\$]+/, Str::Double
130
+ end
131
+
132
+ state :hive_variable do
133
+ rule %r/\}/, Name::Variable, :pop!
134
+ rule %r/[^\}]+/, Name::Variable
135
+ end
136
+
137
+ end
138
+ end
139
+ end
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -11,6 +12,7 @@ module Rouge
11
12
 
12
13
  def self.detect?(text)
13
14
  return true if text.doctype?(/\bhtml\b/i)
15
+ return false if text =~ /\A<\?xml\b/
14
16
  return true if text =~ /<\s*html\b/
15
17
  end
16
18
 
@@ -20,21 +22,21 @@ module Rouge
20
22
  end
21
23
 
22
24
  state :root do
23
- rule /[^<&]+/m, Text
24
- rule /&\S*?;/, Name::Entity
25
- rule /<!DOCTYPE .*?>/im, Comment::Preproc
26
- rule /<!\[CDATA\[.*?\]\]>/m, Comment::Preproc
27
- rule /<!--/, Comment, :comment
28
- rule /<\?.*?\?>/m, Comment::Preproc # php? really?
29
-
30
- rule /<\s*script\s*/m do
25
+ rule %r/[^<&]+/m, Text
26
+ rule %r/&\S*?;/, Name::Entity
27
+ rule %r/<!DOCTYPE .*?>/im, Comment::Preproc
28
+ rule %r/<!\[CDATA\[.*?\]\]>/m, Comment::Preproc
29
+ rule %r/<!--/, Comment, :comment
30
+ rule %r/<\?.*?\?>/m, Comment::Preproc # php? really?
31
+
32
+ rule %r/<\s*script\s*/m do
31
33
  token Name::Tag
32
34
  @javascript.reset!
33
35
  push :script_content
34
36
  push :tag
35
37
  end
36
38
 
37
- rule /<\s*style\s*/m do
39
+ rule %r/<\s*style\s*/m do
38
40
  token Name::Tag
39
41
  @css.reset!
40
42
  @lang = @css
@@ -42,8 +44,8 @@ module Rouge
42
44
  push :tag
43
45
  end
44
46
 
45
- rule /<\//, Name::Tag, :tag_end
46
- rule /</, Name::Tag, :tag_start
47
+ rule %r(</), Name::Tag, :tag_end
48
+ rule %r/</, Name::Tag, :tag_start
47
49
 
48
50
  rule %r(<\s*[a-zA-Z0-9:-]+), Name::Tag, :tag # opening tags
49
51
  rule %r(<\s*/\s*[a-zA-Z0-9:-]+\s*>), Name::Tag # closing tags
@@ -51,21 +53,21 @@ module Rouge
51
53
 
52
54
  state :tag_end do
53
55
  mixin :tag_end_end
54
- rule /[a-zA-Z0-9:-]+/ do
56
+ rule %r/[a-zA-Z0-9:-]+/ do
55
57
  token Name::Tag
56
58
  goto :tag_end_end
57
59
  end
58
60
  end
59
61
 
60
62
  state :tag_end_end do
61
- rule /\s+/, Text
62
- rule />/, Name::Tag, :pop!
63
+ rule %r/\s+/, Text
64
+ rule %r/>/, Name::Tag, :pop!
63
65
  end
64
66
 
65
67
  state :tag_start do
66
- rule /\s+/, Text
68
+ rule %r/\s+/, Text
67
69
 
68
- rule /[a-zA-Z0-9:-]+/ do
70
+ rule %r/[a-zA-Z0-9:-]+/ do
69
71
  token Name::Tag
70
72
  goto :tag
71
73
  end
@@ -74,41 +76,41 @@ module Rouge
74
76
  end
75
77
 
76
78
  state :comment do
77
- rule /[^-]+/, Comment
78
- rule /-->/, Comment, :pop!
79
- rule /-/, Comment
79
+ rule %r/[^-]+/, Comment
80
+ rule %r/-->/, Comment, :pop!
81
+ rule %r/-/, Comment
80
82
  end
81
83
 
82
84
  state :tag do
83
- rule /\s+/m, Text
84
- rule /[a-zA-Z0-9_:-]+\s*=\s*/m, Name::Attribute, :attr
85
- rule /[a-zA-Z0-9_:-]+/, Name::Attribute
85
+ rule %r/\s+/m, Text
86
+ rule %r/[a-zA-Z0-9_:\[\]()*.-]+\s*=\s*/m, Name::Attribute, :attr
87
+ rule %r/[a-zA-Z0-9_:#*-]+/, Name::Attribute
86
88
  rule %r(/?\s*>)m, Name::Tag, :pop!
87
89
  end
88
90
 
89
91
  state :attr do
90
92
  # TODO: are backslash escapes valid here?
91
- rule /"/ do
93
+ rule %r/"/ do
92
94
  token Str
93
95
  goto :dq
94
96
  end
95
97
 
96
- rule /'/ do
98
+ rule %r/'/ do
97
99
  token Str
98
100
  goto :sq
99
101
  end
100
102
 
101
- rule /[^\s>]+/, Str, :pop!
103
+ rule %r/[^\s>]+/, Str, :pop!
102
104
  end
103
105
 
104
106
  state :dq do
105
- rule /"/, Str, :pop!
106
- rule /[^"]+/, Str
107
+ rule %r/"/, Str, :pop!
108
+ rule %r/[^"]+/, Str
107
109
  end
108
110
 
109
111
  state :sq do
110
- rule /'/, Str, :pop!
111
- rule /[^']+/, Str
112
+ rule %r/'/, Str, :pop!
113
+ rule %r/[^']+/, Str
112
114
  end
113
115
 
114
116
  state :script_content do
@@ -124,13 +126,13 @@ module Rouge
124
126
  end
125
127
 
126
128
  state :style_content do
127
- rule /[^<]+/ do
129
+ rule %r/[^<]+/ do
128
130
  delegate @lang
129
131
  end
130
132
 
131
133
  rule %r(<\s*/\s*style\s*>)m, Name::Tag, :pop!
132
134
 
133
- rule /</ do
135
+ rule %r/</ do
134
136
  delegate @lang
135
137
  end
136
138
  end
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -25,8 +26,8 @@ module Rouge
25
26
  # request
26
27
  rule %r(
27
28
  (#{HTTP.http_methods.join('|')})([ ]+) # method
28
- ([^ ]+)([ ]+) # path
29
- (HTTPS?)(/)(1[.][01])(\r?\n|$) # http version
29
+ ([^ ]+)([ ]+) # path
30
+ (HTTPS?)(/)(\d(?:\.\d)?)(\r?\n|$) # http version
30
31
  )ox do
31
32
  groups(
32
33
  Name::Function, Text,
@@ -39,9 +40,9 @@ module Rouge
39
40
 
40
41
  # response
41
42
  rule %r(
42
- (HTTPS?)(/)(1[.][01])([ ]+) # http version
43
- (\d{3})([ ]+) # status
44
- ([^\r\n]+)(\r?\n|$) # status message
43
+ (HTTPS?)(/)(\d(?:\.\d))([ ]+) # http version
44
+ (\d{3})([ ]+)? # status
45
+ ([^\r\n]*)?(\r?\n|$) # status message
45
46
  )x do
46
47
  groups(
47
48
  Keyword, Operator, Num, Text,
@@ -53,7 +54,7 @@ module Rouge
53
54
  end
54
55
 
55
56
  state :headers do
56
- rule /([^\s:]+)( *)(:)( *)([^\r\n]+)(\r?\n|$)/ do |m|
57
+ rule %r/([^\s:]+)( *)(:)( *)([^\r\n]+)(\r?\n|$)/ do |m|
57
58
  key = m[1]
58
59
  value = m[5]
59
60
  if key.strip.casecmp('content-type').zero?
@@ -63,15 +64,15 @@ module Rouge
63
64
  groups Name::Attribute, Text, Punctuation, Text, Str, Text
64
65
  end
65
66
 
66
- rule /([^\r\n]+)(\r?\n|$)/ do
67
+ rule %r/([^\r\n]+)(\r?\n|$)/ do
67
68
  groups Str, Text
68
69
  end
69
70
 
70
- rule /\r?\n/, Text, :content
71
+ rule %r/\r?\n/, Text, :content
71
72
  end
72
73
 
73
74
  state :content do
74
- rule /.+/m do |m|
75
+ rule %r/.+/m do
75
76
  delegate(content_lexer)
76
77
  end
77
78
  end
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -53,22 +54,22 @@ module Rouge
53
54
  end
54
55
 
55
56
  state :root do
56
- rule /;.*?$/, Comment::Single
57
- rule /\s+/m, Text::Whitespace
57
+ rule %r/;.*?$/, Comment::Single
58
+ rule %r/\s+/m, Text::Whitespace
58
59
 
59
- rule /-?\d+\.\d+/, Num::Float
60
- rule /-?\d+/, Num::Integer
61
- rule /0x-?[0-9a-fA-F]+/, Num::Hex
60
+ rule %r/-?\d+\.\d+/, Num::Float
61
+ rule %r/-?\d+/, Num::Integer
62
+ rule %r/0x-?[0-9a-fA-F]+/, Num::Hex
62
63
 
63
- rule /"(\\.|[^"])*"/, Str
64
- rule /'#{keyword}/, Str::Symbol
65
- rule /::?#{keyword}/, Name::Constant
66
- rule /\\(.|[a-z]+)/i, Str::Char
64
+ rule %r/"(\\.|[^"])*"/, Str
65
+ rule %r/'#{keyword}/, Str::Symbol
66
+ rule %r/::?#{keyword}/, Name::Constant
67
+ rule %r/\\(.|[a-z]+)/i, Str::Char
67
68
 
68
69
 
69
- rule /~@|[`\'#^~&@]/, Operator
70
+ rule %r/~@|[`\'#^~&@]/, Operator
70
71
 
71
- rule /(\()(\s*)(#{identifier})/m do |m|
72
+ rule %r/(\()(\s*)(#{identifier})/m do |m|
72
73
  token Punctuation, m[1]
73
74
  token Text::Whitespace, m[2]
74
75
  token(name_token(m[3]) || Name::Function, m[3])
@@ -79,13 +80,13 @@ module Rouge
79
80
  end
80
81
 
81
82
  # vectors
82
- rule /[\[\]]/, Punctuation
83
+ rule %r/[\[\]]/, Punctuation
83
84
 
84
85
  # maps
85
- rule /[{}]/, Punctuation
86
+ rule %r/[{}]/, Punctuation
86
87
 
87
88
  # parentheses
88
- rule /[()]/, Punctuation
89
+ rule %r/[()]/, Punctuation
89
90
  end
90
91
  end
91
92
  end
@@ -1,4 +1,6 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
2
4
  # vim: set ts=2 sw=2 et:
3
5
 
4
6
  module Rouge
@@ -207,17 +209,17 @@ module Rouge
207
209
  end
208
210
 
209
211
  state :root do
210
- rule /[\s\n]+/, Text::Whitespace
212
+ rule %r/\s+/, Text::Whitespace
211
213
  # Normal comments
212
- rule /;.*$/, Comment::Single
213
- rule /\,\s*\,/, Error
214
- rule /\!#{name}/, Name::Variable::Global
214
+ rule %r/;.*$/, Comment::Single
215
+ rule %r/\,\s*\,/, Error
216
+ rule %r/\!#{name}/, Name::Variable::Global
215
217
 
216
- rule /[(),:\&\$]/, Punctuation
218
+ rule %r/[(),:\&\$]/, Punctuation
217
219
 
218
220
  ## Format statements are quite a strange beast.
219
221
  ## Better process them in their own state.
220
- #rule /\b(FORMAT)(\s*)(\()/mi do |m|
222
+ #rule %r/\b(FORMAT)(\s*)(\()/mi do |m|
221
223
  # token Keyword, m[1]
222
224
  # token Text::Whitespace, m[2]
223
225
  # token Punctuation, m[3]
@@ -233,25 +235,25 @@ module Rouge
233
235
  (_#{kind_param})? # kind parameter
234
236
  )xi, Num::Float
235
237
 
236
- rule /\d+(B|S|U|US|LL|L|ULL|UL)?/i, Num::Integer
237
- rule /"[0-7]+(B|O|U|ULL|UL|LL|L)?/i, Num::Oct
238
- rule /'[0-9A-F]+'X(B|S|US|ULL|UL|U|LL|L)?/i, Num::Hex
239
- rule /(#{kind_param}_)?'/, Str::Single, :string_single
240
- rule /(#{kind_param}_)?"/, Str::Double, :string_double
238
+ rule %r/\d+(B|S|U|US|LL|L|ULL|UL)?/i, Num::Integer
239
+ rule %r/"[0-7]+(B|O|U|ULL|UL|LL|L)?/i, Num::Oct
240
+ rule %r/'[0-9A-F]+'X(B|S|US|ULL|UL|U|LL|L)?/i, Num::Hex
241
+ rule %r/(#{kind_param}_)?'/, Str::Single, :string_single
242
+ rule %r/(#{kind_param}_)?"/, Str::Double, :string_double
241
243
 
242
244
  rule %r{\#\#|\#|\&\&|\|\||/=|<=|>=|->|\@|\?|[-+*/<=~^{}]}, Operator
243
245
  # Structures and the like
244
- rule /(#{name})(\.)([^\s,]*)/i do |m|
246
+ rule %r/(#{name})(\.)([^\s,]*)/i do
245
247
  groups Name, Operator, Name
246
248
  #delegate IDLang, m[3]
247
249
  end
248
250
 
249
- rule /(function|pro)((?:\s|\$\s)+)/i do
251
+ rule %r/(function|pro)((?:\s|\$\s)+)/i do
250
252
  groups Keyword, Text::Whitespace
251
253
  push :funcname
252
254
  end
253
255
 
254
- rule /#{name}/m do |m|
256
+ rule %r/#{name}/m do |m|
255
257
  match = m[0].upcase
256
258
  if self.class.keywords.include? match
257
259
  token Keyword
@@ -273,37 +275,37 @@ module Rouge
273
275
  end
274
276
 
275
277
  state :funcname do
276
- rule /#{name}/, Name::Function
278
+ rule %r/#{name}/, Name::Function
277
279
 
278
- rule /\s+/, Text::Whitespace
279
- rule /(:+|\$)/, Operator
280
- rule /;.*/, Comment::Single
280
+ rule %r/\s+/, Text::Whitespace
281
+ rule %r/(:+|\$)/, Operator
282
+ rule %r/;.*/, Comment::Single
281
283
 
282
284
  # Be done with this state if we hit EOL or comma
283
- rule /$/, Text::Whitespace, :pop!
284
- rule /,/, Operator, :pop!
285
+ rule %r/$/, Text::Whitespace, :pop!
286
+ rule %r/,/, Operator, :pop!
285
287
  end
286
288
 
287
289
  state :string_single do
288
- rule /[^']+/, Str::Single
289
- rule /''/, Str::Escape
290
- rule /'/, Str::Single, :pop!
290
+ rule %r/[^']+/, Str::Single
291
+ rule %r/''/, Str::Escape
292
+ rule %r/'/, Str::Single, :pop!
291
293
  end
292
294
 
293
295
  state :string_double do
294
- rule /[^"]+/, Str::Double
295
- rule /"/, Str::Double, :pop!
296
+ rule %r/[^"]+/, Str::Double
297
+ rule %r/"/, Str::Double, :pop!
296
298
  end
297
299
 
298
300
  state :format_spec do
299
- rule /'/, Str::Single, :string_single
300
- rule /"/, Str::Double, :string_double
301
- rule /\(/, Punctuation, :format_spec
302
- rule /\)/, Punctuation, :pop!
303
- rule /,/, Punctuation
304
- rule /[\s\n]+/, Text::Whitespace
301
+ rule %r/'/, Str::Single, :string_single
302
+ rule %r/"/, Str::Double, :string_double
303
+ rule %r/\(/, Punctuation, :format_spec
304
+ rule %r/\)/, Punctuation, :pop!
305
+ rule %r/,/, Punctuation
306
+ rule %r/\s+/, Text::Whitespace
305
307
  # Edit descriptors could be seen as a kind of "format literal".
306
- rule /[^\s'"(),]+/, Literal
308
+ rule %r/[^\s'"(),]+/, Literal
307
309
  end
308
310
  end
309
311
  end