REBOL[ Title: "coding-mailto" Version: 1.0.0 File: %coding-maito.r Author: "Philippe Le Goff" Date: 11-Sep-2004 Email: pl--legoff--free-fr Copyright: { Philippe Le Goff-2004 License CeCILL http://www.inria.fr/valorisation/logiciels/Licence.CeCILL-V1.pdf http://www.inria.fr/valorisation/logiciels/Licence.CeCILL-V1_VA.pdf } Purpose: {a tool for coding the "mailto" info in a html page and avoid some spam } Category: [] Library: [ level: 'beginner platform: 'all type: [tool] domain: [email encryption html text ] Tested-under: 'win Support: pl--legoff--free-fr License: none ] Note: { This tool is just for fun. Write you email in the field "mailto" and click on the button "Code it ". Then, copy the results in your html code. I suggest to create a javascript file apart, with generated code. } ] ;/// Functions Definitions /// prejoin: func [ "Reduce and join a block of values." block [block!] "Values to reduce and join" /with string [ string! ] ][ if empty? block: reduce block [return block] if with [ block: next block forskip block 2 [ insert block string ] ] block: head insert head block copy "" append either series? first block [copy first block] [ form first block ] next block ] ;/// code //// to-ascii: func [ "retun ASCII code of a chars string" value [ char! string! ] /local value-block email-string ] [ value-block: copy [] email-string: "" if (type? value) = char! [ return to-integer value] count: length? value loop count [ append value-block to-integer pick value 1 value: next value ] email-string: prejoin/with value-block "," return email-string ] ;/// GUI Definitions /// my-styles: stylize [ bout: btn gray center middle 85x20 font-size 11 font-name "Courrier" font-color white tx-inf: text ivory font-size 10 font-name "Courrier" middle center field-inf: field 200x18 ivory font-size 10 font-name "Courrier" middle center vtext: text white bold right middle font-size 12 font-name "Courrier" a-propos-text: text 200 white font-size 11 font-name "Courrier" font-color white ] ; /////////// ; backdrop image img-fond: load 64#{ R0lGODlhBAEyAPEBAFxcfeDp+O/r7PD1/SH5BAEAAAEALAAAAAAEATIAAQKHhI+p y+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfM pvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4 SFhoeIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKylcAADs= } ;//////////// coding-layout: func [ /local val-text ][ val-text: to-ascii f1/text result: rejoin [ " function NoSpmAddress() { return String.fromCharCode(" val-text "); }" newline "function Zap() { return String.fromCharCode(109, 97, 105, 108, 116, 111, 58) + NoSpmAddress(); }" ] ; here we define the layout my-lay: layout/size [ styles my-styles backdrop img-fond at 10x5 tx-inf yellow "Code to be placed in a javascript << NoSpm.js >> file : " at 15x25 bar 400x2 yellow at 30x1 str1: tx-inf 400x150 to-string result middle left return at 10x150 tx-inf yellow "Code to be placed between the ... tags of your HTML pages" at 15x170 bar 400x2 yellow at 30x175 tx-inf {} middle left return at 10x230 below tx-inf yellow "Code to be placed in your email-contact tag of your HTML pages" at 15x248 bar 400x2 yellow return at 30x255 tx-inf 350 middle left {Contact me ! } return at 330x290 bout " Close " 40x20 124.154.220 [unview coding-layout] ] 430x330 ;end of my-lay f1/text: "" my-lay ] ; end of coding-layout ;//// Windows "A propos" (standard) aPropos: func [/local lay] [ lay: copy [ styles my-styles across origin 0x0 space 0x0 backdrop img-fond image logo.gif box 200x24 effect [merge gradmul 1x0 0.0.0 128.128.128] return pad 10x10 guide ] foreach [name value] third system/script/header [ if not none? value [ append lay reduce [ 'vtext mold :name 'tab 'a-propos-text form value ] switch/default type?/word value [ string! [append lay mold [with [feel: none]]] email! [append/only lay compose/deep [ alive?: true error? try [emailer/to (value)] ]] url! [append/only lay compose/deep [ error? try [browse (value)] ]] file! [append/only lay compose/deep [ error? try [editor (value)] ]] ] [append lay [with [feel: none]]] append lay 'return ] ] append lay [ pad -10x10 box 200x24 effect [merge gradmul 1x0 128.128.128 0.0.0] button "Close" black [unview/only lay] edge [size: none] ] view/new/title center-face lay: layout lay join system/script/header/title system/script/header/version ] ; /////// main layout /////// lay-main: layout/tight/size [ styles my-styles backtile img-fond box 25x50 effect [merge gradmul 0x1 0.0.0 128.128.128] across at 30x15 tx-inf "mailto:" f1: field-inf "your.mail-address@here.com" [ result: "" ] at 285x15 bout "Code it !" 50x20 0.106.5 [ view/new/title center-face coding-layout "Code" ] at 350x15 bout "Info" 40x20 167.17.17 [aPropos] at 390x15 bout "Quit" 40x20 124.154.220 [quit] ] 450x50 ;/////////// End GUI defs /////////////////// ;///// MAIN //// view/new center-face lay-main do-events