File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -131,6 +131,13 @@ def match?(filename)
131131 next TeX if matches? ( /\A \s *(?:\\ |%)/ )
132132 next Apex
133133 end
134+
135+ disambiguate '*.pp' do
136+ next Pascal if matches? ( /\b (function|begin|var)\b / )
137+ next Pascal if matches? ( /\b (end(;|\. ))/ )
138+
139+ Puppet
140+ end
134141 end
135142 end
136143end
Original file line number Diff line number Diff line change @@ -7,7 +7,7 @@ class Pascal < RegexLexer
77 tag 'pascal'
88 title "Pascal"
99 desc 'a procedural programming language commonly used as a teaching language.'
10- filenames '*.pas' , '*.lpr'
10+ filenames '*.pas' , '*.lpr' , '*.pp'
1111
1212 mimetypes 'text/x-pascal'
1313
Original file line number Diff line number Diff line change 7676 assert_guess ( Rouge ::Lexers ::Ruby , :source => '# v' + 'im: syntax=ruby' )
7777 end
7878 end
79+
80+ describe 'disambiguation guessing' do
81+ describe 'guesses *.pp filename' do
82+ it 'guesses pascal' do
83+ assert_guess (
84+ Rouge ::Lexers ::Pascal ,
85+ filename : 'foo.pp' ,
86+ source : <<~SOURCE
87+ function sum(a, b: integer): integer;
88+ var tempSum: integer
89+ begin
90+ tempSum := a + b;
91+ sum := tempSum;
92+ end;
93+ SOURCE
94+ )
95+ end
96+
97+ it 'guesses puppet' do
98+ assert_guess (
99+ Rouge ::Lexers ::Puppet ,
100+ filename : 'foo.pp' ,
101+ source : <<~SOURCE
102+ class foo::bar (
103+ Array[String] = foo::bar::baz,
104+ ) {
105+ $foo = [
106+ 'bar',
107+ 'baz',
108+ ]
109+ }
110+ SOURCE
111+ )
112+ end
113+ end
114+ end
79115end
Original file line number Diff line number Diff line change 99
1010 it 'guesses by filename' do
1111 assert_guess :filename => 'foo.pas'
12- assert_guess :filename => 'foo.lpr'
12+ assert_guess :filename => 'foo.lpr'
13+
14+ # *.pp needs source hints because it's also used by Puppet
15+ assert_guess :filename => 'foo.pp' , :source => 'begin end.'
1316 end
1417
1518 it 'guesses by mimetype' do
Original file line number Diff line number Diff line change 88 include Support ::Guessing
99
1010 it 'guesses by filename' do
11- assert_guess :filename => 'foo.pp'
11+ # *.pp needs source hints because it's also used by Pascal
12+ assert_guess :filename => 'foo.pp' , :source => 'class privileges { }'
1213 end
1314
1415 it 'guesses by source' do
You can’t perform that action at this time.
0 commit comments