author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Mon, 02 Jul 2018 08:46:01 +0200 | |
changeset 305 | bad21c4f64bf |
parent 296 | ea3dbc023c80 |
permissions | -rw-r--r-- |
235 | 1 |
"{ Package: 'stx:goodies/xmlsuite/xquery' }" |
2 |
||
3 |
"{ NameSpace: XQuery }" |
|
4 |
||
5 |
Object subclass:#FunctionLibrary |
|
6 |
instanceVariableNames:'' |
|
7 |
classVariableNames:'' |
|
8 |
poolDictionaries:'' |
|
9 |
category:'XQuery-Functions' |
|
10 |
! |
|
11 |
||
12 |
||
13 |
!FunctionLibrary class methodsFor:'instance creation'! |
|
14 |
||
15 |
forURI: uriString |
|
16 |
||
17 |
^((self allSubclasses reject:[:cls|cls isAbstract]) |
|
18 |
detect:[:cls|cls namespaceURI = uriString] |
|
19 |
ifNone:[^nil]) new |
|
20 |
||
21 |
" |
|
22 |
XQuery::FunctionLibrary forURI: 'http://www.w3.org/2005/xpath-functions' |
|
23 |
" |
|
24 |
||
25 |
"Created: / 01-12-2008 / 10:04:30 / Jan Vrany <vranyj1@fel.cvut.cz>" |
|
26 |
! |
|
27 |
||
28 |
new |
|
29 |
^ self basicNew initialize. |
|
30 |
||
31 |
"Created: / 01-12-2008 / 11:29:34 / Jan Vrany <vranyj1@fel.cvut.cz>" |
|
32 |
! ! |
|
33 |
||
34 |
!FunctionLibrary class methodsFor:'function library API'! |
|
35 |
||
36 |
namespaceURI |
|
37 |
||
38 |
^self subclassResponsibility |
|
39 |
||
40 |
"Created: / 01-12-2008 / 10:02:49 / Jan Vrany <vranyj1@fel.cvut.cz>" |
|
41 |
! ! |
|
42 |
||
43 |
!FunctionLibrary class methodsFor:'testing'! |
|
44 |
||
45 |
isAbstract |
|
46 |
||
47 |
^self == XQuery::FunctionLibrary |
|
48 |
||
49 |
"Created: / 01-12-2008 / 10:04:50 / Jan Vrany <vranyj1@fel.cvut.cz>" |
|
50 |
! ! |
|
51 |
||
52 |
!FunctionLibrary class methodsFor:'utilities'! |
|
53 |
||
54 |
smalltalkize: localName |
|
55 |
||
56 |
"transforms distinct-values into disticntValues" |
|
57 |
| input output minusFound| |
|
58 |
input := localName readStream. |
|
59 |
output := (String new: localName size) writeStream. |
|
60 |
minusFound := false. |
|
61 |
[ input atEnd ] whileFalse: [ |
|
62 |
| c | |
|
63 |
c := input next. |
|
64 |
c = $- |
|
65 |
ifTrue: |
|
66 |
[minusFound := true] |
|
67 |
ifFalse: |
|
68 |
[minusFound |
|
69 |
ifTrue: |
|
70 |
[output nextPut:c asUppercase. |
|
71 |
minusFound := false] |
|
72 |
ifFalse: |
|
73 |
[output nextPut:c]]]. |
|
74 |
||
75 |
^output contents |
|
76 |
||
77 |
" |
|
78 |
self smalltalkize: 'doc' |
|
79 |
||
80 |
self smalltalkize: 'distinct-values' |
|
81 |
" |
|
82 |
||
83 |
"Created: / 19-01-2009 / 20:46:10 / Jan Vrany <vranyj1@fel.cvut.cz>" |
|
84 |
! ! |
|
85 |
||
86 |
!FunctionLibrary methodsFor:'function library API'! |
|
87 |
||
88 |
defaultPrefix |
|
89 |
||
90 |
^self subclassResponsibility |
|
91 |
||
92 |
"Created: / 29-08-2007 / 09:37:28 / janfrog" |
|
93 |
! |
|
94 |
||
241
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
95 |
evaluate: function inContext:context withParameters: parameters forInterpreter: interpreter |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
96 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
97 |
^self |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
98 |
perform:(function smalltalkizedLocalName, 'InContext:withParameters:forInterpreter:') asSymbol |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
99 |
with: context |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
100 |
with: parameters |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
101 |
with: interpreter |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
102 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
103 |
"Created: / 01-12-2008 / 10:18:29 / Jan Vrany <vranyj1@fel.cvut.cz>" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
104 |
! |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
105 |
|
235 | 106 |
functionLocalNames |
107 |
||
108 |
"Should return a collection of function local names" |
|
109 |
^self subclassResponsibility |
|
110 |
||
111 |
"Created: / 28-08-2007 / 23:06:40 / janfrog" |
|
112 |
"Modified: / 29-08-2007 / 09:29:15 / janfrog" |
|
113 |
! |
|
114 |
||
115 |
functions |
|
116 |
||
117 |
^self functionLocalNames collect: |
|
118 |
[:localName| |
|
246 | 119 |
XQuery::ExternalFunction new |
235 | 120 |
setFunctionLibrary: self; |
121 |
setLocalName: localName; |
|
122 |
yourself] |
|
123 |
||
124 |
"Created: / 28-08-2007 / 23:06:40 / janfrog" |
|
125 |
"Modified: / 01-12-2008 / 10:15:45 / Jan Vrany <vranyj1@fel.cvut.cz>" |
|
126 |
! |
|
127 |
||
128 |
namespaceURI |
|
129 |
^ self class namespaceURI |
|
130 |
||
131 |
"Created: / 01-12-2008 / 10:02:49 / Jan Vrany <vranyj1@fel.cvut.cz>" |
|
132 |
! ! |
|
133 |
||
134 |
!FunctionLibrary class methodsFor:'documentation'! |
|
135 |
||
241
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
136 |
version_SVN |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
137 |
^ '$Id$' |
235 | 138 |
! ! |