diff --git a/Lite/LanguageServer/SpecParser.pm b/Lite/LanguageServer/SpecParser.pm index b890e717..8ccbdf19 100755 --- a/Lite/LanguageServer/SpecParser.pm +++ b/Lite/LanguageServer/SpecParser.pm @@ -5,6 +5,25 @@ use warnings qw(FATAL all NONFATAL misc); use File::AddInc; use MOP4Import::Base::CLI_JSON -as_base; +sub extract_statement_list { + (my MY $self, my ($codeList)) = @_; + local $_; + my $wordRe = qr{[^\s{}]}; + my $groupRe = qr{( \{ (?: (?> [^{}]+) | (?-1) )* \} )}x; + my $commentRe = qr{/\*\*\n(?:.*?)\*/\n?}sx; + my @result; + foreach (@$codeList) { + while (m{ + \G(?$commentRe)? + (?(?:$wordRe+\s+)+) + (? $groupRe ) + }sgx) { + push @result, [$+{decl}, $+{comment}, $+{body}]; + } + } + @result; +} + # Lite/LanguageServer/SpecParser.pm --flatten --output=raw extract_codeblock typescript specification.md sub extract_codeblock { (my MY $self, my $langId, local @ARGV) = @_;