The Rebol site of Romano Paolo Tenca


Table of Contents

1. Programs
      1.1. Anamonitor 3.0.0 (06/6/2005)
      1.2. Anamonitor 2.0.0
      1.3. ATCP Protocol 0.2.2 (01/10/2005)
      1.4. AnaMezzanines 1.0.0 (01/10/2005)
      1.5. Resize-vid
      1.6. FTP Handler (0.1.57.2)
2. Patches
      2.1. Edit-text 1.0.2 (05/12/03)
      2.2. Win-offset? and Screen-offset? (28/09/03)
      2.3. Modal system (wake-event.r 1.0.4) (28/09/03)
      2.4. Inform
3. Debug Tools
      3.1. Dump-Face (View) (04/10/03)
      3.2. Dump-Style (View) (04/10/03)
4. Function Changes in Rebol View (31/10/03)
5. Function Changes in Rebol Core (27/11/03)
6. Examples, tips, hack
      6.1. Use Dns async to connect to spam servers (04/10/03)
      6.2. Port are object? (in port!) (04/10/03)
      6.3. Again: port are object? (04/10/03)
      6.4. Can I bind to a set-word? (04/10/03)
      6.5. Double-key (how to merge three image with one magic pipeline)
      6.6. Launch (from every script)
      6.7. Boot time (what happens before Big-Bang?)
      6.8. Words or not words? (how to break every limits)
      6.9. Not only words in paths (the fool on the path)
      6.10. Are you sure I am an object? (about fool object)
7. Info
      7.1. Aknowledgements



1. Programs


1.1. Anamonitor 3.0.0 (06/6/2005)

A visual monitor for object/block/functions.

Works only under View 1.3.1 or more (see Anamonitor 2.0.0 for previous versions).

Version 3.0.0 (shift click for download)
Read the (2.0.0) doc in text format
Read the GNU GPL License


1.2. Anamonitor 2.0.0

A visual monitor for object/block/functions. If you find any bug send an email to me.

Works with View 1.2.#

Version 2.0.0 (shift click for download)
Read the doc in text format
Read the GNU GPL License


1.3. ATCP Protocol 0.2.2 (01/10/2005)

Version 0.2.2 (Beta) Fixed the read tail bug

An handler to make async tcp connections with proxy support more easy. Released under the GNU GPL License.

(shift click for download)
Read the draft doc
Read the GNU GPL License


1.4. AnaMezzanines 1.0.0 (01/10/2005)

Alternative mezzanines.

Version 1.0.0 (shift click for download)
Read the GNU GPL License


1.5. Resize-vid

Resize-vid makes creating resizable windows a trivial job; with automatic resizing of the faces they contain (auto-resize).

Read the doc
resize-vid.r 1.0.0 (shift click to download)
Zip file with code, examples, docs


1.6. FTP Handler (0.1.57.2)

(Now in Core and View 1.3.1.)

The standard Rebol FTP handler has a lot of problems which make it unusable on many systems.

This started like a patch to the existing FTP Rebol handler and now is totally different, with a different internal logic about directories and cache handling.

Any bug report is welcome: FTP it is not a full standardized system, so it must be tested system by system.

The version 0.1.57.2 adds the NLIST command: see the start of source to understand when/how to use it.

Shift click to download



2. Patches

Some of these patches are now part of View 1.3.1.


2.1. Edit-text 1.0.2 (05/12/03)

(Now in View 1.3.1 but without undo/redo)

This patch corrects the cursor movements in area and field and add optional undo/redo and Esc key (the last only in field). The 1.0.1 version correct other bugs in RT code (first letter bug and delete bug). The 1.0.2 version correct another bug in RT code: unprintable key and hide field. (See the script header for more info) This patch without the undo support is now part of last Rebol betas (1.2.47).

Read the code
Shift click to download


2.2. Win-offset? and Screen-offset? (28/09/03)

(Now in View 1.3.1.)

Standard Rebol code does not calculate the panel edges. This patch is now part of last Rebol betas (1.2.47).

Read the code
Shift click to download


2.3. Modal system (wake-event.r 1.0.4) (28/09/03)

(Obsolete)

Standard Rebol modal system does not work in every situation. This is an experimental patch. If you find some situations in which this patch does not work, email me, the fine tuning of the modal system is hard to find because there are many combinations of events/configurations. This code is the evolution of an initial version which appeared on the mailing list. Include win-offset? and screen-offset? patch. At least other two versions appearead on the mailing list and in other sites. This is the last one.

Read the code
Shift click to download
Read the mailing list


2.4. Inform

(Now in View 1.3.1.)

Standard Rebol code does not add the window-feel to the panel, so keys shortcuts are not detected. This patch fix it, adding keys to all the standard rebol functions which use inform (request, alert and so on)

Read the code
Shift click to download



3. Debug Tools


3.1. Dump-Face (View) (04/10/03)

Change the system dump-face to give a better view of nested faces and detect faces in more than one pane

Read the code
Shift click to download


3.2. Dump-Style (View) (04/10/03)

Dump a style and clone it

Read the code
Shift click to download



4. Function Changes in Rebol View (31/10/03)

Some Rebol functions can be moved from the global contexts to a local context, and some new functions can be embedded in a local context. This documents list only global functions added or removed.

1.2.10.3.1 is a experimental version

1.2.8.3.1 is a beta version

1.2.1.3.1 is the last released version

Differences between 1.2.10.3.1 and 1.2.1.3.1
Differences between 1.2.10.3.1 and 1.2.8.3.1
Differences between 1.2.8.3.1 and 1.2.1.3.1



5. Function Changes in Rebol Core (27/11/03)

Some Rebol functions can be moved from the global contexts to a local context, and some new functions can be embedded in a local context. This documents list only global functions added or removed.

Differences between 2.5.6.3.1 and 2.3.0.3.1



6. Examples, tips, hack

In this section you can find strange tricks, hacks, curiosity about Rebol language with links to the rebol mailing list (if any).


6.1. Use Dns async to connect to spam servers (04/10/03)

Example code to use dns:// in async mode with dns spam server

Read the code
Shift click to download


6.2. Port are object? (in port!) (04/10/03)

More yes than no. If you patch the 'in function, you can use a port (and its local context) like any other object.

insert first find third :in block! port!
port: make port! [scheme: 'tcp awake: func[port][]]
type? get in port 'awake ;== function!
Use this trick at your own risk.


6.3. Again: port are object? (04/10/03)

The tcp port! can be extended at construct time, like objects:

p: make port! [scheme: 'tcp foo: 1]
p/foo ; ==1
But other schemes have a different behaviour:

p: make port! [scheme: 'http foo: 1]
p/foo
** Script Error: Invalid path value: foo
** Near: p/foo


6.4. Can I bind to a set-word? (04/10/03)

No. But with this trick, you can bind also to set-word! and get-word!

insert first find next find third :bind block! block! reduce [get-word! set-word!]
bind [a] first [:a]
bind [a] first [a:]
The same can be done for the 'in function. Use this trick at your own risk.

Read on the mailing list


6.5. Double-key (how to merge three image with one magic pipeline)

This code demonstrates how to merge three images with 2 key colors

Read the code
Shift click to download


6.6. Launch (from every script)

To use Launch in every Rebol script, put this line in your user.r

true-launch: :launch
Now you can access Launch using true-launch in every script. Pay attention: this can break your Rebol security.

Read the mailing list


6.7. Boot time (what happens before Big-Bang?)

To see what happens before a Rebol script is started, you can put in your user.r

trace on
or start Rebol with the -t or --trace command line option:

;under Window
rebol -t script-name
rebol -t --do ""
Read the mailing list


6.8. Words or not words? (how to break every limits)

To not waste the global words space (4000 words - 8000 in last beta version) , instead of

data1: load %data.r
data2: load "foo bar"
you can do:

data1: to block! read %data.r
data2: to block! "foo bar"
this only works if the strings contain only true data and not Rebol code to execute (because there is a bug in Rebol which prevents to use this kind of words in some situations).

Read the mailing list


6.9. Not only words in paths (the fool on the path)

Almost every Rebol value can be in a path (not only words or get-words):

x: [<33> [#op [hey [10:0 [3.3.3 [at@rebol [$2 [%" a" found] ]]]]]]]
x/<33>/#op/hey/10:0/3.3.3/at@rebol/$2/%" a" ; == found
you can mix direct and indirect values:

x: [<33> [#op [hey [10:0 [3.3.3 [at@rebol [$2 [%" a" found] ]]]]]]]
v1: <33>
v2: 10:0
x/:v1/#op/hey/:v2/3.3.3/at@rebol/$2/%" a" ; == found
I find very useful to use tag! in path:

x: [<TITLE> "Rebol"]
x/<TITLE> ;== "Rebol"
v: <TITLE> ; indirect
x/:v ;== "Rebol"
Note that strings cannot be used in the same mode:

x: ["TITLE" "Rebol"]
x/"TITLE"
** Syntax Error: Invalid path -- x/
** Near: (line 1) x/"TITLE"
with strings you must always use the indirect version:

v: "TITLE"
x/:v ;== "Rebol"
Read the mailing list


6.10. Are you sure I am an object? (about fool object)

The value returned by

make object! block
is the value of the local word 'self at the end of the block execution:

type? make object! []; == object!
type? make object! [self: 3]; == integer!
type? make object! [self: "i'm a string!"]; == string!
type? make object! [self: func[]["i'm a function!"]]; == function!
Use it at your own risk: this surely generates very unreadeable code.



7. Info

Contact me for bugs and requests.

Email me


7.1. Aknowledgements

Thanks to Gabriele Santilli for hosting this site.


Copyright Romano Paolo Tenca. All Rights Reserved.
Formatted with REBOL Make-Doc 0.9.4.2 on 1-Oct-2005 at 1:46:41