From d3463a7e6aaa3c026ca922ab89c7cd0360d2bd8d Mon Sep 17 00:00:00 2001 From: UbayGD Date: Sat, 8 Mar 2025 17:12:45 +0000 Subject: [PATCH] feat: add support for single line comments in JavaScript and TypeScript --- .../parser/single_line_comments.dart | 4 ++ test/src/code/code_read_only_test.dart | 52 +++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/lib/src/single_line_comments/parser/single_line_comments.dart b/lib/src/single_line_comments/parser/single_line_comments.dart index e23a10e4..fba5c1ec 100644 --- a/lib/src/single_line_comments/parser/single_line_comments.dart +++ b/lib/src/single_line_comments/parser/single_line_comments.dart @@ -2,9 +2,11 @@ import 'package:highlight/highlight_core.dart'; import 'package:highlight/languages/dart.dart'; import 'package:highlight/languages/go.dart'; import 'package:highlight/languages/java.dart'; +import 'package:highlight/languages/javascript.dart'; import 'package:highlight/languages/php.dart'; import 'package:highlight/languages/python.dart'; import 'package:highlight/languages/scala.dart'; +import 'package:highlight/languages/typescript.dart'; import 'package:highlight/languages/vhdl.dart'; class SingleLineComments { @@ -18,6 +20,8 @@ class SingleLineComments { python: [_hash], scala: [_slashes], vhdl: [_hyphenMinuses], + typescript: [_slashes], + javascript: [_slashes], }; static const _slashes = '//'; diff --git a/test/src/code/code_read_only_test.dart b/test/src/code/code_read_only_test.dart index 26e63df9..01aadd0d 100644 --- a/test/src/code/code_read_only_test.dart +++ b/test/src/code/code_read_only_test.dart @@ -3,6 +3,8 @@ import 'package:flutter_code_editor/src/named_sections/parsers/brackets_start_en import 'package:flutter_test/flutter_test.dart'; import 'package:highlight/languages/angelscript.dart'; import 'package:highlight/languages/java.dart'; +import 'package:highlight/languages/javascript.dart'; +import 'package:highlight/languages/typescript.dart'; final _language = java; @@ -102,5 +104,55 @@ public class MyClass { expected, ); }); + + test('Lines in read-only sections are read-only for JS/TS Language', () { + const text = ''' +export class MyTypeScriptClass { + run() { // [START section1] + } + // [END section1] + // [START section2] + method() { + } + // [END section2] +} +'''; + const expected = [ + false, + true, + true, + true, + false, + false, + false, + false, + false, + false, + ]; + + final codeTypescript = Code( + text: text, + namedSectionParser: const BracketsStartEndNamedSectionParser(), + readOnlySectionNames: {'section1', 'nonexistent'}, + language: typescript, + ); + + final codeJavascript = Code( + text: text, + namedSectionParser: const BracketsStartEndNamedSectionParser(), + readOnlySectionNames: {'section1', 'nonexistent'}, + language: javascript, + ); + + expect( + codeTypescript.lines.lines.map((line) => line.isReadOnly), + expected, + ); + + expect( + codeJavascript.lines.lines.map((line) => line.isReadOnly), + expected, + ); + }); }); }