Encode URL custom block

I've a few useful custom blocks that use JavaScript to do some of the computation so I'm looking to sacrifice a bit of speed and convert them into pure Snap! so that my projects don't require JS to be enabled

This is my first one - it takes a URL and replaces any special characters with it's %xx equivalent

untitled script pic (14)

Data on which characters need encoding taken from HTML - URL Encoding

Project with block ProjectName=encodeURL

or just the block itself

<blocks app="Snap! 6, https://snap.berkeley.edu" version="1"><block-definition s="encode URL %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:o valor com chave _ em _&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>lst</l></list></block><block s="doSetVar"><l>lst</l><block s="reportTextSplit"><l>0,%00&#xD;1,%01&#xD;2,%02&#xD;3,%03&#xD;4,%04&#xD;5,%05&#xD;6,%06&#xD;7,%07&#xD;8,%08&#xD;9,%09&#xD;10,%0a&#xD;11,%0b&#xD;12,%0c&#xD;13,%0d&#xD;14,%0e&#xD;15,%0f&#xD;16,%10&#xD;17,%11&#xD;18,%12&#xD;19,%13&#xD;20,%14&#xD;21,%15&#xD;22,%16&#xD;23,%17&#xD;24,%18&#xD;25,%19&#xD;26,%1a&#xD;27,%1b&#xD;28,%1c&#xD;29,%1d&#xD;30,%1e&#xD;31,%1f&#xD;127,%7f&#xD;128,%80&#xD;129,%81&#xD;130,%82&#xD;131,%83&#xD;132,%84&#xD;133,%85&#xD;134,%86&#xD;135,%87&#xD;136,%88&#xD;137,%89&#xD;138,%8a&#xD;139,%8b&#xD;140,%8c&#xD;141,%8d&#xD;142,%8e&#xD;143,%8f&#xD;144,%90&#xD;145,%91&#xD;146,%92&#xD;147,%93&#xD;148,%94&#xD;149,%95&#xD;150,%96&#xD;151,%97&#xD;152,%98&#xD;153,%99&#xD;154,%9a&#xD;155,%9b&#xD;156,%9c&#xD;157,%9d&#xD;158,%9e&#xD;159,%9f&#xD;160,%a0&#xD;161,%a1&#xD;162,%a2&#xD;163,%a3&#xD;164,%a4&#xD;165,%a5&#xD;166,%a6&#xD;167,%a7&#xD;168,%a8&#xD;169,%a9&#xD;170,%aa&#xD;171,%ab&#xD;172,%ac&#xD;173,%ad&#xD;174,%ae&#xD;175,%af&#xD;176,%b0&#xD;177,%b1&#xD;178,%b2&#xD;179,%b3&#xD;180,%b4&#xD;181,%b5&#xD;182,%b6&#xD;183,%b7&#xD;184,%b8&#xD;185,%b9&#xD;186,%ba&#xD;187,%bb&#xD;188,%bc&#xD;189,%bd&#xD;190,%be&#xD;191,%bf&#xD;192,%c0&#xD;193,%c1&#xD;194,%c2&#xD;195,%c3&#xD;196,%c4&#xD;197,%c5&#xD;198,%v6&#xD;199,%c7&#xD;200,%c8&#xD;201,%c9&#xD;202,%ca&#xD;203,%cb&#xD;204,%cc&#xD;205,%cd&#xD;206,%ce&#xD;207,%cf&#xD;208,%d0&#xD;209,%d1&#xD;210,%d2&#xD;211,%d3&#xD;212,%d4&#xD;213,%d5&#xD;214,%d6&#xD;215,%d7&#xD;216,%d8&#xD;217,%d9&#xD;218,%da&#xD;219,%db&#xD;220,%dc&#xD;221,%dd&#xD;222,%de&#xD;223,%df&#xD;224,%e0&#xD;225,%e1&#xD;226,%e2&#xD;227,%e3&#xD;228,%e4&#xD;229,%e5&#xD;230,%e6&#xD;231,%e7&#xD;232,%e8&#xD;233,%e9&#xD;234,%ea&#xD;235,%eb&#xD;236,%ec&#xD;237,%ed&#xD;238,%ee&#xD;239,%ef&#xD;240,%f0&#xD;241,%f1&#xD;242,%f2&#xD;243,%f3&#xD;244,%f4&#xD;245,%f5&#xD;246,%f6&#xD;247,%f7&#xD;248,%f8&#xD;249,%f9&#xD;250,%fa&#xD;251,%fb&#xD;252,%fc&#xD;253,%fd&#xD;254,%fe&#xD;255,%ff&#xD;36,%24&#xD;38,%26&#xD;43,%2b&#xD;44,%2c&#xD;47,%2f&#xD;58,%3a&#xD;59,%3b&#xD;61,%3d&#xD;63,%3f&#xD;64,%40&#xD;32,%20&#xD;34,%22&#xD;60,%3c&#xD;62,%3e&#xD;35,%23&#xD;37,%25&#xD;123,%7b&#xD;125,%7d&#xD;124,%7c&#xD;92,%5c&#xD;94,%5e&#xD;126,%7e&#xD;91,%5b&#xD;93,%5d&#xD;96,%60</l><l><option>csv</option></l></block></block><block s="doReport"><block s="reportJoinWords"><block s="reportMap"><block s="reifyReporter"><script><block s="doDeclareVariables"><list><l>lookup result</l></list></block><block s="doSetVar"><l>lookup result</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="value"/></block><block s="reportUnicode"><block var="each char"/></block></block></autolambda><list><l>value</l></list></block><block var="lst"/></block></block><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="lookup result"/><l></l></block><block var="each char"/><block s="reportListItem"><l><option>last</option></l><block var="lookup result"/></block></block></block></script><list><l>each char</l></list></block><block s="reportTextSplit"><block var="text"/><l><option>letter</option></l></block></block></block></block></script></block-definition></blocks>

good job

IIRC there's an encode URL block among the dev-mode hidden blocks that you get if you shift-click the Snap! logo and turn on dev mode. :slight_smile:

aah well - it was an interesting exercise :slight_smile:

run python code_noJS script pic

it's fun doing text parsing (especially in scratch)