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 |
Function subclass:#ExternalFunction |
|
6 |
instanceVariableNames:'localName functionLibrary' |
|
7 |
classVariableNames:'' |
|
8 |
poolDictionaries:'' |
|
9 |
category:'XQuery-Functions' |
|
10 |
! |
|
11 |
||
12 |
||
241
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
13 |
!ExternalFunction class methodsFor:'utilities'! |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
14 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
15 |
smalltalkize: localName |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
16 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
17 |
"transforms distinct-values into disticntValues" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
18 |
| input output minusFound| |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
19 |
input := localName readStream. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
20 |
output := (String new: localName size) writeStream. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
21 |
minusFound := false. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
22 |
[ input atEnd ] whileFalse: [ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
23 |
| c | |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
24 |
c := input next. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
25 |
c = $- |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
26 |
ifTrue: |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
27 |
[minusFound := true] |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
28 |
ifFalse: |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
29 |
[minusFound |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
30 |
ifTrue: |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
31 |
[output nextPut:c asUppercase. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
32 |
minusFound := false] |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
33 |
ifFalse: |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
34 |
[output nextPut:c]]]. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
35 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
36 |
^output contents |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
37 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
38 |
" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
39 |
self smalltalkize: 'doc' |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
40 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
41 |
self smalltalkize: 'distinct-values' |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
42 |
" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
43 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
44 |
"Created: / 28-08-2007 / 23:35:25 / janfrog" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
45 |
! ! |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
46 |
|
235 | 47 |
!ExternalFunction methodsFor:'accessing'! |
48 |
||
49 |
functionLibrary |
|
50 |
^ functionLibrary |
|
51 |
||
52 |
"Created: / 28-08-2007 / 23:07:47 / janfrog" |
|
53 |
! |
|
54 |
||
241
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
55 |
smalltalkizedLocalName |
235 | 56 |
|
241
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
57 |
^self class smalltalkize: localName |
235 | 58 |
|
241
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
59 |
"Created: / 28-08-2007 / 23:35:44 / janfrog" |
235 | 60 |
! ! |
61 |
||
62 |
!ExternalFunction methodsFor:'function API'! |
|
63 |
||
241
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
64 |
evaluateInContext:context withParameters: parameters forInterpreter: interpreter |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
65 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
66 |
^functionLibrary |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
67 |
evaluate: self inContext:context withParameters: parameters forInterpreter: interpreter |
235 | 68 |
|
69 |
"Created: / 28-08-2007 / 23:10:46 / janfrog" |
|
241
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
70 |
"Modified: / 01-12-2008 / 10:17:41 / Jan Vrany <vranyj1@fel.cvut.cz>" |
235 | 71 |
! |
72 |
||
73 |
localName |
|
74 |
^ localName |
|
75 |
||
76 |
"Created: / 28-08-2007 / 23:07:47 / janfrog" |
|
77 |
! |
|
78 |
||
79 |
namespaceURI |
|
80 |
^ functionLibrary namespaceURI |
|
81 |
||
82 |
"Created: / 28-08-2007 / 23:07:47 / janfrog" |
|
83 |
! ! |
|
84 |
||
85 |
!ExternalFunction methodsFor:'initialization'! |
|
86 |
||
87 |
setFunctionLibrary: aFunctionLibrary |
|
88 |
||
89 |
functionLibrary := aFunctionLibrary |
|
90 |
||
91 |
"Created: / 28-08-2007 / 22:44:00 / janfrog" |
|
92 |
! |
|
93 |
||
94 |
setLocalName: name |
|
95 |
||
96 |
localName := name |
|
97 |
||
98 |
"Created: / 28-08-2007 / 23:08:47 / janfrog" |
|
99 |
! ! |
|
100 |
||
101 |
!ExternalFunction class methodsFor:'documentation'! |
|
102 |
||
241
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
103 |
version_SVN |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
104 |
^ '$Id$' |
235 | 105 |
! ! |