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

"{ Package: 'stx:goodies/xmlsuite/xquery' }"

"{ NameSpace: XQuery }"

Function subclass:#ExternalFunction
	instanceVariableNames:'localName functionLibrary'
	classVariableNames:''
	poolDictionaries:''
	category:'XQuery-Functions'
!


!ExternalFunction class methodsFor:'utilities'!

smalltalkize: localName

    "transforms distinct-values into disticntValues"
    | input output minusFound|
    input := localName readStream.
    output := (String new: localName size) writeStream.
    minusFound := false.
    [ input atEnd ] whileFalse: [
        | c |
        c := input next.
        c = $- 
            ifTrue:
                [minusFound := true]
            ifFalse:
                [minusFound 
                    ifTrue:
                        [output nextPut:c asUppercase.
                        minusFound := false]
                    ifFalse:
                        [output nextPut:c]]].

    ^output contents

    "
        self smalltalkize: 'doc' 

        self smalltalkize: 'distinct-values'  
    "

    "Created: / 28-08-2007 / 23:35:25 / janfrog"
! !

!ExternalFunction methodsFor:'accessing'!

functionLibrary
    ^ functionLibrary

    "Created: / 28-08-2007 / 23:07:47 / janfrog"
!

smalltalkizedLocalName

    ^self class smalltalkize: localName

    "Created: / 28-08-2007 / 23:35:44 / janfrog"
! !

!ExternalFunction methodsFor:'function API'!

evaluateInContext:context withParameters: parameters forInterpreter: interpreter

    ^functionLibrary
        evaluate: self inContext:context withParameters: parameters forInterpreter: interpreter

    "Created: / 28-08-2007 / 23:10:46 / janfrog"
    "Modified: / 01-12-2008 / 10:17:41 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

localName
    ^ localName

    "Created: / 28-08-2007 / 23:07:47 / janfrog"
!

namespaceURI
    ^ functionLibrary namespaceURI

    "Created: / 28-08-2007 / 23:07:47 / janfrog"
! !

!ExternalFunction methodsFor:'initialization'!

setFunctionLibrary: aFunctionLibrary

    functionLibrary := aFunctionLibrary

    "Created: / 28-08-2007 / 22:44:00 / janfrog"
!

setLocalName: name

    localName := name

    "Created: / 28-08-2007 / 23:08:47 / janfrog"
! !

!ExternalFunction class methodsFor:'documentation'!

version_SVN
    ^ '$Id$'
! !