-
Notifications
You must be signed in to change notification settings - Fork 0
/
RegExText.m
137 lines (110 loc) · 2.56 KB
/
RegExText.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
//
// RegExText.m
// RegExhibit
//
// Copyright 2007 Roger Jolly. All rights reserved.
//
// This class is used to store either the positions on which a string (match, capture) begins and ends or the text of a replacementstring.
//
#import "RegExText.h"
@implementation RegExText
#pragma mark-
#pragma mark Initialisation
- (id) init
{
self = [super init];
if (self != nil) {
containsPositions = FALSE;
}
return self;
}
#pragma mark-
#pragma mark Accessors
- (void) setBeginPosition: (int) position
{
beginPosition = position;
[self setContainsPositions: TRUE];
}
- (int) beginPosition
{
return beginPosition;
}
- (void) setEndPosition: (int) position
{
endPosition = position;
[self setContainsPositions: TRUE];
}
- (int) endPosition
{
return endPosition;
}
- (void) setBeginPosition: (int) startPosition endPosition: (int) stopPosition
{
[self setBeginPosition: startPosition];
[self setEndPosition: stopPosition];
[self setContainsPositions: TRUE];
}
- (void) setContainsPositions: (BOOL) positionsSet
{
containsPositions = positionsSet;
}
- (BOOL) containsPositions
{
return containsPositions;
}
- (void) setTheText: (NSString *) newText
{
[newText retain];
[theText release];
theText = newText;
[self setContainsPositions: FALSE];
}
- (NSString *) theText
{
return theText;
}
#pragma mark-
#pragma mark Other methods
- (NSString *) displayWithSource: (NSString *) sourceText
{
return [self displayInOutlineWithSource: sourceText];
}
- (NSString *) displayInOutlineWithSource: (NSString *) sourceText
// Use when object is to be called from a NSOutlineView-datasource.
{
NSString *returnString;
if ((containsPositions) && ([self beginPosition] != -1)) {
returnString = [[NSString alloc]initWithString: [sourceText substringWithRange: [self range]]];
[returnString autorelease];
return returnString;
} else if (containsPositions) { // beginPosition = -1, meaning the text is undef in Perl.
return @"\0";
} else {
return [self theText];
}
}
- (int) numberOfChildrenShowingReplacements: (BOOL) showReplacements
// Use when object is to be called from a NSOutlineView-datasource.
{
return 0;
}
- (NSRange) range
// Thanks to Brian Bergstrand (http://www.bergstrand.org/brian/) for fixing this up.
{
int begin = [self beginPosition];
int end = [self endPosition];
if (end >= begin) {
return NSMakeRange(begin, end - begin);
} else {
NSLog (@"Error: Begin of range bigger than end of range!");
return NSMakeRange(begin, 0);
}
}
#pragma mark-
#pragma mark Cleaning up
- (void) dealloc
{
[theText release];
[super dealloc];
}
@end