GitX v0.4.1
[GitX.git] / PBGitRevSpecifier.m
blobf18b1297e09958bdacb0e1dbf0115cde3bd61daa
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 + (PBGitRevSpecifier *)allBranchesRevSpec
32         id revspec = [[PBGitRevSpecifier alloc] initWithParameters:[NSArray arrayWithObject:@"--all"]];
33         [revspec setDescription:@"All branches"];
34         return revspec;
36         
37 - (BOOL) isSimpleRef
39         return ([parameters count] == 1 && ![[parameters objectAtIndex:0] hasPrefix:@"-"]);
42 - (NSString*) simpleRef
44         if (![self isSimpleRef])
45                 return nil;
46         return [parameters objectAtIndex:0];
49 - (NSString*) description
51         if (description)
52                 return description;
53         
54         return [parameters componentsJoinedByString:@" "];
57 - (BOOL) hasPathLimiter;
59         for (NSString* param in parameters)
60                 if ([param isEqualToString:@"--"])
61                         return YES;
62         return NO;
65 - (BOOL) hasLeftRight
67         for (NSString* param in parameters)
68                 if ([param isEqualToString:@"--left-right"])
69                         return YES;
70         return NO;
72         
73 - (BOOL) isEqualTo: (PBGitRevSpecifier*) other
75         if ([self isSimpleRef] ^ [other isSimpleRef])
76                 return NO;
77         
78         if ([self isSimpleRef])
79                 return [[[self parameters] objectAtIndex: 0] isEqualToString: [other.parameters objectAtIndex: 0]];
81         return ([[parameters componentsJoinedByString:@" "] isEqualToString: [other.parameters componentsJoinedByString:@" "]] &&
82                          (!description  || [description isEqualToString:other.description]));
84 @end