From c1115556bfacae3e79f4f85f3d0a770be01980c0 Mon Sep 17 00:00:00 2001 From: "Kobayasi, Hiroaki" Date: Thu, 21 Mar 2019 23:30:07 +0900 Subject: [PATCH] For [GH #161] - extract_statement_list --- Lite/LanguageServer/SpecParser.pm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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) = @_;