rouge 3.11.1 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6194cfb5ce21bf2ed70d2204150a338095ad016b480801c970995c3ecf9cebde
4
- data.tar.gz: 6999fdfdc81eeb5aaa808934d27288af6f40280146b13c03ba6d404f1ed73320
3
+ metadata.gz: 627bdb5578c0590a77e598473fcbe69330f21066cb87bd3463c2acabf31ac950
4
+ data.tar.gz: d28c6ae9d3a94d4cd81e1e7cd4ba883aa6a41d011569cd3051f140288bed70d8
5
5
  SHA512:
6
- metadata.gz: f85788d5d1c66521b7b554717d8d1d6b48c7455d01e2e32f13a48d0af26d358b9f1eb66ae0de614b9983d568383f28946add9061aea7ac31e1172d7c09c13f1a
7
- data.tar.gz: 790a1f59fc106f19b8ce33ef5df8d3f7255fadcd667cce2dabb38dff424f52df1193c5ac135093ecf3fced1f1f11b924c3c8f158454075dbaf2ae6b02b8f5d5b
6
+ metadata.gz: 27fc73f1c40e471cb1120f6dab17700fb8155b1a4518c783374088725d35afe896a382e2ec2dd8690505bbe8eaf519396a4e5b4b6154816455b5865be7275244
7
+ data.tar.gz: 46e1d31f4df9486d498b8bc91b9fee28bfac7681b4acd276bbd084baf5a186ee2324c3fe16626f59df054e43e332b4fbb865115e7fb440b3acb4b3a6a0c0465e
@@ -0,0 +1,23 @@
1
+ % from MiniZinc Handbook:
2
+ % https://www.minizinc.org/doc-latest/en/modelling.html
3
+
4
+ % Colouring Australia using nc colours
5
+ int: nc = 3;
6
+
7
+ var 1..nc: wa; var 1..nc: nt; var 1..nc: sa; var 1..nc: q;
8
+ var 1..nc: nsw; var 1..nc: v; var 1..nc: t;
9
+
10
+ constraint wa != nt;
11
+ constraint wa != sa;
12
+ constraint nt != sa;
13
+ constraint nt != q;
14
+ constraint sa != q;
15
+ constraint sa != nsw;
16
+ constraint sa != v;
17
+ constraint q != nsw;
18
+ constraint nsw != v;
19
+ solve satisfy;
20
+
21
+ output ["wa=\(wa)\t nt=\(nt)\t sa=\(sa)\n",
22
+ "q=\(q)\t nsw=\(nsw)\t v=\(v)\n",
23
+ "t=", show(t), "\n"];
@@ -49,6 +49,9 @@ module Rouge
49
49
  #
50
50
  # Lexer.find_fancy('guess', "#!/bin/bash\necho Hello, world")
51
51
  #
52
+ # If the code matches more than one lexer then Guesser::Ambiguous
53
+ # is raised.
54
+ #
52
55
  # This is used in the Redcarpet plugin as well as Rouge's own
53
56
  # markdown lexer for highlighting internal code blocks.
54
57
  #
@@ -7,8 +7,9 @@ module Rouge
7
7
  desc "Embedded Elixir"
8
8
 
9
9
  tag 'eex'
10
+ aliases 'leex'
10
11
 
11
- filenames '*.eex'
12
+ filenames '*.eex', '*.leex'
12
13
 
13
14
  def initialize(opts={})
14
15
  @elixir_lexer = Elixir.new(opts)
@@ -34,7 +34,13 @@ module Rouge
34
34
 
35
35
  rule %r/^([ \t]*)(```|~~~)([^\n]*\n)((.*?)(\2))?/m do |m|
36
36
  name = m[3].strip
37
- sublexer = Lexer.find_fancy(name.empty? ? "guess" : name, m[5], @options)
37
+ sublexer =
38
+ begin
39
+ Lexer.find_fancy(name.empty? ? "guess" : name, m[5], @options)
40
+ rescue Guesser::Ambiguous => e
41
+ e.alternatives.first.new(@options)
42
+ end
43
+
38
44
  sublexer ||= PlainText.new(@options.merge(:token => Str::Backtick))
39
45
  sublexer.reset!
40
46
 
@@ -15,11 +15,6 @@ module Rouge
15
15
  @perl = Perl.new
16
16
  end
17
17
 
18
- def self.detect?(text)
19
- return false if text.doctype?(/((?:ht|x)ml)/)
20
- return true if text.doctype?
21
- end
22
-
23
18
  # Note: If you add a tag in the lines below, you also need to modify "disambiguate '*.m'" in file disambiguation.rb
24
19
  TEXT_BLOCKS = %w(text doc)
25
20
  PERL_BLOCKS = %w(args flags attr init once shared perl cleanup filter)
@@ -0,0 +1,87 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ # Based on Chroma's MiniZinc lexer:
5
+ # https://github.com/alecthomas/chroma/blob/5152194c717b394686d3d7a7e1946a360ec0728f/lexers/m/minizinc.go
6
+
7
+ module Rouge
8
+ module Lexers
9
+ class MiniZinc < RegexLexer
10
+ title "MiniZinc"
11
+ desc "MiniZinc is a free and open-source constraint modeling language (minizinc.org)"
12
+ tag 'minizinc'
13
+ filenames '*.mzn', '*.fzn', '*.dzn'
14
+ mimetypes 'text/minizinc'
15
+
16
+ def self.builtins
17
+ @builtins = Set.new %w[
18
+ abort abs acosh array_intersect array_union array1d array2d array3d
19
+ array4d array5d array6d asin assert atan bool2int card ceil concat
20
+ cos cosh dom dom_array dom_size fix exp floor index_set
21
+ index_set_1of2 index_set_2of2 index_set_1of3 index_set_2of3
22
+ index_set_3of3 int2float is_fixed join lb lb_array length ln log log2
23
+ log10 min max pow product round set2array show show_int show_float
24
+ sin sinh sqrt sum tan tanh trace ub ub_array
25
+ ]
26
+ end
27
+
28
+ def self.keywords
29
+ @keywords = Set.new %w[
30
+ ann annotation any constraint else endif function for forall if
31
+ include list of op output minimize maximize par predicate record
32
+ satisfy solve test then type var where
33
+ ]
34
+ end
35
+
36
+ def self.keywords_type
37
+ @keywords_type ||= Set.new %w(
38
+ array set bool enum float int string tuple
39
+ )
40
+ end
41
+
42
+ def self.operators
43
+ @operators ||= Set.new %w(
44
+ in subset superset union diff symdiff intersect
45
+ )
46
+ end
47
+
48
+ id = /[$a-zA-Z_]\w*/
49
+
50
+ state :root do
51
+ rule %r(\s+)m, Text::Whitespace
52
+ rule %r(\\\n)m, Text::Whitespace
53
+ rule %r(%.*), Comment::Single
54
+ rule %r(/(\\\n)?[*](.|\n)*?[*](\\\n)?/)m, Comment::Multiline
55
+ rule %r/"(\\\\|\\"|[^"])*"/, Literal::String
56
+
57
+ rule %r(not|<->|->|<-|\\/|xor|/\\), Operator
58
+ rule %r(<|>|<=|>=|==|=|!=), Operator
59
+ rule %r(\+|-|\*|/|div|mod), Operator
60
+ rule %r(\\|\.\.|\+\+), Operator
61
+ rule %r([|()\[\]{},:;]), Punctuation
62
+ rule %r((true|false)\b), Keyword::Constant
63
+ rule %r(([+-]?)\d+(\.(?!\.)\d*)?([eE][-+]?\d+)?), Literal::Number
64
+
65
+ rule id do |m|
66
+ if self.class.keywords.include? m[0]
67
+ token Keyword
68
+ elsif self.class.keywords_type.include? m[0]
69
+ token Keyword::Type
70
+ elsif self.class.builtins.include? m[0]
71
+ token Name::Builtin
72
+ elsif self.class.operators.include? m[0]
73
+ token Operator
74
+ else
75
+ token Name::Other
76
+ end
77
+ end
78
+
79
+ rule %r(::\s*([^\W\d]\w*)(\s*\([^\)]*\))?), Name::Decorator
80
+ rule %r(\b([^\W\d]\w*)\b(\()) do
81
+ groups Name::Function, Punctuation
82
+ end
83
+ rule %r([^\W\d]\w*), Name::Other
84
+ end
85
+ end
86
+ end
87
+ end
@@ -9,7 +9,13 @@ module Rouge
9
9
  module Plugins
10
10
  module Redcarpet
11
11
  def block_code(code, language)
12
- lexer = Lexer.find_fancy(language, code) || Lexers::PlainText
12
+ lexer =
13
+ begin
14
+ Lexer.find_fancy(language, code)
15
+ rescue Guesser::Ambiguous => e
16
+ e.alternatives.first
17
+ end
18
+ lexer ||= Lexers::PlainText
13
19
 
14
20
  # XXX HACK: Redcarpet strips hard tabs out of code blocks,
15
21
  # so we assume you're not using leading spaces that aren't tabs,
@@ -3,6 +3,6 @@
3
3
 
4
4
  module Rouge
5
5
  def self.version
6
- "3.11.1"
6
+ "3.12.0"
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rouge
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.11.1
4
+ version: 3.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeanine Adkisson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-01 00:00:00.000000000 Z
11
+ date: 2019-10-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Rouge aims to a be a simple, easy-to-extend drop-in replacement for pygments.
14
14
  email:
@@ -124,6 +124,7 @@ files:
124
124
  - lib/rouge/demos/mason
125
125
  - lib/rouge/demos/mathematica
126
126
  - lib/rouge/demos/matlab
127
+ - lib/rouge/demos/minizinc
127
128
  - lib/rouge/demos/moonscript
128
129
  - lib/rouge/demos/mosel
129
130
  - lib/rouge/demos/msgtrans
@@ -323,6 +324,7 @@ files:
323
324
  - lib/rouge/lexers/mathematica/builtins.rb
324
325
  - lib/rouge/lexers/matlab.rb
325
326
  - lib/rouge/lexers/matlab/builtins.yml
327
+ - lib/rouge/lexers/minizinc.rb
326
328
  - lib/rouge/lexers/moonscript.rb
327
329
  - lib/rouge/lexers/mosel.rb
328
330
  - lib/rouge/lexers/msgtrans.rb