From 15cb3b78ff52345ab96d4c7356eb81b2c55778bc Mon Sep 17 00:00:00 2001 From: Michael Schmidt Date: Tue, 5 Oct 2021 21:19:53 +0200 Subject: [PATCH] Idris: Fixed import statements (#3115) --- components/prism-idris.js | 14 ++- components/prism-idris.min.js | 2 +- .../idris/import_statement_feature.test | 10 +- tests/languages/idris/keyword_feature.test | 94 +++++++++++++++++-- 4 files changed, 105 insertions(+), 15 deletions(-) diff --git a/components/prism-idris.js b/components/prism-idris.js index 6c2dfec4ca..3717ea02ab 100644 --- a/components/prism-idris.js +++ b/components/prism-idris.js @@ -3,11 +3,17 @@ Prism.languages.idris = Prism.languages.extend('haskell', { pattern: /(?:(?:--|\|\|\|).*$|\{-[\s\S]*?-\})/m, }, 'keyword': /\b(?:Type|case|class|codata|constructor|corecord|data|do|dsl|else|export|if|implementation|implicit|import|impossible|in|infix|infixl|infixr|instance|interface|let|module|mutual|namespace|of|parameters|partial|postulate|private|proof|public|quoteGoal|record|rewrite|syntax|then|total|using|where|with)\b/, - 'import-statement': { - pattern: /(^\s*)import\s+(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*/m, - lookbehind: true - }, 'builtin': undefined }); +Prism.languages.insertBefore('idris', 'keyword', { + 'import-statement': { + pattern: /(^\s*import\s+)(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*/m, + lookbehind: true, + inside: { + 'punctuation': /\./ + } + } +}); + Prism.languages.idr = Prism.languages.idris; diff --git a/components/prism-idris.min.js b/components/prism-idris.min.js index 1de39a3076..5e2bd727ab 100644 --- a/components/prism-idris.min.js +++ b/components/prism-idris.min.js @@ -1 +1 @@ -Prism.languages.idris=Prism.languages.extend("haskell",{comment:{pattern:/(?:(?:--|\|\|\|).*$|\{-[\s\S]*?-\})/m},keyword:/\b(?:Type|case|class|codata|constructor|corecord|data|do|dsl|else|export|if|implementation|implicit|import|impossible|in|infix|infixl|infixr|instance|interface|let|module|mutual|namespace|of|parameters|partial|postulate|private|proof|public|quoteGoal|record|rewrite|syntax|then|total|using|where|with)\b/,"import-statement":{pattern:/(^\s*)import\s+(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*/m,lookbehind:!0},builtin:void 0}),Prism.languages.idr=Prism.languages.idris; \ No newline at end of file +Prism.languages.idris=Prism.languages.extend("haskell",{comment:{pattern:/(?:(?:--|\|\|\|).*$|\{-[\s\S]*?-\})/m},keyword:/\b(?:Type|case|class|codata|constructor|corecord|data|do|dsl|else|export|if|implementation|implicit|import|impossible|in|infix|infixl|infixr|instance|interface|let|module|mutual|namespace|of|parameters|partial|postulate|private|proof|public|quoteGoal|record|rewrite|syntax|then|total|using|where|with)\b/,builtin:void 0}),Prism.languages.insertBefore("idris","keyword",{"import-statement":{pattern:/(^\s*import\s+)(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*/m,lookbehind:!0,inside:{punctuation:/\./}}}),Prism.languages.idr=Prism.languages.idris; \ No newline at end of file diff --git a/tests/languages/idris/import_statement_feature.test b/tests/languages/idris/import_statement_feature.test index 5554b07990..8652944543 100644 --- a/tests/languages/idris/import_statement_feature.test +++ b/tests/languages/idris/import_statement_feature.test @@ -1,10 +1,18 @@ import Foo +import Maths.NumOps ---------------------------------------------------- [ ["keyword", "import"], - ["constant", ["Foo"]] + ["import-statement", ["Foo"]], + + ["keyword", "import"], + ["import-statement", [ + "Maths", + ["punctuation", "."], + "NumOps" + ]] ] ---------------------------------------------------- diff --git a/tests/languages/idris/keyword_feature.test b/tests/languages/idris/keyword_feature.test index 6a3c0f72d4..476bc8d128 100644 --- a/tests/languages/idris/keyword_feature.test +++ b/tests/languages/idris/keyword_feature.test @@ -1,17 +1,93 @@ -case data do else if implementation -in infixl infixr interface let -module of then where +Type +case +class +codata +constructor +corecord +data +do +dsl +else +export +if +implementation +implicit +import +impossible +in +infix +infixl +infixr +instance +interface +let +module +mutual +namespace +of +parameters +partial +postulate +private +proof +public +quoteGoal +record +rewrite +syntax +then +total +using +where +with ---------------------------------------------------- [ - ["keyword", "case"], ["keyword", "data"], ["keyword", "do"], - ["keyword", "else"], ["keyword", "if"], ["keyword", "implementation"], - ["keyword", "in"], ["keyword", "infixl"], ["keyword", "infixr"], - ["keyword", "interface"], ["keyword", "let"], ["keyword", "module"], - ["keyword", "of"], ["keyword", "then"], ["keyword", "where"] + ["keyword", "Type"], + ["keyword", "case"], + ["keyword", "class"], + ["keyword", "codata"], + ["keyword", "constructor"], + ["keyword", "corecord"], + ["keyword", "data"], + ["keyword", "do"], + ["keyword", "dsl"], + ["keyword", "else"], + ["keyword", "export"], + ["keyword", "if"], + ["keyword", "implementation"], + ["keyword", "implicit"], + ["keyword", "import"], + ["keyword", "impossible"], + ["keyword", "in"], + ["keyword", "infix"], + ["keyword", "infixl"], + ["keyword", "infixr"], + ["keyword", "instance"], + ["keyword", "interface"], + ["keyword", "let"], + ["keyword", "module"], + ["keyword", "mutual"], + ["keyword", "namespace"], + ["keyword", "of"], + ["keyword", "parameters"], + ["keyword", "partial"], + ["keyword", "postulate"], + ["keyword", "private"], + ["keyword", "proof"], + ["keyword", "public"], + ["keyword", "quoteGoal"], + ["keyword", "record"], + ["keyword", "rewrite"], + ["keyword", "syntax"], + ["keyword", "then"], + ["keyword", "total"], + ["keyword", "using"], + ["keyword", "where"], + ["keyword", "with"] ] ---------------------------------------------------- -Checks for some keywords. \ No newline at end of file +Checks for some keywords.