githelper.git/
githelper.pike
Branch:
Tag:
Non-build tags
All tags
No tags
2010-09-05
2010-09-05 15:15:04 by Marcus Comstedt <marcus@mc.pp.se>
80f91d42f29e7ae7d4bed8881bf48f28a76d7b8f (
38
lines) (+
33
/-
5
)
[
Show
|
Annotate
]
Branch:
master
Nice, but ultimately useless, ident filter finished...
50:
int hook(string ... args) { write("post-checkout %O\n", args);
+
return 0;
} }
57:
class NiceIdentFilter {
-
int
clean
(string ...
args
)
+
static string replace_id(string f, function(string:string) replace) {
+
int
p=0;
+
while
(
(p=search(f, "$Id", p)) >= 0) {
+
int p2 = search(f, "$", p+3), p3 = search(f, "\n", p+3);
+
if (p2 > p && p2 < p3) {
+
string
r = replace(f[p
..
p2]);
+
if (r) {
+
f = f[
.
.p-1]+r+f[p2+1..];
+
p += sizeof(r
)
;
+
} else p = p2+1;
+
} else p += 3;
+
}
+
return f;
+
}
+
+
static string clean_ident(string i)
{
-
werror
("
clean
%O\n
"
,
args
)
;
-
Process.system(
"
cat
"
)
;
+
if
(
has_prefix(i,
"
$Id:")
&& sizeof(i/
"
"
)
==3)
+
return
"
$Id$
";
}
-
+
static string smudge_ident(string i)
+
{
+
return "$Id$";
+
}
+
+
int clean()
+
{
+
write(replace_id(Stdio.stdin->read(), clean_ident));
+
return 0;
+
}
+
int smudge(string ... args) {
-
werror
(
"smudge %O\n"
,
args
);
-
Process.system("cat")
;
+
write
(
replace_id(Stdio.stdin->read()
,
smudge_ident
)
)
;
+
return 0
;
} }