History fileview: select current item on rightclick
[GitX.git] / PBGitRevSpecifier.m
blobded85754ab9c1ba41a77fab644ed9f8b30de98e6
1 //
2 //  PBGitRevSpecifier.m
3 //  GitX
4 //
5 //  Created by Pieter de Bie on 12-09-08.
6 //  Copyright 2008 __MyCompanyName__. All rights reserved.
7 //
9 #import "PBGitRevSpecifier.h"
12 @implementation PBGitRevSpecifier
14 @synthesize parameters, description;
16 - (id) initWithParameters:(NSArray*) params
18         parameters = params;
19         description = nil;
20         return self;
23 - (id) initWithRef: (PBGitRef*) ref
25         parameters = [NSArray arrayWithObject: ref.ref];
26         description = ref.shortName;
27         return self;
30 - (id) initWithCoder:(NSCoder *)coder
32         parameters = [coder decodeObjectForKey:@"Parameters"];
33         description = [coder decodeObjectForKey:@"Description"];
34         return self;
37 + (PBGitRevSpecifier *)allBranchesRevSpec
39         id revspec = [[PBGitRevSpecifier alloc] initWithParameters:[NSArray arrayWithObject:@"--all"]];
40         [revspec setDescription:@"All branches"];
41         return revspec;
44 + (PBGitRevSpecifier *)localBranchesRevSpec
46         id revspec = [[PBGitRevSpecifier alloc] initWithParameters:[NSArray arrayWithObject:@"--branches"]];
47         [revspec setDescription:@"Local branches"];
48         return revspec;
50 - (BOOL) isSimpleRef
52         return ([parameters count] == 1 && ![[parameters objectAtIndex:0] hasPrefix:@"-"]);
55 - (NSString*) simpleRef
57         if (![self isSimpleRef])
58                 return nil;
59         return [parameters objectAtIndex:0];
62 - (NSString*) description
64         if (description)
65                 return description;
66         
67         return [parameters componentsJoinedByString:@" "];
70 - (BOOL) hasPathLimiter;
72         for (NSString* param in parameters)
73                 if ([param isEqualToString:@"--"])
74                         return YES;
75         return NO;
78 - (BOOL) hasLeftRight
80         for (NSString* param in parameters)
81                 if ([param isEqualToString:@"--left-right"])
82                         return YES;
83         return NO;
85         
86 - (BOOL) isEqualTo: (PBGitRevSpecifier*) other
88         if ([self isSimpleRef] ^ [other isSimpleRef])
89                 return NO;
90         
91         if ([self isSimpleRef])
92                 return [[[self parameters] objectAtIndex: 0] isEqualToString: [other.parameters objectAtIndex: 0]];
94         return ([[parameters componentsJoinedByString:@" "] isEqualToString: [other.parameters componentsJoinedByString:@" "]] &&
95                          (!description  || [description isEqualToString:other.description]));
98 - (void) encodeWithCoder:(NSCoder *)coder
100         [coder encodeObject:description forKey:@"Description"];
101         [coder encodeObject:parameters forKey:@"Parameters"];
103 @end