From 8e9a7e72e6cfec4dbc8790ba573e0d312a1fa77c Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Mon, 18 Nov 2024 08:16:59 +0100 Subject: [PATCH] Add support for Ballerina language --- languages.json | 8 ++++++++ tests/data/ballerina.bal | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 tests/data/ballerina.bal diff --git a/languages.json b/languages.json index 97f741966..2b387f628 100644 --- a/languages.json +++ b/languages.json @@ -133,6 +133,14 @@ "shebangs": ["#!/bin/awk -f"], "extensions": ["awk"] }, + "Ballerina": { + "line_comment": ["//", "#"], + "quotes": [ + ["\\\"", "\\\""], + ["`", "`"] + ], + "extensions": ["bal"] + }, "Bash": { "name": "BASH", "shebangs": ["#!/bin/bash"], diff --git a/tests/data/ballerina.bal b/tests/data/ballerina.bal new file mode 100644 index 000000000..d3bd8ade6 --- /dev/null +++ b/tests/data/ballerina.bal @@ -0,0 +1,40 @@ +// 40 lines 29 code 6 comments 5 blanks + +# Returns Bob's response to someone talking to him. +# +# + input - whatever is said to Bob +# + return - Bob's response +public function hey(string input) returns string { + string trimmed = input.trim(); + boolean silent = isSilence(trimmed); + boolean asking = isQuestion(trimmed); + boolean yelling = isYelling(trimmed); + + match [silent, yelling, asking] { + [true, _, _] => { + return "Fine. Be that way!"; + } + [_, true, true] => { + return "Calm down, I know what I'm doing!"; + } + [_, true, false] => { + return "Whoa, chill out!"; + } + [_, false, true] => { + return "Sure."; + } + _ => { + return "Whatever."; + } + } +} + +isolated function isSilence(string input) returns boolean => input.length() == 0; + +isolated function isQuestion(string input) returns boolean => input.endsWith("?"); + +function isYelling(string input) returns boolean { + // contains an uppercase letter and does not contain a lowercase letter + return input.includesMatch(re `\p{Lu}`) + && !input.includesMatch(re `\p{Ll}`); +}