xquery/XQuery__ExternalFunction.st
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--
Tagged Smalltalk/X 8.0.0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
235
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/xmlsuite/xquery' }"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: XQuery }"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
Function subclass:#ExternalFunction
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:'localName functionLibrary'
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'XQuery-Functions'
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    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
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
!ExternalFunction methodsFor:'accessing'!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
functionLibrary
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    ^ functionLibrary
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    "Created: / 28-08-2007 / 23:07:47 / janfrog"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
241
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 235
diff changeset
    55
smalltalkizedLocalName
235
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
241
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 235
diff changeset
    57
    ^self class smalltalkize: localName
235
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    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
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
! !
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
!ExternalFunction methodsFor:'function API'!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    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
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    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
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
localName
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    ^ localName
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    "Created: / 28-08-2007 / 23:07:47 / janfrog"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
namespaceURI
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    ^ functionLibrary namespaceURI
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    "Created: / 28-08-2007 / 23:07:47 / janfrog"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
! !
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
!ExternalFunction methodsFor:'initialization'!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
setFunctionLibrary: aFunctionLibrary
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    functionLibrary := aFunctionLibrary
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    "Created: / 28-08-2007 / 22:44:00 / janfrog"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
setLocalName: name
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    localName := name
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    "Created: / 28-08-2007 / 23:08:47 / janfrog"
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
! !
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
!ExternalFunction class methodsFor:'documentation'!
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   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
e2a2fac1f45f Restore /trunk from r231
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
! !