29 de marzo de 2012

Clase que encapsula funciones de javascript para URLs

Esta clase encapsula las funciones de javascript necesarias para trabajar con Urls.

Utiliza el msscript control. Fácilmente puedes extenderla para incluir cualquier otra funcion de javascript que necesites.

*----------------------------------------------------------------
* Clase: UrlEncDec
* Autor: Marco Plaza, 28/03/2012
* Eencapsula las siguientes funciones de javascript via MsScriptcontrol:
* Escape/Unescape
* EncodeUriComponent/DecodeUriComponent
* EncodeUri/DecodeUri
*
* referencia de las funciones:http://msdn.microsoft.com/en-us/library/ht8a077w%28v=vs.94%29.aspx
*
* fácilmente extensible a otras funciones de javascript
*
*-----------------------------------------------------------------
* uso:
* o = create('urlEncDec')
* ? o.decodeuri('http://msdn.microsoft.com/en-us/library/ht8a077w%28v=vs.94%29.aspx')
* ? o.oResult
*
*------------------------------------------------------------------


*************************************
DEFINE CLASS URLENCDEC AS CUSTOM

  oJs = ''
  oResult=''

  *---------------------------
  PROCEDURE INIT

    WITH THIS
      .oJs=CREATEOBJECT('MSScriptcontrol.scriptcontrol.1')
      .oResult=CREATEOBJECT('EMPTY')
      ADDPROPERTY(.oResult,'ResultadoJs')
      .oJs.LANGUAGE =[JavaScript]
      .oJs.ADDOBJECT('oResult',.oResult)

    ENDWITH
  ENDPROC

  *------------------------------------------
  FUNCTION ESCAPE(lcCadena AS STRING ) AS STRING
    RETURN THIS.ejecutar('escape',lcCadena)
  ENDFUNC

  *------------------------------------------
  FUNCTION encodeURI(lcCadena AS STRING ) AS STRING
    RETURN THIS.ejecutar('encodeURI',lcCadena)
  ENDFUNC

  *--------------------------------------------
  FUNCTION decodeURIComponent(lcCadena AS STRING ) AS STRING
    RETURN THIS.ejecutar('decodeURIComponent',lcCadena)
  ENDFUNC

  *------------------------------------------
  FUNCTION encodeURIComponent(lcCadena AS STRING ) AS STRING
    RETURN THIS.ejecutar('encodeURIComponent',lcCadena)
  ENDFUNC

  *------------------------------------------
  FUNCTION unescape(lcCadena AS STRING ) AS STRING
    RETURN THIS.ejecutar('unescape',lcCadena)
  ENDFUNC

  *------------------------------------------
  FUNCTION decodeURI(lcCadena AS STRING ) AS STRING
    RETURN THIS.ejecutar('decodeURI',lcCadena)
  ENDFUNC

  *------------------------------------------
  FUNCTION ejecutar(lcComando,lcCadena AS STRING ) AS STRING
    THIS.oJs.ExecuteStatement( [oResult.ResultadoJs=]+lcComando+[(']+lcCadena+[')] )
    RETURN THIS.oResult.resultadoJs
  ENDFUNC

ENDDEFINE
*---------------------------------
Marco Plaza