From 7c142907ee0f636aee8bc914a4d6c3615dc8bf3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristoffer=20Bj=C3=A4rkefur?= Date: Mon, 20 May 2024 08:25:50 -0400 Subject: [PATCH 1/3] Add note on which stata.trk and no date in stata.trk file --- src/ado/repadolog.ado | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ado/repadolog.ado b/src/ado/repadolog.ado index dff3762..bd3bdde 100644 --- a/src/ado/repadolog.ado +++ b/src/ado/repadolog.ado @@ -54,6 +54,9 @@ qui { local trkfile "`trkfolder'/stata.trk" } + + noi di as text _n "{pstd}Using {bf:stata.trk} file found at location {bf:`trkfolder'/}{p_end}" + ************************ * Handle csv output options @@ -149,7 +152,7 @@ qui { if (substr(`"`macval(line)'"',1,2) == "e") { * Distribution date is options, explicitly set N/A when missing - if missing("`distdate'") local distdate "N/A" + if missing("`distdate'") local distdate "No date in stata.trk" local commands = trim(subinstr("`commands'",",","",1)) From 0eaa0d8edd08e8fa994118ca5e290eb675717780 Mon Sep 17 00:00:00 2001 From: Benjamin Daniels Date: Wed, 26 Jun 2024 13:27:03 -0400 Subject: [PATCH 2/3] Catch command better Get loop index correctly Solve #38 --- src/ado/reprun.ado | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/ado/reprun.ado b/src/ado/reprun.ado index 3b56b85..e6f6b6d 100644 --- a/src/ado/reprun.ado +++ b/src/ado/reprun.ado @@ -255,18 +255,33 @@ end * Not part of a multiline line else { - *Reset the last line local + * Reset the last line locals local last_line = "" local line_command = "OTHER" local dofile "" local doflag 0 + local looptype "" + local loopflag 0 + + * Parse the line commands foreach w in `macval(line)' { get_command, word("`w'") + if `doflag' == 1 local dofile = "`w'" + if `loopflag' == 1 local looptype = "`w'" + + * Dofiles if "`r(command)'" == "do" | "`r(command)'" == "run" { local doflag = 1 } else local doflag 0 + + * Loops + if "`r(command)'" == "foreach" | "`r(command)'" == "forvalues" { + local loopflag = 1 + } + else local loopflag 0 + local line_command = "`line_command' `r(command)'" } local line_command : list uniq line_command @@ -357,15 +372,20 @@ end * Write foreach/forvalues to block stack and * it's macro name to loop stack - if (strpos("`line_command'","foreach")) | (strpos("`line_command'","forvalues")) { - local block_stack "`line_command' `block_stack' " - local loop_stack = trim("`loop_stack' `secondw'") + if (strpos("`line_command'","foreach")) { + local block_stack "foreach `block_stack' " + local loop_stack = trim("`loop_stack' `looptype'") + } + + if (strpos("`line_command'","forvalues")) { + local block_stack "forvalues `block_stack' " + local loop_stack = trim("`loop_stack' `looptype'") } * Write while to block stack and * also "while" to loop stack as it does not have a macro name if strpos("`line_command'","while") { - local block_stack "`line_command' `block_stack' " + local block_stack "while `block_stack' " local loop_stack = trim("`loop_stack' `line_command'") } } From 66faf1f9a30654feb9f97b6b0d24401aa4ec97a2 Mon Sep 17 00:00:00 2001 From: Benjamin Daniels Date: Wed, 26 Jun 2024 13:32:13 -0400 Subject: [PATCH 3/3] Handle while --- src/ado/reprun.ado | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ado/reprun.ado b/src/ado/reprun.ado index e6f6b6d..ef2106e 100644 --- a/src/ado/reprun.ado +++ b/src/ado/reprun.ado @@ -386,7 +386,7 @@ end * also "while" to loop stack as it does not have a macro name if strpos("`line_command'","while") { local block_stack "while `block_stack' " - local loop_stack = trim("`loop_stack' `line_command'") + local loop_stack = trim("`loop_stack' while") } }