forked from pharo-project/pharo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
PRReference.class.st
122 lines (100 loc) · 2.64 KB
/
PRReference.class.st
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
"
I'm a reference. I can be a Link or a Figure. Later i could be a video for example.
"
Class {
#name : #PRReference,
#superclass : #PRDocumentGroup,
#traits : 'PRTParametrizable',
#classTraits : 'PRTParametrizable classTrait',
#instVars : [
'reference',
'parameters'
],
#category : #'Pillar-Core-Model'
}
{ #category : #testing }
PRReference class >> isValidReference: aString [
self subclassResponsibility
]
{ #category : #private }
PRReference class >> localFileOrExternalReference: aString [
| localFileIndicator |
localFileIndicator := 'file://'.
^ (aString beginsWith: localFileIndicator)
ifTrue: [ aString allButFirst: localFileIndicator size ]
ifFalse: [ aString ]
]
{ #category : #'instance creation' }
PRReference class >> reference: aString [
^ self new
reference: aString;
yourself
]
{ #category : #comparing }
PRReference >> = anObject [
^ super = anObject and: [ self reference = anObject reference and: [ self parameters = anObject parameters ] ]
]
{ #category : #visiting }
PRReference >> accept: aVisitor [
<ignoreForCoverage "This method is ignored for test coverage because it is overriden in all subclasses and these subclasses don't need to do a super-send.">
^ aVisitor visitReference: self
]
{ #category : #'accessing-dynamic' }
PRReference >> alias [
"Answer the alias of the receiver or an empty string if none."
^ self text
]
{ #category : #testing }
PRReference >> hasAlias [
^ self hasChildren
]
{ #category : #testing }
PRReference >> hasAnchor [
^ false
]
{ #category : #comparing }
PRReference >> hash [
^ super hash bitXor: self reference hash
]
{ #category : #initialization }
PRReference >> initialize [
super initialize.
self parameters: OrderedDictionary new
]
{ #category : #accessing }
PRReference >> localFileOrExternalReference [
^ self class localFileOrExternalReference: self reference
]
{ #category : #'accessing-parameters' }
PRReference >> parameters [
"Answer an array of parameters."
^ parameters
]
{ #category : #accessing }
PRReference >> parameters: aCollection [
parameters := aCollection
]
{ #category : #copying }
PRReference >> postCopy [
super postCopy.
self parameters: (self parameters
collect: [ :each | each copy ])
]
{ #category : #accessing }
PRReference >> reference [
"Answer the reference of the receiver."
^ reference
]
{ #category : #accessing }
PRReference >> reference: aString [
reference := aString
]
{ #category : #'accessing-dynamic' }
PRReference >> text [
^ super text ifEmpty: [ self reference ] ifNotEmpty: #yourself
]
{ #category : #accessing }
PRReference >> title [
"Answer a title of the reference, this is should never be nil."
^ self reference
]