From: Kornel Benko Date: Fri, 17 Nov 2017 16:53:52 +0000 (+0100) Subject: Cmake export tests: Use pre-compiled regular expressions X-Git-Tag: lyx-2.4.0dev-acb2ca7b~4373 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=597dcbb5;p=features.git Cmake export tests: Use pre-compiled regular expressions The expressions are used for determining the used external files in a lyx-source. Using pre-compiled expr makes it more readable. --- diff --git a/development/autotests/export.cmake b/development/autotests/export.cmake index fc63cd47c8..0b7da097c2 100755 --- a/development/autotests/export.cmake +++ b/development/autotests/export.cmake @@ -56,6 +56,7 @@ if(format MATCHES "dvi|pdf") if(NOT "${ENCODING}" STREQUAL "default") # message(STATUS "ENCODING = ${ENCODING}") endif() + message(STATUS "Executing ${PERL_EXECUTABLE} \"${Perl_Script}\" \"${LYX_ROOT}/${file}.lyx\" \"${LYX_SOURCE}\" ${format} ${_ft} ${ENCODING} ${LanguageFile}") execute_process(COMMAND ${PERL_EXECUTABLE} "${Perl_Script}" "${LYX_ROOT}/${file}.lyx" "${LYX_SOURCE}" ${format} ${_ft} ${ENCODING} ${LanguageFile} RESULT_VARIABLE _err) string(COMPARE EQUAL ${_err} 0 _erg) diff --git a/development/autotests/lyxStatus.pm b/development/autotests/lyxStatus.pm index d1c5b56b8e..ce4c85d8b4 100644 --- a/development/autotests/lyxStatus.pm +++ b/development/autotests/lyxStatus.pm @@ -144,6 +144,13 @@ sub newMatch(%) if (! defined($elem{"fileidx"})) { $elem{"fileidx"} = 1; } + if (exists($elem{"search"})) { + my $ref = ref($elem{"search"}); + diestack("Wrong or invalid regex (ref == $ref) specified") if ($ref ne "Regexp"); + } + else { + diestack("No search defined"); + } diestack("No result defined") if (! defined($elem{"result"})); return(\%elem); } @@ -193,32 +200,32 @@ sub checkForHeader($) $selem{name} = $1; unshift(@stack, \%selem); my @rElems = (); - $rElems[0] = newMatch("search" => '^\\\\master\s+(.*\.lyx)', + $rElems[0] = newMatch("search" => qr/^\\master\s+(.*\.lyx)/, "filetype" => "prefix_only", "result" => ["\\master ", ""]); if (keys %{$rFont}) { for my $ff ( keys %{$rFont}) { # fontentry of type '\font_roman default' - my $elem = newMatch("search" => '^\\\\font_' . $ff . '\s+[^"]*\s*$', + my $elem = newMatch("search" => qr/^\\font_$ff\s+[^\"]*\s*$/, "filetype" => "replace_only", "result" => ["\\font_$ff ", $rFont->{$ff}]); # fontentry of type '\font_roman "default"' - my $elem1 = newMatch("search" => '^\\\\font_' . $ff . '\s+"[^"]*"\s*$', + my $elem1 = newMatch("search" => qr/^\\font_$ff\s+\"[^\"]*\"\s*$/, "filetype" => "replace_only", "result" => ["\\font_$ff \"", $rFont->{$ff}, '"']); # fontentry of type '\font_roman "default" "default"' - my $elem2 = newMatch("search" => '^\\\\font_' . $ff . '\s+"(.*)"\s+"default"\s*$', + my $elem2 = newMatch("search" => qr/^\\font_$ff\s+\"(.*)\"\s+\"default\"\s*$/, "filetype" => "replace_only", "result" => ["\\font_$ff ", '"', "1", '" "', $rFont->{$ff}, '"']); push(@rElems, $elem, $elem1, $elem2); } } - my $elemntf = newMatch("search" => '^\\\\use_non_tex_fonts\s+(false|true)', + my $elemntf = newMatch("search" => qr/^\\use_non_tex_fonts\s+(false|true)/, "filetype" => "replace_only", "result" => ["\\use_non_tex_fonts $useNonTexFont"]); push(@rElems, $elemntf); if (defined($inputEncoding)) { - my $inputenc = newMatch("search" => '^\\\\inputencoding\s+(' . $inputEncoding->{search} . ')', + my $inputenc = newMatch("search" => qr/^\\inputencoding\s+($inputEncoding->{search})/, "filetype" => "replace_only", "result" => ["\\inputencoding " . $inputEncoding->{out}]); push(@rElems, $inputenc); @@ -239,12 +246,12 @@ sub checkForPreamble($) $selem{name} = $1; unshift(@stack, \%selem); my $rElem = newMatch("ext" => [".eps", ".png"], - "search" => '^\\\\(photo|ecvpicture)(.*\{)(.*)\}', + "search" => qr/^\\(photo|ecvpicture)(.*\{)(.*)\}/, "fileidx" => 3, "result" => ["\\", "1", "2", "3", "}"]); # # Remove comments from preamble - my $comments = newMatch("search" => '^([^%]*)([%]+)([^%]*)$', + my $comments = newMatch("search" => qr/^([^%]*)([%]+)([^%]*)$/, "filetype" => "replace_only", "result" => ["1", "2"]); setMatching([$rElem, $comments]); @@ -265,7 +272,7 @@ sub checkForLayoutStart($) unshift(@stack, \%selem); if ($selem{name} =~ /^(Picture|Photo)$/ ) { my $rElem = newMatch("ext" => [".eps", ".png"], - "search" => '^(.+)', + "search" => qr/^(.+)/, "result" => ["", "", ""]); setMatching([$rElem]); } @@ -285,7 +292,7 @@ sub checkForInsetStart($) $selem{name} = $1; unshift(@stack, \%selem); if ($selem{name} =~ /^(Graphics|External)$/) { - my $rElem = newMatch("search" => '^\s+filename\s+(.+)$', + my $rElem = newMatch("search" => qr/^\s+filename\s+(.+)$/, "filetype" => "copy_only", "result" => ["\tfilename ", "", ""]); setMatching([$rElem]); @@ -306,24 +313,24 @@ sub checkForLatexCommand($) if ($param eq "bibtex") { my $rElem1 = newMatch("ext" => ".bib", "filetype" => "prefix_for_list", - "search" => '^bibfiles\s+\"(.+)\"', + "search" => qr/^bibfiles\s+\"(.+)\"/, "result" => ["bibfiles \"", "1", "\""]); my $rElem2 = newMatch("ext" => ".bst", "filetype" => "prefix_for_list", - "search" => '^options\s+\"(.+)\"', + "search" => qr/^options\s+\"(.+)\"/, "result" => ["options \"", "1", "\""]); setMatching([$rElem1, $rElem2]); } } elsif ($stack[0]->{name} =~ /^CommandInset\s+include$/) { if ($param =~ /^(verbatiminput\*?|lstinputlisting|inputminted)$/) { - my $rElem = newMatch("search" => '^filename\s+\"(.+)\"', + my $rElem = newMatch("search" => qr/^filename\s+\"(.+)\"/, "filetype" => "copy_only", "result" => ["filename \"", "", "\""]); setMatching([$rElem]); } elsif ($param =~ /^(include|input)$/) { - my $rElem = newMatch("search" => '^filename\s+\"(.+)\"', + my $rElem = newMatch("search" => qr/^filename\s+\"(.+)\"/, "filetype" => "interpret", "result" => ["filename \"", "", "\""]); setMatching([$rElem]); @@ -358,7 +365,7 @@ sub checkLyxLine($) my $rMatch = getMatching(); for my $m ( @{$rMatch}) { my $search = getSearch($m); - if ($l =~ /$search/) { + if ($l =~ $search) { my @matches = ($1, $2, $3, $4); my $filetype = getFileType($m); my @result2 = @{getResult($m)};