rouge 4.3.0 → 4.4.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: de3a38233be791cfb87fbcee4e092afc1731ed4c2ac0bd9f4e8eb8d889a262c4
4
- data.tar.gz: 81d1cf226f514155b861b1f127e55ffdf7cf9d40e2a8c8fa1ee5cd211052aeb0
3
+ metadata.gz: 0edd954634b90e384ace60c0f23cc8eb60b53eb25600105b2e235e74edf38008
4
+ data.tar.gz: 8b3c50c71ca796236f2326a60ff0d84e5b2076fe6314a48c5393d1419e448c9d
5
5
  SHA512:
6
- metadata.gz: 3ba279624b6990706218bced834a373cd4d5a15a487c862b07cc7042a924b429cad7518bea407f8ca85bda087395f1fa15abb231f0dd9ff0faa3b2b5e7cb108a
7
- data.tar.gz: 93021b4af8761ddc54e22038b6926b7522f67c70c1ba0e7ebdb76ccb21375760f23efe4ebc9c4000bf3bba73499476fb9832596ac3f8eeca5f6f6f626e15069d
6
+ metadata.gz: 671d9550dc89a8aef885d3efe1fd31f1cabeabaff551574f6cf9aac15fae73b03f2483ae3436c267685175500dc728d5dc8326e183d6bca0fa79b4fdf8eb712f
7
+ data.tar.gz: 4ee512eb60833a549e3ce3e3234857f4c547b143eb563dce090db626769f99a2386a8dbb06ca4e0fcc54fa8c4d3931fb8c2e904200b408d6b8ad3699da4f841c
@@ -0,0 +1,10 @@
1
+ fn fib(n: Int): # write Fibonacci series up to n
2
+ """Print a Fibonacci series up to n."""
3
+ var a = 0
4
+ var b = 1
5
+ while a < n:
6
+ print(a)
7
+ a, b = b, a+b
8
+
9
+ fn main():
10
+ fib(10)
@@ -0,0 +1,99 @@
1
+ #include <core.p4>
2
+ #include <v1model.p4>
3
+
4
+ const bit<16> TYPE_IPV4 = 0x800;
5
+ typedef bit<9> egressSpec_t;
6
+ typedef bit<48> macAddr_t;
7
+ typedef bit<32> ip4Addr_t;
8
+
9
+ header ethernet_t {
10
+ macAddr_t dstAddr;
11
+ macAddr_t srcAddr;
12
+ bit<16> etherType;
13
+ }
14
+
15
+ header ipv4_t {
16
+ bit<4> version;
17
+ bit<4> ihl;
18
+ bit<8> diffserv;
19
+ bit<16> totalLen;
20
+ bit<16> identification;
21
+ bit<3> flags;
22
+ bit<13> fragOffset;
23
+ bit<8> ttl;
24
+ bit<8> protocol;
25
+ bit<16> hdrChecksum;
26
+ ip4Addr_t srcAddr;
27
+ ip4Addr_t dstAddr;
28
+ }
29
+
30
+ struct metadata { /* empty */ }
31
+
32
+ struct headers {
33
+ ethernet_t ethernet;
34
+ ipv4_t ipv4;
35
+ }
36
+
37
+ parser MyParser(packet_in packet,
38
+ out headers hdr,
39
+ inout metadata meta,
40
+ inout standard_metadata_t standard_metadata) {
41
+
42
+ state start { transition parse_ethernet; }
43
+
44
+ state parse_ethernet {
45
+ packet.extract(hdr.ethernet);
46
+ transition select(hdr.ethernet.etherType) {
47
+ TYPE_IPV4: parse_ipv4;
48
+ default: accept;
49
+ }
50
+ }
51
+
52
+ state parse_ipv4 {
53
+ packet.extract(hdr.ipv4);
54
+ transition accept;
55
+ }
56
+
57
+ }
58
+
59
+ control MyIngress(inout headers hdr,
60
+ inout metadata meta,
61
+ inout standard_metadata_t standard_metadata) {
62
+ action drop() {
63
+ mark_to_drop(standard_metadata);
64
+ }
65
+
66
+ action ipv4_forward(macAddr_t dstAddr, egressSpec_t port) {
67
+ standard_metadata.egress_spec = port;
68
+ hdr.ethernet.srcAddr = hdr.ethernet.dstAddr;
69
+ hdr.ethernet.dstAddr = dstAddr;
70
+ hdr.ipv4.ttl = hdr.ipv4.ttl - 1;
71
+ }
72
+
73
+ table ipv4_lpm {
74
+ key = { hdr.ipv4.dstAddr: lpm; }
75
+ actions = { ipv4_forward; drop; NoAction; }
76
+ size = 1024;
77
+ default_action = drop();
78
+ }
79
+
80
+ apply {
81
+ if (hdr.ipv4.isValid()) {
82
+ ipv4_lpm.apply();
83
+ }
84
+ }
85
+ }
86
+
87
+
88
+ control MyDeparser(packet_out packet, in headers hdr) {
89
+ apply {
90
+ packet.emit(hdr.ethernet);
91
+ packet.emit(hdr.ipv4);
92
+ }
93
+ }
94
+
95
+ V1Switch(
96
+ MyParser(),
97
+ MyIngress(),
98
+ MyDeparser()
99
+ ) main;
@@ -7,8 +7,8 @@ module Rouge
7
7
  title "Docker"
8
8
  desc "Dockerfile syntax"
9
9
  tag 'docker'
10
- aliases 'dockerfile', 'Dockerfile'
11
- filenames 'Dockerfile', '*.Dockerfile', '*.docker'
10
+ aliases 'dockerfile', 'Dockerfile', 'containerfile', 'Containerfile'
11
+ filenames 'Dockerfile', '*.Dockerfile', '*.docker', 'Containerfile', '*.Containerfile'
12
12
  mimetypes 'text/x-dockerfile-config'
13
13
 
14
14
  KEYWORDS = %w(
@@ -40,6 +40,10 @@ module Rouge
40
40
  groups Keyword, Text, Name::Variable
41
41
  end
42
42
 
43
+ rule %r/(else\b)([\t ]+)((?:ifn?def|ifn?eq)\b)([\t ]+)([^#\n]+)/ do
44
+ groups Keyword, Text, Keyword, Text, Name::Variable
45
+ end
46
+
43
47
  rule %r/(?:else|endif|endef|endfor)[\t ]*(?=[#\n])/, Keyword
44
48
 
45
49
  rule %r/(export)([\t ]+)(?=[\w\${}()\t -]+\n)/ do
@@ -0,0 +1,35 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'python.rb'
7
+
8
+ class Mojo < Python
9
+ title "Mojo"
10
+ desc "The Mojo programming language (modular.com)"
11
+ tag 'mojo'
12
+ aliases 'mojo'
13
+ filenames '*.mojo', '*.🔥'
14
+ mimetypes 'text/x-mojo', 'application/x-mojo'
15
+
16
+ def self.detect?(text)
17
+ return true if text.shebang?(/mojow?(?:[23](?:\.\d+)?)?/)
18
+ end
19
+
20
+ def self.keywords
21
+ @keywords ||= super + %w(
22
+ fn self alias inout borrowed owned ref var
23
+ struct trait raises with in match case
24
+ )
25
+ end
26
+
27
+ def self.builtins
28
+ @builtins ||= super + %w(
29
+ __mlir_attr __mlir_type __mlir_op parameter alwaysinline
30
+ register_passable
31
+ )
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,81 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class P4 < RegexLexer
7
+ tag 'p4'
8
+ title 'P4'
9
+ desc 'The P4 programming language'
10
+ filenames '*.p4'
11
+ mimetypes 'text/x-p4'
12
+
13
+ def self.keywords
14
+ @keywords ||= %w(
15
+ abstract action actions apply const default default_action else enum
16
+ entries extern exit if in inout key list out package packet_in
17
+ packet_out return size select switch this transition tuple type
18
+ typedef
19
+ )
20
+ end
21
+
22
+ def self.operators
23
+ @operators ||= %w(
24
+ \|\+\| \|-\| \? \& \&\&\& < > << >> \* \| ~ \^ - \+ /
25
+ \# \. = != <= >= \+\+
26
+ )
27
+ end
28
+
29
+ def self.decls
30
+ @decls ||= %w(
31
+ control header header_union parser state struct table
32
+ value_set
33
+ )
34
+ end
35
+
36
+ def self.builtins
37
+ @builtins ||= %w(
38
+ bit bool error extract int isValid setValid setInvalid match_kind
39
+ string varbit verify void
40
+ )
41
+ end
42
+
43
+ state :whitespace do
44
+ rule %r/\s+/m, Text
45
+ end
46
+
47
+ state :comment do
48
+ rule %r((//).*$\n?), Comment::Single
49
+ rule %r/\/\*(?:(?!\*\/).)*\*\//m, Comment::Multiline
50
+ end
51
+
52
+ state :number do
53
+ rule %r/([0-9]+[sw])?0[oO][0-7_]+/, Num
54
+ rule %r/([0-9]+[sw])?0[xX][0-9a-fA-F_]+/, Num
55
+ rule %r/([0-9]+[sw])?0[bB][01_]+/, Num
56
+ rule %r/([0-9]+[sw])?0[dD][0-9_]+/, Num
57
+ rule %r/([0-9]+[sw])?[0-9_]+/, Num
58
+ end
59
+
60
+ id = /[\p{XID_Start}_]\p{XID_Continue}*/
61
+ string_element = /\\"|[^"]/x
62
+
63
+ state :root do
64
+ mixin :whitespace
65
+ mixin :comment
66
+
67
+ rule %r/#\s*#{id}/, Comment::Preproc
68
+ rule %r/\b(?:#{P4.keywords.join('|')})\b/, Keyword
69
+ rule %r/\b(?:#{P4.decls.join('|')})\b/, Keyword::Declaration
70
+ rule %r/\b(?:#{P4.builtins.join('|')})\b/, Name::Builtin
71
+ rule %r/\b#{id}_[th]\b/x, Name::Class
72
+ rule %r/(?:#{P4.operators.join('|')})/x, Operator
73
+ rule %r/[(){}\[\]<>,:;\.]/, Punctuation
74
+ mixin :number
75
+ rule %r/@#{id}/x, Name::Label
76
+ rule %r/#{id}/x, Text
77
+ rule %r/"(?: #{string_element} )*"/x, Str::String
78
+ end
79
+ end
80
+ end
81
+ end
data/lib/rouge/version.rb CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  module Rouge
5
5
  def self.version
6
- "4.3.0"
6
+ "4.4.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: 4.3.0
4
+ version: 4.4.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: 2024-06-14 00:00:00.000000000 Z
11
+ date: 2024-09-17 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:
@@ -149,6 +149,7 @@ files:
149
149
  - lib/rouge/demos/matlab
150
150
  - lib/rouge/demos/meson
151
151
  - lib/rouge/demos/minizinc
152
+ - lib/rouge/demos/mojo
152
153
  - lib/rouge/demos/moonscript
153
154
  - lib/rouge/demos/mosel
154
155
  - lib/rouge/demos/msgtrans
@@ -165,6 +166,7 @@ files:
165
166
  - lib/rouge/demos/ocl
166
167
  - lib/rouge/demos/openedge
167
168
  - lib/rouge/demos/opentype_feature_file
169
+ - lib/rouge/demos/p4
168
170
  - lib/rouge/demos/pascal
169
171
  - lib/rouge/demos/perl
170
172
  - lib/rouge/demos/php
@@ -400,6 +402,7 @@ files:
400
402
  - lib/rouge/lexers/matlab/keywords.rb
401
403
  - lib/rouge/lexers/meson.rb
402
404
  - lib/rouge/lexers/minizinc.rb
405
+ - lib/rouge/lexers/mojo.rb
403
406
  - lib/rouge/lexers/moonscript.rb
404
407
  - lib/rouge/lexers/mosel.rb
405
408
  - lib/rouge/lexers/msgtrans.rb
@@ -418,6 +421,7 @@ files:
418
421
  - lib/rouge/lexers/ocl.rb
419
422
  - lib/rouge/lexers/openedge.rb
420
423
  - lib/rouge/lexers/opentype_feature_file.rb
424
+ - lib/rouge/lexers/p4.rb
421
425
  - lib/rouge/lexers/pascal.rb
422
426
  - lib/rouge/lexers/perl.rb
423
427
  - lib/rouge/lexers/php.rb