feat(web): add java support
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Baoshuo Ren 2022-10-05 07:47:56 +08:00
parent bbacfd3e40
commit 94d9272704
Signed by: baoshuo
GPG Key ID: 00CB9680AB29F51A
5 changed files with 54 additions and 8 deletions

View File

@ -515,18 +515,23 @@ function echoSubmissionContent($submission, $requirement) {
case 'C++20': case 'C++20':
case 'C++98': case 'C++98':
case 'C++03': case 'C++03':
$sh_class = 'sh_cpp'; $sh_class = 'sh_cpp language-cpp';
break; break;
case 'Python2': case 'Python2':
case 'Python2.7': case 'Python2.7':
case 'Python3': case 'Python3':
$sh_class = 'sh_python'; $sh_class = 'sh_python language-python';
break;
case 'Java8':
case 'Java11':
case 'Java17':
$sh_class = 'sh_java language-java';
break; break;
case 'C': case 'C':
$sh_class = 'sh_c'; $sh_class = 'sh_c language-c';
break; break;
case 'Pascal': case 'Pascal':
$sh_class = 'sh_pascal'; $sh_class = 'sh_pascal language-pascal';
break; break;
default: default:
$sh_class = ''; $sh_class = '';

View File

@ -1,6 +1,6 @@
<?php <?php
global $uojSupportedLanguages, $uojMainJudgerWorkPath; global $uojSupportedLanguages, $uojMainJudgerWorkPath;
$uojSupportedLanguages = array('C', 'C++', 'C++98', 'C++03', 'C++11', 'C++17', 'C++20', 'Pascal', 'Python2.7', 'Python3'); $uojSupportedLanguages = array('C', 'C++', 'C++98', 'C++03', 'C++11', 'C++17', 'C++20', 'Pascal', 'Python2.7', 'Python3', 'Java8', 'Java11', 'Java17');
$uojMainJudgerWorkPath = "/opt/uoj/judger/uoj_judger"; $uojMainJudgerWorkPath = "/opt/uoj/judger/uoj_judger";
function authenticateJudger() { function authenticateJudger() {

View File

@ -212,8 +212,8 @@
<?php endif ?> <?php endif ?>
<?php if (isset($REQUIRE_LIB['hljs'])): ?> <?php if (isset($REQUIRE_LIB['hljs'])): ?>
<?= HTML::css_link('/css/highlightjs.github.min.css') ?> <?= HTML::css_link('/css/highlightjs.github.min.css?v=11.6.0-20221005') ?>
<?= HTML::js_src('/js/highlightjs.min.js') ?> <?= HTML::js_src('/js/highlightjs.min.js?v=11.6.0-20221005') ?>
<script>$(document).ready(function() { hljs.highlightAll(); });</script> <script>$(document).ready(function() { hljs.highlightAll(); });</script>
<?php endif ?> <?php endif ?>

View File

@ -444,4 +444,41 @@ aliases:["dpr","dfm","pas","pascal"],case_insensitive:!0,keywords:r,
illegal:/"|\$[G-Zg-z]|\/\*|<\/|\|/,contains:[n,i,e.NUMBER_MODE,{ illegal:/"|\$[G-Zg-z]|\/\*|<\/|\|/,contains:[n,i,e.NUMBER_MODE,{
className:"number",relevance:0,variants:[{begin:"\\$[0-9A-Fa-f]+"},{ className:"number",relevance:0,variants:[{begin:"\\$[0-9A-Fa-f]+"},{
begin:"&[0-7]+"},{begin:"%[01]+"}]},s,c,t].concat(a)}}})() begin:"&[0-7]+"},{begin:"%[01]+"}]},s,c,t].concat(a)}}})()
;hljs.registerLanguage("delphi",e)})(); ;hljs.registerLanguage("delphi",e)})();/*! `java` grammar compiled for Highlight.js 11.6.0 */
(()=>{var e=(()=>{"use strict"
;var e="\\.([0-9](_*[0-9])*)",a="[0-9a-fA-F](_*[0-9a-fA-F])*",n={
className:"number",variants:[{
begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{
begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{
begin:`\\b0[xX]((${a})\\.?|(${a})?\\.(${a}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${a})[lL]?\\b`},{
begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],
relevance:0};function s(e,a,n){return-1===n?"":e.replace(a,(t=>s(e,a,n-1)))}
return e=>{
const a=e.regex,t="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",i=t+s("(?:<"+t+"~~~(?:\\s*,\\s*"+t+"~~~)*>)?",/~~~/g,2),r={
keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed"],
literal:["false","true","null"],
type:["char","boolean","long","float","int","byte","short","double"],
built_in:["super","this"]},l={className:"meta",begin:"@"+t,contains:[{
begin:/\(/,end:/\)/,contains:["self"]}]},c={className:"params",begin:/\(/,
end:/\)/,keywords:r,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0}
;return{name:"Java",aliases:["jsp"],keywords:r,illegal:/<\/|#/,
contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,
relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{
begin:/import java\.[a-z]+\./,keywords:"import",relevance:2
},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,
className:"string",contains:[e.BACKSLASH_ESCAPE]
},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{
match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,t],className:{
1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{
begin:[a.concat(/(?!else)/,t),/\s+/,t,/\s+/,/=(?!=)/],className:{1:"type",
3:"variable",5:"operator"}},{begin:[/record/,/\s+/,t],className:{1:"keyword",
3:"title.class"},contains:[c,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{
beginKeywords:"new throw return else",relevance:0},{
begin:["(?:"+i+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{
2:"title.function"},keywords:r,contains:[{className:"params",begin:/\(/,
end:/\)/,keywords:r,relevance:0,
contains:[l,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.C_BLOCK_COMMENT_MODE]
},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,l]}}})()
;hljs.registerLanguage("java",e)})();

View File

@ -618,6 +618,10 @@ function get_codemirror_mode(lang) {
return 'text/x-python'; return 'text/x-python';
case 'Pascal': case 'Pascal':
return 'text/x-pascal'; return 'text/x-pascal';
case 'Java8':
case 'Java11':
case 'Java17':
return 'text/x-java';
case 'text': case 'text':
return 'text/plain'; return 'text/plain';
default: default: