rouge 3.21.0 → 4.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -11
  3. data/lib/rouge/cli.rb +55 -22
  4. data/lib/rouge/demos/brainfuck +1 -1
  5. data/lib/rouge/demos/brightscript +1 -1
  6. data/lib/rouge/demos/bsl +1 -1
  7. data/lib/rouge/demos/cfscript +1 -1
  8. data/lib/rouge/demos/cisco_ios +19 -0
  9. data/lib/rouge/demos/coq +4 -1
  10. data/lib/rouge/demos/csvs +1 -1
  11. data/lib/rouge/demos/dafny +16 -0
  12. data/lib/rouge/demos/datastudio +0 -1
  13. data/lib/rouge/demos/ecl +0 -1
  14. data/lib/rouge/demos/email +11 -0
  15. data/lib/rouge/demos/erlang +1 -1
  16. data/lib/rouge/demos/fluent +13 -0
  17. data/lib/rouge/demos/fsharp +1 -1
  18. data/lib/rouge/demos/glsl +1 -1
  19. data/lib/rouge/demos/haxe +0 -1
  20. data/lib/rouge/demos/idris +13 -0
  21. data/lib/rouge/demos/isabelle +16 -0
  22. data/lib/rouge/demos/j +12 -0
  23. data/lib/rouge/demos/lean +8 -0
  24. data/lib/rouge/demos/meson +10 -0
  25. data/lib/rouge/demos/nesasm +1 -1
  26. data/lib/rouge/demos/nial +35 -0
  27. data/lib/rouge/demos/ocl +4 -0
  28. data/lib/rouge/demos/opentype_feature_file +0 -1
  29. data/lib/rouge/demos/plsql +2 -0
  30. data/lib/rouge/demos/postscript +9 -0
  31. data/lib/rouge/demos/rescript +26 -0
  32. data/lib/rouge/demos/rml +33 -0
  33. data/lib/rouge/demos/smarty +0 -1
  34. data/lib/rouge/demos/stan +13 -0
  35. data/lib/rouge/demos/stata +14 -0
  36. data/lib/rouge/demos/systemd +4 -0
  37. data/lib/rouge/demos/syzlang +15 -0
  38. data/lib/rouge/demos/syzprog +8 -0
  39. data/lib/rouge/formatter.rb +2 -2
  40. data/lib/rouge/formatters/html.rb +12 -11
  41. data/lib/rouge/formatters/html_inline.rb +0 -1
  42. data/lib/rouge/formatters/html_line_highlighter.rb +24 -0
  43. data/lib/rouge/formatters/html_line_table.rb +1 -3
  44. data/lib/rouge/formatters/html_linewise.rb +2 -3
  45. data/lib/rouge/guessers/disambiguation.rb +15 -0
  46. data/lib/rouge/lexer.rb +40 -22
  47. data/lib/rouge/lexers/apache/keywords.rb +1 -1
  48. data/lib/rouge/lexers/apex.rb +9 -7
  49. data/lib/rouge/lexers/apple_script.rb +1 -1
  50. data/lib/rouge/lexers/batchfile.rb +2 -1
  51. data/lib/rouge/lexers/c.rb +12 -2
  52. data/lib/rouge/lexers/ceylon.rb +2 -2
  53. data/lib/rouge/lexers/cisco_ios.rb +83 -0
  54. data/lib/rouge/lexers/cmake.rb +10 -0
  55. data/lib/rouge/lexers/console.rb +1 -1
  56. data/lib/rouge/lexers/coq.rb +132 -68
  57. data/lib/rouge/lexers/cpp.rb +13 -6
  58. data/lib/rouge/lexers/crystal.rb +14 -9
  59. data/lib/rouge/lexers/csharp.rb +13 -12
  60. data/lib/rouge/lexers/cypher.rb +8 -0
  61. data/lib/rouge/lexers/dafny.rb +128 -0
  62. data/lib/rouge/lexers/dart.rb +10 -9
  63. data/lib/rouge/lexers/diff.rb +14 -4
  64. data/lib/rouge/lexers/docker.rb +5 -1
  65. data/lib/rouge/lexers/dot.rb +1 -0
  66. data/lib/rouge/lexers/eex.rb +2 -2
  67. data/lib/rouge/lexers/eiffel.rb +0 -1
  68. data/lib/rouge/lexers/elm.rb +5 -5
  69. data/lib/rouge/lexers/email.rb +39 -0
  70. data/lib/rouge/lexers/factor.rb +2 -2
  71. data/lib/rouge/lexers/fluent.rb +74 -0
  72. data/lib/rouge/lexers/ghc_cmm.rb +1 -1
  73. data/lib/rouge/lexers/ghc_core.rb +3 -2
  74. data/lib/rouge/lexers/gherkin/keywords.rb +5 -5
  75. data/lib/rouge/lexers/graphql.rb +1 -1
  76. data/lib/rouge/lexers/groovy.rb +1 -1
  77. data/lib/rouge/lexers/hack.rb +1 -1
  78. data/lib/rouge/lexers/handlebars.rb +1 -1
  79. data/lib/rouge/lexers/haxe.rb +30 -11
  80. data/lib/rouge/lexers/hcl.rb +4 -2
  81. data/lib/rouge/lexers/http.rb +10 -4
  82. data/lib/rouge/lexers/hylang.rb +0 -1
  83. data/lib/rouge/lexers/idris.rb +210 -0
  84. data/lib/rouge/lexers/irb.rb +7 -1
  85. data/lib/rouge/lexers/isabelle.rb +251 -0
  86. data/lib/rouge/lexers/isbl.rb +2 -2
  87. data/lib/rouge/lexers/j.rb +244 -0
  88. data/lib/rouge/lexers/janet.rb +9 -8
  89. data/lib/rouge/lexers/java.rb +1 -0
  90. data/lib/rouge/lexers/javascript.rb +39 -3
  91. data/lib/rouge/lexers/jinja.rb +10 -10
  92. data/lib/rouge/lexers/jsl.rb +25 -14
  93. data/lib/rouge/lexers/jsonnet.rb +4 -3
  94. data/lib/rouge/lexers/jsp.rb +2 -3
  95. data/lib/rouge/lexers/jsx.rb +1 -2
  96. data/lib/rouge/lexers/kotlin.rb +11 -5
  97. data/lib/rouge/lexers/lasso/keywords.rb +1 -1
  98. data/lib/rouge/lexers/lean.rb +164 -0
  99. data/lib/rouge/lexers/liquid.rb +164 -164
  100. data/lib/rouge/lexers/llvm/keywords.rb +3 -3
  101. data/lib/rouge/lexers/lua/keywords.rb +1 -1
  102. data/lib/rouge/lexers/make.rb +25 -16
  103. data/lib/rouge/lexers/mathematica/keywords.rb +1 -1
  104. data/lib/rouge/lexers/matlab/keywords.rb +1 -1
  105. data/lib/rouge/lexers/matlab.rb +3 -2
  106. data/lib/rouge/lexers/meson.rb +159 -0
  107. data/lib/rouge/lexers/mosel.rb +0 -4
  108. data/lib/rouge/lexers/nial.rb +166 -0
  109. data/lib/rouge/lexers/ocaml/common.rb +1 -1
  110. data/lib/rouge/lexers/ocl.rb +84 -0
  111. data/lib/rouge/lexers/openedge.rb +581 -376
  112. data/lib/rouge/lexers/opentype_feature_file.rb +0 -1
  113. data/lib/rouge/lexers/pascal.rb +2 -1
  114. data/lib/rouge/lexers/perl.rb +6 -4
  115. data/lib/rouge/lexers/php/keywords.rb +1 -1
  116. data/lib/rouge/lexers/php.rb +278 -128
  117. data/lib/rouge/lexers/plsql.rb +578 -0
  118. data/lib/rouge/lexers/postscript.rb +93 -0
  119. data/lib/rouge/lexers/powershell.rb +44 -28
  120. data/lib/rouge/lexers/praat.rb +200 -113
  121. data/lib/rouge/lexers/prometheus.rb +0 -1
  122. data/lib/rouge/lexers/python.rb +28 -9
  123. data/lib/rouge/lexers/q.rb +1 -2
  124. data/lib/rouge/lexers/reasonml.rb +6 -5
  125. data/lib/rouge/lexers/rescript.rb +119 -0
  126. data/lib/rouge/lexers/rml.rb +142 -0
  127. data/lib/rouge/lexers/ruby.rb +3 -2
  128. data/lib/rouge/lexers/rust.rb +91 -24
  129. data/lib/rouge/lexers/shell.rb +6 -2
  130. data/lib/rouge/lexers/smarty.rb +1 -1
  131. data/lib/rouge/lexers/sparql.rb +5 -4
  132. data/lib/rouge/lexers/sqf/keywords.rb +1 -1
  133. data/lib/rouge/lexers/sql.rb +7 -7
  134. data/lib/rouge/lexers/stan.rb +451 -0
  135. data/lib/rouge/lexers/stata.rb +165 -0
  136. data/lib/rouge/lexers/supercollider.rb +0 -1
  137. data/lib/rouge/lexers/swift.rb +32 -16
  138. data/lib/rouge/lexers/systemd.rb +34 -0
  139. data/lib/rouge/lexers/syzlang.rb +317 -0
  140. data/lib/rouge/lexers/syzprog.rb +122 -0
  141. data/lib/rouge/lexers/tap.rb +0 -1
  142. data/lib/rouge/lexers/terraform.rb +0 -8
  143. data/lib/rouge/lexers/toml.rb +20 -13
  144. data/lib/rouge/lexers/tsx.rb +7 -1
  145. data/lib/rouge/lexers/tulip.rb +0 -1
  146. data/lib/rouge/lexers/twig.rb +9 -9
  147. data/lib/rouge/lexers/typescript/common.rb +4 -1
  148. data/lib/rouge/lexers/typescript.rb +2 -2
  149. data/lib/rouge/lexers/vala.rb +1 -1
  150. data/lib/rouge/lexers/velocity.rb +1 -1
  151. data/lib/rouge/lexers/viml/keywords.rb +1 -1
  152. data/lib/rouge/lexers/wollok.rb +6 -3
  153. data/lib/rouge/lexers/xquery.rb +1 -1
  154. data/lib/rouge/lexers/yaml.rb +2 -4
  155. data/lib/rouge/regex_lexer.rb +56 -1
  156. data/lib/rouge/themes/base16.rb +1 -0
  157. data/lib/rouge/themes/bw.rb +1 -0
  158. data/lib/rouge/themes/colorful.rb +1 -0
  159. data/lib/rouge/themes/github.rb +137 -61
  160. data/lib/rouge/themes/gruvbox.rb +2 -0
  161. data/lib/rouge/themes/igor_pro.rb +1 -0
  162. data/lib/rouge/themes/magritte.rb +1 -0
  163. data/lib/rouge/themes/monokai.rb +1 -0
  164. data/lib/rouge/themes/pastie.rb +1 -0
  165. data/lib/rouge/themes/thankful_eyes.rb +1 -0
  166. data/lib/rouge/themes/tulip.rb +1 -0
  167. data/lib/rouge/version.rb +1 -1
  168. data/lib/rouge.rb +4 -5
  169. data/rouge.gemspec +1 -1
  170. metadata +48 -9
  171. data/lib/rouge/demos/solidity +0 -13
  172. data/lib/rouge/lexers/solidity.rb +0 -185
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8ef1072cc2523dba637a191d195865b0b2fb9f38c4f6d9961fb58748306f6cd1
4
- data.tar.gz: 4cd1b0d5262fa8a1d4ddb564cf4e9a185d6e8043bee0261f119e7a8ccb81e1fd
3
+ metadata.gz: b018694487d82223169762c7e7231fdc62382011f8b6b82bb57bd7677d7ba0c0
4
+ data.tar.gz: 026d1ea6626c3df24491451ef54688af78123207d8d5147c6ac878da6605f029
5
5
  SHA512:
6
- metadata.gz: 04a39cda7513ce8084b6cdddd3016e7ca679218688dfb2dcb6f6fd8a0e627ec189f38a31ba2c44bd2a8c5b16191e24d0f343f860db5dfbcbb7ca49b92aaff197
7
- data.tar.gz: 50172d87860fa9fb4b187dee66c72954ce926e0d73f3e78e1a15a7f3437e749d48b2f935fa6ad08be457a6dd317a3c5c20340a7f7cc1621825b97887e82822c1
6
+ metadata.gz: 6bc574ff5559d97bb347cdd2677abf1d2446ead33382a83ff7876876c6ad7bec715bd201debddf93cf2dac1ba004126d636a47958f372691c737174a37f9c7a9
7
+ data.tar.gz: 1404ac65d64ba46dc54843f32ec93f7dc9106b6175d6f070ac0c64fdb59d255916c402e6442b7b75402d29de67728be7df3a25dc8d588e7a4ef6445515e2ea89
data/Gemfile CHANGED
@@ -8,17 +8,16 @@ gem 'rake'
8
8
 
9
9
  gem 'minitest', '>= 5.0'
10
10
  gem 'minitest-power_assert'
11
+ gem 'power_assert', '~> 2.0'
11
12
 
12
- gem 'parallel', '~> 1.13.0' if RUBY_VERSION < '2.2.0'
13
- gem 'rubocop', '~> 0.49.1'
13
+ gem 'rubocop', '~> 1.0', '<= 1.11'
14
+ gem 'rubocop-performance'
14
15
 
15
16
  # don't try to install redcarpet under jruby
16
- gem 'redcarpet', :platforms => :ruby
17
+ gem 'redcarpet', platforms: :ruby
17
18
 
18
19
  # Profiling
19
- if RUBY_VERSION >= '2.3.0'
20
- gem 'memory_profiler', :require => false
21
- end
20
+ gem 'memory_profiler', require: false
22
21
 
23
22
  # Needed for a Rake task
24
23
  gem 'git'
@@ -31,10 +30,9 @@ group :development do
31
30
  gem 'github-markup'
32
31
 
33
32
  # for visual tests
34
- if RUBY_VERSION < '2.2.0'
35
- gem 'sinatra', '~> 1.4.8'
36
- else
37
- gem 'sinatra'
38
- end
33
+ gem 'sinatra'
34
+
35
+ # Ruby 3 no longer ships with a web server
36
+ gem 'puma' if RUBY_VERSION >= '3'
39
37
  gem 'shotgun'
40
38
  end
data/lib/rouge/cli.rb CHANGED
@@ -44,6 +44,7 @@ module Rouge
44
44
  yield %||
45
45
  yield %|where <command> is one of:|
46
46
  yield %| highlight #{Highlight.desc}|
47
+ yield %| debug #{Debug.desc}|
47
48
  yield %| help #{Help.desc}|
48
49
  yield %| style #{Style.desc}|
49
50
  yield %| list #{List.desc}|
@@ -104,6 +105,8 @@ module Rouge
104
105
  Help
105
106
  when 'highlight', 'hi'
106
107
  Highlight
108
+ when 'debug'
109
+ Debug
107
110
  when 'style'
108
111
  Style
109
112
  when 'list'
@@ -171,35 +174,38 @@ module Rouge
171
174
  yield %[usage: rougify highlight <filename> [options...]]
172
175
  yield %[ rougify highlight [options...]]
173
176
  yield %[]
174
- yield %[--input-file|-i <filename> specify a file to read, or - to use stdin]
177
+ yield %[--input-file|-i <filename> specify a file to read, or - to use stdin]
175
178
  yield %[]
176
- yield %[--lexer|-l <lexer> specify the lexer to use.]
177
- yield %[ If not provided, rougify will try to guess]
178
- yield %[ based on --mimetype, the filename, and the]
179
- yield %[ file contents.]
179
+ yield %[--lexer|-l <lexer> specify the lexer to use.]
180
+ yield %[ If not provided, rougify will try to guess]
181
+ yield %[ based on --mimetype, the filename, and the]
182
+ yield %[ file contents.]
180
183
  yield %[]
181
- yield %[--formatter|-f <opts> specify the output formatter to use.]
182
- yield %[ If not provided, rougify will default to]
183
- yield %[ terminal256.]
184
+ yield %[--formatter-preset|-f <opts> specify the output formatter to use.]
185
+ yield %[ If not provided, rougify will default to]
186
+ yield %[ terminal256. options are: terminal256,]
187
+ yield %[ terminal-truecolor, html, html-pygments,]
188
+ yield %[ html-inline, html-line-table, html-table,]
189
+ yield %[ null/raw/tokens, or tex.]
184
190
  yield %[]
185
- yield %[--theme|-t <theme> specify the theme to use for highlighting]
186
- yield %[ the file. (only applies to some formatters)]
191
+ yield %[--theme|-t <theme> specify the theme to use for highlighting]
192
+ yield %[ the file. (only applies to some formatters)]
187
193
  yield %[]
188
- yield %[--mimetype|-m <mimetype> specify a mimetype for lexer guessing]
194
+ yield %[--mimetype|-m <mimetype> specify a mimetype for lexer guessing]
189
195
  yield %[]
190
- yield %[--lexer-opts|-L <opts> specify lexer options in CGI format]
191
- yield %[ (opt1=val1&opt2=val2)]
196
+ yield %[--lexer-opts|-L <opts> specify lexer options in CGI format]
197
+ yield %[ (opt1=val1&opt2=val2)]
192
198
  yield %[]
193
- yield %[--formatter-opts|-F <opts> specify formatter options in CGI format]
194
- yield %[ (opt1=val1&opt2=val2)]
199
+ yield %[--formatter-opts|-F <opts> specify formatter options in CGI format]
200
+ yield %[ (opt1=val1&opt2=val2)]
195
201
  yield %[]
196
- yield %[--require|-r <filename> require a filename or library before]
197
- yield %[ highlighting]
202
+ yield %[--require|-r <filename> require a filename or library before]
203
+ yield %[ highlighting]
198
204
  yield %[]
199
- yield %[--escape allow the use of escapes between <! and !>]
205
+ yield %[--escape allow the use of escapes between <! and !>]
200
206
  yield %[]
201
- yield %[--escape-with <l> <r> allow the use of escapes between custom]
202
- yield %[ delimiters. implies --escape]
207
+ yield %[--escape-with <l> <r> allow the use of escapes between custom]
208
+ yield %[ delimiters. implies --escape]
203
209
  end
204
210
 
205
211
  # There is no consistent way to do this, but this is used elsewhere,
@@ -215,7 +221,7 @@ module Rouge
215
221
  end
216
222
  end
217
223
 
218
- def self.parse(argv)
224
+ def self.parse_opts(argv)
219
225
  opts = {
220
226
  :formatter => supports_truecolor? ? 'terminal-truecolor' : 'terminal256',
221
227
  :theme => 'thankful_eyes',
@@ -256,7 +262,11 @@ module Rouge
256
262
  end
257
263
  end
258
264
 
259
- new(opts)
265
+ opts
266
+ end
267
+
268
+ def self.parse(argv)
269
+ new(parse_opts(argv))
260
270
  end
261
271
 
262
272
  def input_stream
@@ -344,6 +354,29 @@ module Rouge
344
354
  end
345
355
  end
346
356
 
357
+ class Debug < Highlight
358
+ def self.desc
359
+ end
360
+
361
+ def self.doc
362
+ return enum_for(:doc) unless block_given?
363
+
364
+ yield %|usage: rougify debug [<options>]|
365
+ yield %||
366
+ yield %|Debug a lexer. Similar options to `rougify highlight`, but|
367
+ yield %|defaults to the `null` formatter, and ensures the `debug`|
368
+ yield %|option is enabled, to print debugging information to stdout.|
369
+ end
370
+
371
+ def self.parse_opts(argv)
372
+ out = super(argv)
373
+ out[:lexer_opts]['debug'] = '1'
374
+ out[:formatter] = 'null'
375
+
376
+ out
377
+ end
378
+ end
379
+
347
380
  class Style < CLI
348
381
  def self.desc
349
382
  "print CSS styles"
@@ -2,4 +2,4 @@
2
2
  This is a sample
3
3
  comment.
4
4
  ]
5
- .[>+<-]>,
5
+ .[>+<-]>,
@@ -3,4 +3,4 @@ function main(args as dynamic) as void
3
3
  'Create a scene and load /components/helloworld.xml'
4
4
  scene = screen.CreateScene("HelloWorld")
5
5
  screen.show()
6
- end function
6
+ end function
data/lib/rouge/demos/bsl CHANGED
@@ -4,4 +4,4 @@
4
4
  Сообщить("Привет мир");
5
5
  КонецПроцедуры
6
6
 
7
- #КонецОбласти
7
+ #КонецОбласти
@@ -15,4 +15,4 @@ component accessors="true" {
15
15
 
16
16
  return foo;
17
17
  }
18
- }
18
+ }
@@ -0,0 +1,19 @@
1
+ interface FastEthernet0.20
2
+ encapsulation dot1Q 20
3
+ no ip route-cache
4
+ bridge-group 1
5
+ no bridge-group 1 source-learning
6
+ bridge-group 1 spanning-disabled
7
+
8
+ ! Supports shortened versions of config words, too
9
+ inter gi0.10
10
+ encap dot1q 10 native
11
+ inter gi0
12
+
13
+ banner login # Authenticate yourself! #
14
+
15
+ ! Supports #, $ and % to delimit banners, and multiline
16
+ banner motd $
17
+ Attention!
18
+ We will be having scheduled system maintenance on this device.
19
+ $
data/lib/rouge/demos/coq CHANGED
@@ -10,4 +10,7 @@ Section with_T.
10
10
  end.
11
11
  End with_T.
12
12
 
13
- Definition a_string := "hello \" world".
13
+ Definition a_string := "hello
14
+ world".
15
+ Definition escape_string := "0123".
16
+ Definition zero_string := "0".
data/lib/rouge/demos/csvs CHANGED
@@ -5,4 +5,4 @@ Transaction_Date: xDate
5
5
  Transaction_ID: notEmpty
6
6
  Originator_Name: notEmpty
7
7
  Originator_Address: any("yes","no")
8
- Originator_Country: notEmpty
8
+ Originator_Country: notEmpty
@@ -0,0 +1,16 @@
1
+ module A {
2
+ const i: int := 56_78
3
+ }
4
+
5
+ method m(b: bool, s: string) {
6
+ var x: string;
7
+ var i: int;
8
+ if b then i := 1; else i := 2;
9
+ i := if b 1 else 2;
10
+ assert b;
11
+ assume b;
12
+ print s;
13
+ expect b;
14
+ }
15
+
16
+ function f(i: int): int { i + 1 }
@@ -18,4 +18,3 @@ select * from TABLE1 where COL1 like %VAR1%; //utiliser la variable VAR1 dans un
18
18
 
19
19
  select * from TEST_TABLE; //exécution d'une requête Select pour ramener des valeurs
20
20
  Affect_LastColumns("TEST1"); //création du paramètre TEST1
21
-
data/lib/rouge/demos/ecl CHANGED
@@ -15,4 +15,3 @@ somePeople := allPeople(LastName = 'Smith');
15
15
 
16
16
  // Outputs ---
17
17
  somePeople;
18
-
@@ -0,0 +1,11 @@
1
+ From: Me <me@example.com>
2
+ To: You <you@example.com>
3
+ Date: Tue, 21 Jul 2020 15:14:03 +0000
4
+ Subject: A very important message
5
+
6
+ > Please investigate. Thank you.
7
+
8
+ I have investigated.
9
+
10
+ --
11
+ This message is highly confidential and will self-destruct.
@@ -4,4 +4,4 @@
4
4
 
5
5
  %% Compute rectangle and circle area.
6
6
  area({rectangle, Width, Ht}) -> Width * Ht;
7
- area({circle, R}) -> 3.14159 * R * R.
7
+ area({circle, R}) -> 3.14159 * R * R.
@@ -0,0 +1,13 @@
1
+ # Simple things are simple.
2
+ hello-user = Hello, {$userName}!
3
+
4
+ # Complex things are possible.
5
+ shared-photos =
6
+ {$userName} {$photoCount ->
7
+ [one] added a new photo
8
+ *[other] added {$photoCount} new photos
9
+ } to {$userGender ->
10
+ [male] his stream
11
+ [female] her stream
12
+ *[other] their stream
13
+ }.
@@ -9,4 +9,4 @@ let rec existsLeaf test tree =
9
9
  || existsLeaf test right
10
10
 
11
11
  let hasEvenLeaf tree =
12
- existsLeaf (fun n -> n % 2 = 0) tree
12
+ existsLeaf (fun n -> n % 2 = 0) tree
data/lib/rouge/demos/glsl CHANGED
@@ -11,4 +11,4 @@ void main()
11
11
  {
12
12
  vertexColor = color;
13
13
  gl_Position = vec4(position, 0.0, 1.0);
14
- }
14
+ }
data/lib/rouge/demos/haxe CHANGED
@@ -2,4 +2,3 @@
2
2
  public static function hello(arg : String) {
3
3
  return 'Hello $arg';
4
4
  }
5
-
@@ -0,0 +1,13 @@
1
+ import Data.Vect
2
+
3
+ insert : Ord elem =>
4
+ (x : elem) -> (xsSorted : Vect len elem) -> Vect (S len) elem
5
+ insert x [] = [x]
6
+ insert x (y :: xs) = case x < y of
7
+ True => x :: y :: xs
8
+ False => y :: insert x xs
9
+
10
+ insSort : Ord elem => Vect n elem -> Vect n elem
11
+ insSort [] = []
12
+ insSort (x :: xs) = let xsSorted = insSort xs in
13
+ insert x xsSorted
@@ -0,0 +1,16 @@
1
+ theory demo imports Main begin
2
+
3
+ section ‹Inductive predicates for lists›
4
+
5
+ datatype 'a list = Nil ("[]") | Cons 'a "'a list" ("_ # _")
6
+
7
+ fun length :: "'a list ⇒ nat" where
8
+ "length [] = 0" | "length (x # xs) = 1 + length xs"
9
+
10
+ inductive ζ :: "'a list ⇒ nat ⇒ bool" where
11
+ Nil[intro!]: "ζ [] 0" |
12
+ Cons[intro]: "ζ xs l ⟹ ζ (x # xs) (1 + l)"
13
+
14
+ (* Not the answer? *)
15
+ lemma "ζ xs 42"
16
+ oops
data/lib/rouge/demos/j ADDED
@@ -0,0 +1,12 @@
1
+ NB. Procedural programming
2
+ fizzbuzz=: monad define
3
+ for_i. >:i.y do.
4
+ if. 0 = 15 | i do. echo'FizzBuzz'
5
+ elseif. 0 = 3 | i do. echo'Fizz'
6
+ elseif. 0 = 5 | i do. echo'Buzz'
7
+ else. echo i
8
+ end.
9
+ end.
10
+ )
11
+ NB. Loopless programming
12
+ fizzbuzz=: echo@(, ::] ('Fizz' ; 'Buzz') ;@#~ 0 = 3 5&|)@>:@i.
@@ -0,0 +1,8 @@
1
+ open nat
2
+
3
+ def add : nat → nat → nat
4
+ | m zero := m
5
+ | m (succ n) := succ (add m n)
6
+
7
+ -- encode definition as an axiom
8
+ axiom add_zero (n : nat) : n + 0 = n
@@ -0,0 +1,10 @@
1
+ project('tutorial', 'c', version: '0.2.3')
2
+ executable('demo', 'main.c')
3
+
4
+ version_array = meson.project_version().split('.')
5
+ api_version = '@0@.@1@'.format(version_array[0], version_array[1])
6
+
7
+ d = dependency('foo', required : get_option('myfeature'))
8
+ if d.found()
9
+ app = executable('app', 'app.c', dependencies : [d])
10
+ endif
@@ -8,4 +8,4 @@ Reset:
8
8
  lda #$3f ; $3F -> A register
9
9
  ldy #$00 ; $00 -> Y register
10
10
  sta PPU_ADDR ; write #HIGH byte first
11
- sty PPU_ADDR ; $3F00 -> PPU address
11
+ sty PPU_ADDR ; $3F00 -> PPU address
@@ -0,0 +1,35 @@
1
+ % Functional Recursion: ;
2
+ fact IS RECUR [ 0 =, 1 first, pass, product, -1 +] % from wikipedia;
3
+
4
+ % Product of a range: ;
5
+ fact IS * count;
6
+
7
+ % Plain recursion: ;
8
+ fact IS OPERATION x {
9
+ if x = 0 then 1 else x * fact (x - 1) endif
10
+ };
11
+
12
+ % While loop: ;
13
+ fact IS OPERATION x {
14
+ prod := 1;
15
+ WHILE x > 0 DO
16
+ prod := prod * x;
17
+ x := x - 1;
18
+ ENDWHILE;
19
+ prod
20
+ }
21
+
22
+ % A basic divide by zero error: ;
23
+ 1 / 0
24
+ # OUTPUT:
25
+ ?div
26
+
27
+ % Errors are also values called faults, giving you their location: ;
28
+ 5 / 5 10 0 8
29
+ # OUTPUT:
30
+ 1. 0.5 ?div 0.625
31
+
32
+ % You can also define custom faults using 'fault': ;
33
+ fault 'this is an error'
34
+ # OUTPUT:
35
+ this is an error
@@ -0,0 +1,4 @@
1
+ context Compagnie::toEuros() : Collection(Real)
2
+ body: self.employees->collect(each: Employee| each.salary/ 6.55957)
3
+ -- OR
4
+ body: self.employees->collect(salary) -> collect(x | x/6.55957)
@@ -3,4 +3,3 @@ languagesystem DFLT dflt;
3
3
  feature liga {
4
4
  sub f i by f_i;
5
5
  } liga;
6
-
@@ -0,0 +1,2 @@
1
+ SELECT q'{a quoted string}' AS s, TO_CHAR(SYSDATE,'MM/DD/YYYY') AS "Current Date" FROM DUAL
2
+ WHERE 1=1;
@@ -0,0 +1,9 @@
1
+ %!PS
2
+ /Courier % name the desired font
3
+ 20 selectfont % choose the size in points and establish
4
+ % the font as the current one
5
+ 72 500 moveto % position the current point at
6
+ % coordinates 72, 500 (the origin is at the
7
+ % lower-left corner of the page)
8
+ (Hello world!) show % stroke the text in parentheses
9
+ showpage % print all on the page
@@ -0,0 +1,26 @@
1
+ module Person = {
2
+ type t = Teacher | Director | Student(string)
3
+
4
+ let greeting = person =>
5
+ switch person {
6
+ | Teacher => "Hey Professor!"
7
+ | Director => "Hello Director."
8
+ | Student("Richard") => "Still here Ricky?"
9
+ | Student(other) => "Hey, " ++ other ++ "."
10
+ }
11
+ }
12
+
13
+ module Button = {
14
+ @react.component
15
+ let make = (~count: int, ~onClick) => {
16
+ let times = switch count {
17
+ | 1 => "once"
18
+ | 2 => "twice"
19
+ | n => Belt.Int.toString(n) ++ " times"
20
+ }
21
+
22
+ let msg = "Click me " ++ times
23
+
24
+ <button onClick> {msg->React.string} </button>
25
+ }
26
+ }
@@ -0,0 +1,33 @@
1
+ // A system agnostic domain specific language for runtime monitoring and verification
2
+ // Basic events
3
+
4
+ insert(index,elem) matches {event:'func_pre',name:'my_insert',args:[index,elem]};
5
+
6
+ relevant matches insert(_,_)|remove(_,_)|size(_)|get(_,_);
7
+
8
+ insert_in_bounds(size) matches insert(index,_) with index >= 0 && index <= size;
9
+
10
+ del_false matches del(_,false);
11
+ not_add_true_del(el) not matches add(el,true) | del(el,_);
12
+
13
+ Main = relevant >> (CheckIndex<0> /\ add_rm_get >> CheckElem)!;
14
+ CheckIndex<size> =
15
+ get_size(size)* (insert_in_bounds(size) CheckIndex<size+1> \/ remove_in_bounds(size) CheckIndex<size-1>);
16
+
17
+ Msg<inf,sup> = if(inf<=sup) msg(inf) Msg<inf+1,sup> else empty;
18
+ Main=relevant>>Msg<1,4>*!;
19
+
20
+ acquire(id) matches {event:'func_pre',name:'acquire',args:[_,id,...]};
21
+
22
+ Main = relevant >> Resources;
23
+ Resources =
24
+ {let id; acquire(id)
25
+ ((Resources | use(id)* release(id)) /\
26
+ acqRel(id) >> release(id) all)
27
+ }?;
28
+
29
+ msg(ty) matches {event:'func_pre',name:'msg',args:[ty]};
30
+ relevant matches msg(_);
31
+
32
+ Msg<inf,sup> = if(inf<=sup) msg(inf) Msg<inf+1,sup> else empty;
33
+ Main=relevant>>Msg<1,4>*!;
@@ -9,4 +9,3 @@
9
9
  </ul>
10
10
 
11
11
  <div class="{if $foo}class1{else}class2{/if}">{$foo.bar.baz}</div>
12
-
@@ -0,0 +1,13 @@
1
+ data {
2
+ int<lower=0> N;
3
+ vector[N] x;
4
+ vector[N] y;
5
+ }
6
+ parameters {
7
+ real alpha;
8
+ real beta;
9
+ real<lower=0> sigma;
10
+ }
11
+ model {
12
+ y ~ normal(alpha + beta * x, sigma);
13
+ }
@@ -0,0 +1,14 @@
1
+ * Run a series of linear regressions
2
+ sysuse auto, clear
3
+ foreach v of varlist mpg weight-turn {
4
+ regress price `v', robust
5
+ }
6
+
7
+ regress price i.foreign
8
+ local num_obs = e(N)
9
+ global myglobal = 4
10
+
11
+ * Generate and manipulate variables
12
+ generate newvar1 = "string"
13
+ generate newvar2 = 34 - `num_obs'
14
+ replace newvar2 = $myglobal
@@ -0,0 +1,4 @@
1
+ [Unit]
2
+ Description=Snap Daemon
3
+ Requires=snapd.socket
4
+ OnFailure=snapd.failure.service
@@ -0,0 +1,15 @@
1
+ include <linux/test.h>
2
+
3
+ resource fd_test[fd]
4
+
5
+ openat$test(fd const[AT_FDCWD], file ptr[in, string["/dev/test"]], flags flags[open_flags], mode const[0]) fd_test
6
+
7
+ ioctl$TEST(fd fd_test, cmd const[TEST], arg ptr[in, test])
8
+
9
+ test {
10
+ number int32
11
+ size len[data, int32]
12
+ data array[int8]
13
+ }
14
+
15
+ _ = TEST
@@ -0,0 +1,8 @@
1
+ # Source: https://github.com/google/syzkaller/blob/master/sys/linux/test/vusb_hid
2
+
3
+ r0 = syz_usb_connect$hid(0x0, 0x36, &(0x7f0000000040)=ANY=[@ANYBLOB="12010000000018105e04da07000000000001090224000100000000090400000903000000092100000001222200090581030800000000"], 0x0)
4
+ syz_usb_control_io$hid(r0, 0x0, 0x0)
5
+ syz_usb_control_io$hid(r0, &(0x7f00000001c0)={0x24, 0x0, 0x0, &(0x7f0000000000)={0x0, 0x22, 0x22, {[@global=@item_012={0x2, 0x1, 0x9, "2313"}, @global=@item_012={0x2, 0x1, 0x0, "e53f"}, @global=@item_4={0x3, 0x1, 0x0, '\f\x00'}, @local=@item_012={0x2, 0x2, 0x2, "9000"}, @global=@item_4={0x3, 0x1, 0x0, "0900be00"}, @main=@item_4={0x3, 0x0, 0x8, '\x00'}, @local=@item_4={0x3, 0x2, 0x0, "09007a15"}, @local=@item_4={0x3, 0x2, 0x0, "5d8c3dda"}]}}, 0x0}, 0x0)
6
+ syz_usb_ep_write(r0, 0x81, 0x7, &(0x7f0000000000)='BBBBBBB')
7
+ syz_usb_ep_write(r0, 0x81, 0x7, &(0x7f0000000000)='BBBBBBB')
8
+ syz_usb_ep_write(r0, 0x81, 0x7, &(0x7f0000000000)='BBBBBBB')
@@ -42,8 +42,8 @@ module Rouge
42
42
  end
43
43
 
44
44
  # Format a token stream. Delegates to {#format}.
45
- def self.format(tokens, *a, &b)
46
- new(*a).format(tokens, &b)
45
+ def self.format(tokens, *args, **kwargs, &b)
46
+ new(*args, **kwargs).format(tokens, &b)
47
47
  end
48
48
 
49
49
  def initialize(opts={})