Cocoa hat ja Regex Support
Überraschend.
Das der so vollständig ist, hätte ich nicht erwartet. Aber in der Tat, ICU-Regexe in ihrer ganzen Pracht. Völlig ohne eine neue externe Dependency.
Laut der Dokumentation sollte das sogar in 10.4 schon funktionieren - mit dem einen Caveat, dass multiline Support dort wohl von Hand eingeschaltet werden muss (via (?m))
Sowas wird da möglich:
if ([@"aaa" matches:@"a{3}"])
NSLog(@"gotcha");
[@"argh fnord argh" matches:@".*\bfnord\b.*"];
[@"aaa" matches:@"\w{3}"];
Und das mit extrem wenig Aufwand:
@interface NSString (SimpleRegexMatching)
- (BOOL) matches:(NSString *)aRegex;
@end
@implementation NSString (SimpleRegexMatching)
- (BOOL) matches:(NSString *)aRegex;
{
id predicate = [NSPredicate predicateWithFormat:@"self matches %@", aRegex];
return [predicate evaluateWithObject:self];
}
@end
Ich bin beeindruckt.
Code hier
Die gegenwärtige Finanzkrise ist…
... eigentlich einfach zu verstehen.
Zum weglegen. :)
Darfs noch etwas mehr Atommüll sein?
Gerne auch Freihaus...
Extra 3 hat es mal wieder genagelt.
:-)
Aus einem Variablen-Namen einen String machen
Braucht man manchmal für Bindings. Gleichzeitig will ich aber nicht überall die namen meiner Variablen als Strings hinterlegen - schon alleine damit ich beim Refactorn auch alle Namen erwische.
Also den Macro-Prozessor zur Rettung:
#define NSStringize(aVariableName) @#aVariableName
- #
-
macht aus einer beliebigen expression einen String
- @
-
und das @ davor macht aus einem constanten c-string einen ObjC-NSString.
Und das problem ist gelöst. :)
_HiStOrY_V2_
Mit ein bisschen Hilfe von meinen Freunden...
Heute hab ich mal wieder die aktuelle Version von Bazaar (1.7.1) ausprobiert. Soweit ganz schnuckelig. Sogar der SVN Checkout von Adium hat hervorragend geklappt.
Ich muss sagen, beeindruckend.
Nur mit dem Plugin bzrtools hatte ich Schwierigkeiten, denn die darin enthaltene shell (ein geiles feature) zu benutzen brachte bzr reproduzierbar zum Absturz. :-(
Stellt sich mit hilfe von #bazaar und nach einigen Detours über den Python Debugger (nice!) und dtruss (nice!) heraus dass es an der libreadline liegt.
Die hat sich nämlich geändert und erwartet inzwischen am Anfang eines History-Files als allererste Zeile diesen eintrag: _HiStOrY_V2_.
Na toll. Und ansonsten stürzt das Programm einfach ab. Also wer sich das ausgedacht hat, der gehört aber auch echt erschossen. Wenigstens die Fehlermeldung hätte vernünftig sein können. Grumpf.