97 lines
9.5 KiB
HTML
97 lines
9.5 KiB
HTML
<!DOCTYPE html>
|
|
<html><head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
<title>highlight.do</title>
|
|
<meta name="generator" content="KF5::SyntaxHighlighting - Definition (Stata) - Theme (Breeze Dark)"/>
|
|
</head><body style="background-color:#232629;color:#cfcfc2"><pre>
|
|
<span style="color:#7a7c7d">/* Test file for kate's stata syntax highlighting</span>
|
|
<span style="color:#7a7c7d">*/</span>
|
|
*! <span style="font-weight:bold">version</span> 1.2.0 2mar2003 E. Leuven
|
|
<span style="font-weight:bold">program</span> <span style="font-weight:bold">define</span> spellsplit
|
|
<span style="font-weight:bold">version</span> 7
|
|
<span style="font-weight:bold">syntax</span> [anything], spell(<span style="font-weight:bold">varlist</span> <span style="color:#8e44ad">min</span>=2 <span style="color:#8e44ad">max</span>=2) [ <span style="font-weight:bold">by</span>(<span style="font-weight:bold">varlist</span>)]
|
|
<span style="font-weight:bold">tokenize</span> <span style="color:#27ae60">`spell'</span>
|
|
<span style="font-weight:bold">local</span> date0 <span style="color:#27ae60">`1'</span>
|
|
<span style="font-weight:bold">local</span> date1 <span style="color:#27ae60">`2'</span>
|
|
<span style="font-weight:bold">local</span> f0 : <span style="font-weight:bold">format</span> <span style="color:#27ae60">`date0'</span>
|
|
<span style="font-weight:bold">local</span> f1 : <span style="font-weight:bold">format</span> <span style="color:#27ae60">`date1'</span>
|
|
|
|
<span style="color:#7a7c7d">/* set default statistic */</span>
|
|
<span style="font-weight:bold">local</span> current <span style="color:#f44f4f">"mean"</span>
|
|
|
|
gettoken left anything : anything, <span style="color:#8e44ad">match</span>(prns)
|
|
<span style="font-weight:bold">while</span> <span style="color:#f44f4f">"`left'"</span>!=<span style="color:#f44f4f">""</span> {
|
|
<span style="font-weight:bold">if</span> <span style="color:#f44f4f">"`prns'"</span>!=<span style="color:#f44f4f">""</span> {
|
|
<span style="font-weight:bold">if</span> !<span style="color:#8e44ad">inlist</span>(<span style="color:#f44f4f">"`left'"</span>,<span style="color:#f44f4f">"mean"</span>,<span style="color:#f44f4f">"sum"</span>) {
|
|
<span style="font-weight:bold">di</span> <span style="font-weight:bold">as</span> <span style="font-weight:bold">error</span> <span style="color:#f44f4f">"Statistic `left' not supported"</span>
|
|
<span style="font-weight:bold">exit</span> 198
|
|
}
|
|
<span style="font-weight:bold">local</span> current <span style="color:#f44f4f">"`left'"</span>
|
|
}
|
|
<span style="font-weight:bold">else</span> {
|
|
<span style="font-weight:bold">local</span> <span style="color:#27ae60">`current'</span>vars <span style="color:#27ae60">``current'</span>vars' <span style="color:#27ae60">`left'</span>
|
|
}
|
|
gettoken left anything : anything, <span style="color:#8e44ad">match</span>(prns)
|
|
}
|
|
<span style="font-weight:bold">if</span> (<span style="color:#f44f4f">"`meanvars'"</span>!=<span style="color:#f44f4f">""</span>) {
|
|
<span style="font-weight:bold">confirm</span> <span style="font-weight:bold">var</span> <span style="color:#27ae60">`meanvars'</span>
|
|
<span style="font-weight:bold">unab</span> meanvars : <span style="color:#27ae60">`meanvars'</span>
|
|
}
|
|
<span style="font-weight:bold">if</span> (<span style="color:#f44f4f">"`sumvars'"</span>!=<span style="color:#f44f4f">""</span>) {
|
|
<span style="font-weight:bold">confirm</span> <span style="font-weight:bold">var</span> <span style="color:#27ae60">`sumvars'</span>
|
|
<span style="font-weight:bold">unab</span> sumvars : <span style="color:#27ae60">`sumvars'</span>
|
|
}
|
|
|
|
<span style="font-weight:bold">quietly</span> {
|
|
g _count = 1
|
|
<span style="font-weight:bold">local</span> xvars <span style="color:#27ae60">`meanvars'</span> <span style="color:#27ae60">`sumvars'</span> _count
|
|
|
|
<span style="color:#7a7c7d">/* create dummy by-var if no by option is specified */</span>
|
|
<span style="font-weight:bold">if</span> <span style="color:#f44f4f">"`by'"</span>==<span style="color:#f44f4f">""</span> {
|
|
<span style="font-weight:bold">tempvar</span> <span style="font-weight:bold">by</span>
|
|
g <span style="font-weight:bold">byte</span> <span style="color:#27ae60">`by'</span> = 1
|
|
}
|
|
<span style="font-weight:bold">tempvar</span> <span style="color:#27ae60">`xvars'</span> <span style="color:#27ae60">`by'</span>
|
|
|
|
<span style="color:#7a7c7d">/* create negative for subtraction when spell ends */</span>
|
|
cap <span style="font-weight:bold">foreach</span> v <span style="font-weight:bold">of</span> <span style="font-weight:bold">varlist</span> <span style="color:#27ae60">`xvars'</span> {
|
|
g <span style="font-weight:bold">double</span> <span style="color:#27ae60">``v'</span>' = -<span style="color:#27ae60">`v'</span>
|
|
<span style="font-weight:bold">local</span> txvars <span style="color:#27ae60">`txvars'</span> <span style="color:#27ae60">``v'</span>'
|
|
}
|
|
cap <span style="font-weight:bold">foreach</span> v <span style="font-weight:bold">of</span> <span style="font-weight:bold">varlist</span> <span style="color:#27ae60">`by'</span> {
|
|
g <span style="font-weight:bold">double</span> <span style="color:#27ae60">``v'</span>' = <span style="color:#27ae60">`v'</span>
|
|
<span style="font-weight:bold">local</span> txvars <span style="color:#27ae60">`txvars'</span> <span style="color:#27ae60">``v'</span>'
|
|
}
|
|
|
|
<span style="font-weight:bold">stack</span> <span style="color:#27ae60">`date0'</span> <span style="color:#27ae60">`xvars'</span> <span style="color:#27ae60">`by'</span> <span style="color:#27ae60">`date1'</span> <span style="color:#27ae60">`txvars'</span>, into(<span style="color:#27ae60">`date0'</span> <span style="color:#27ae60">`xvars'</span> <span style="color:#27ae60">`by'</span>) <span style="font-weight:bold">clear</span>
|
|
|
|
<span style="color:#7a7c7d">/* calculate totals per date */</span>
|
|
cap <span style="font-weight:bold">foreach</span> v <span style="font-weight:bold">of</span> <span style="font-weight:bold">varlist</span> <span style="color:#27ae60">`xvars'</span> {
|
|
<span style="font-weight:bold">egen</span> <span style="font-weight:bold">double</span> <span style="color:#27ae60">``v'</span>' = <span style="font-weight:bold">sum</span>(<span style="color:#27ae60">`v'</span>), <span style="font-weight:bold">by</span>(<span style="color:#27ae60">`by'</span> <span style="color:#27ae60">`date0'</span>)
|
|
}
|
|
|
|
<span style="color:#7a7c7d">/* unique dates only */</span>
|
|
<span style="font-weight:bold">by</span> <span style="color:#27ae60">`by'</span> <span style="color:#27ae60">`date0'</span>, <span style="font-weight:bold">sort</span>: <span style="font-weight:bold">keep</span> <span style="font-weight:bold">if</span> <span style="color:#2980b9">_n</span>==1
|
|
|
|
<span style="color:#7a7c7d">/* calculate totals (+ when spell starts - when ends) */</span>
|
|
<span style="font-weight:bold">sort</span> <span style="color:#27ae60">`by'</span>
|
|
cap <span style="font-weight:bold">foreach</span> v <span style="font-weight:bold">of</span> <span style="font-weight:bold">varlist</span> <span style="color:#27ae60">`xvars'</span> {
|
|
<span style="font-weight:bold">by</span> <span style="color:#27ae60">`by'</span>: <span style="font-weight:bold">replace</span> <span style="color:#27ae60">`v'</span> = <span style="font-weight:bold">sum</span>(<span style="color:#27ae60">``v'</span>')
|
|
}
|
|
<span style="font-weight:bold">by</span> <span style="color:#27ae60">`by'</span>: g <span style="color:#27ae60">`date1'</span> = <span style="color:#27ae60">`date0'</span>[<span style="color:#2980b9">_n</span> + 1]
|
|
|
|
<span style="font-weight:bold">drop</span> <span style="font-weight:bold">if</span> <span style="color:#27ae60">`date0'</span>><span style="color:#27ae60">`date1'</span>
|
|
<span style="font-weight:bold">drop</span> _stack
|
|
<span style="font-weight:bold">drop</span> <span style="font-weight:bold">if</span> _count==0
|
|
<span style="font-weight:bold">order</span> <span style="color:#27ae60">`by'</span> <span style="color:#27ae60">`date0'</span> <span style="color:#27ae60">`date1'</span> <span style="color:#27ae60">`xvars'</span>
|
|
<span style="font-weight:bold">format</span> <span style="color:#27ae60">`date0'</span> <span style="color:#27ae60">`f0'</span>
|
|
<span style="font-weight:bold">format</span> <span style="color:#27ae60">`date1'</span> <span style="color:#27ae60">`f1'</span>
|
|
|
|
cap <span style="font-weight:bold">for</span> <span style="font-weight:bold">var</span> <span style="color:#27ae60">`meanvars'</span>: <span style="font-weight:bold">replace</span> X = X/_count
|
|
|
|
<span style="font-weight:bold">compress</span>
|
|
}
|
|
|
|
<span style="font-weight:bold">end</span>
|
|
</pre></body></html>
|