[REBOL] pinging SELMA Re:(5)

2000-09-18 Thread rryost

In Outlook Express, I can achieve threading by simply clicking at the top of
the Subject column to cause the InBox list to be sorted by Subject; this
groups all messages with the same subject together, so it's easy to read
through them in sequence.  Afterwards, I click on the "Received" (date/time)
column so the newest messages are at the bottom of the list.

Russell [EMAIL PROTECTED]
- Original Message -
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, September 18, 2000 10:18 PM
Subject: [REBOL] pinging SELMA Re:(4)


> for threading,
> we could have Selma insert/replace a line in the body
> like  PriorMsg:  http://rebol.org/userlist/archive/373/164.html
> which points to the most recent (highest numbered)
> entry in the same thread.
>
> probably DONT want it to be in the X-headers though,
> many email browsers will make clickable an http:// sequence
> so long as it is in the body of the message.
>
> If Selma does this before broadcasting then
> both archive readers and email subscribers will get the benefit.
>
>
> At 04:33 PM 9/19/00 +1200, [EMAIL PROTECTED] wrote:
> >Jeff wrote:
> > >   Anyone actually hacked some improvements to the SELMA code?
> >
> >I did a while back, but I've since mislaid the code.
> >
> >Andrew Martin
> >ICQ: 26227169
> >http://members.ncbi.com/AndrewMartin/
> >http://members.xoom.com/AndrewMartin/
> >-><-
>
>
> ;# mailto: [EMAIL PROTECTED]
>




[REBOL] does REBOL run on Palm or not? Re:(2)

2000-09-18 Thread news . ted

The better enterprise portals, like those described at REBOL.COM, synch
with the PalmOS. It's  difficult to imagine something like
Rebol/Express actually working in the marketplace without at least a
Palm conduit < http://www.palmos.com/dev/tech/tools/cdk/ >.

If Rebol can't run as an interpreter under the PalmOS stack, perhaps
this is the place to start with a native compiler. Basic, C/C++ , and
Forth are available now < http://www.palmos.com/dev/tech/tools/ >,
along with a free GCC compiler   Or at least something like Jump <
http://hewgill.com/pilot/jump/index.html >. 

-Ted. 



-- Ted Husted, Husted dot Com, Fairport NY USA.
-- Custom Software ~ Technical Services.
-- Tel 716 425-0252; Fax 716 223-2506.
-- http://www.husted.com/





[REBOL] eScribe Rebol Archive vs rebol.org Archive Re:(8)

2000-09-18 Thread news . ted

On 9/8/2000 at 8:03 AM [EMAIL PROTECTED] wrote:
>...but then, your message, arriving at my mailbox 12 seconds after the
>one you copied the X-SELMA number from has the field
>X-SELMA: [REBOL] 342011
>in the header..
>I did not get those 84 messages in between..

Selma routinely skips numbers, as I remember, often because of NDN
replies when sending out messages. Though 84 is many more than usual.

-T.






[REBOL] pinging SELMA Re:(4)

2000-09-18 Thread bobr

for threading,
we could have Selma insert/replace a line in the body
like  PriorMsg:  http://rebol.org/userlist/archive/373/164.html
which points to the most recent (highest numbered)
entry in the same thread.

probably DONT want it to be in the X-headers though,
many email browsers will make clickable an http:// sequence
so long as it is in the body of the message.

If Selma does this before broadcasting then
both archive readers and email subscribers will get the benefit.


At 04:33 PM 9/19/00 +1200, [EMAIL PROTECTED] wrote:
>Jeff wrote:
> >   Anyone actually hacked some improvements to the SELMA code?
>
>I did a while back, but I've since mislaid the code.
>
>Andrew Martin
>ICQ: 26227169
>http://members.ncbi.com/AndrewMartin/
>http://members.xoom.com/AndrewMartin/
>-><-


;# mailto: [EMAIL PROTECTED]




[REBOL] GUI Maker - You'll like this. Re:

2000-09-18 Thread Petr . Krenzelok

Hi Carl and others,

just tested the thingy. As I am known as person imediatelly throwing some new ideas in 
the place, or just a little bit critisize, I will not break from my customs :-)

Well, don't worry, just few general comments to GUIs at all ...

1) Thank's for the demo, it's nice, I although a little bit buggy 
2) Is it a part of /Author or is /Author completly different product?
3) Could panel like look and feel bocome default one? Anyone? Isn't it just cool 
looking? And if not, what about providing some 'panel styles which will turn our 
buttons from flat ones to shadowed, arrows from the
flat ones to plastic ones ...

Now more seriously
4) We need some more professional aproach to GUIs. Look, some machines use 800x600, 
and even if I use 1024x768, I have problems with rebodex or just current layout demo 
to fit the screen. Could any automatic
mechanism be built into /View which will check if the window fits the screen and if 
not, it would place scrollbars to the interface ... or  scale coordinates, but it 
could be unpleasant behavior ... What do
you think? I would strongly recommend to not depreciate user interface experience, as 
after tens of clicks, window movement etc. it could be annoying experience ...
5) What about proper menu system at the top of the screen? Well, thought of, kind of 
component - if it will not fit the screen, lef, right arrow at the corners to scroll 
it, etc.
6) The same goes for toolbar ...

It would be really cool to get proper OS behavior - maximizable/resizable windows, 
menu, toolbars, scroll bars etc stuff ...

Anyone?
-pekr-



[EMAIL PROTECTED] wrote:

> I just uploaded layout.r -- a script that builds REBOL graphical user interfaces.  
>With it, you can easily create REBOL GUI's without needing to program a line of code.
>
> You can get layout.r by running REBOL/View and clicking on REBOL.com. When you start 
>Layout it includes a few short instructions on how to use it.
>
> It's pretty good.  You can do some fairly sophisticated GUI editing with it.  Of 
>course, it is just a prototype and there is more to come.  It is likely to blow out 
>here and there, so save your work as you go.
>
> Operation note: run the script in a directory that has a few image files (jpg, gif, 
>png).  That way you can paste the images easily.
>
> So, now you have no excuses. Let's see some REBOL/View interfaces.
>
> -Carl
>
> PS: I wrote this script over the weekend, along with crushing our Merlot grapes.  It 
>will give you a good idea for what 25K can do in REBOL/View.




[REBOL] GUI Maker - You'll like this. Re:

2000-09-18 Thread carlos

Sure I liked it. It gives me a lot of flexibility. Great Tool, Carl!

Carlos Lorenz

- Original Message -
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, September 18, 2000 7:29 PM
Subject: [REBOL] GUI Maker - You'll like this.


> I just uploaded layout.r -- a script that builds REBOL graphical user
interfaces.  With it, you can easily create REBOL GUI's without needing to
program a line of code.
>
> You can get layout.r by running REBOL/View and clicking on REBOL.com. When
you start Layout it includes a few short instructions on how to use it.
>
> It's pretty good.  You can do some fairly sophisticated GUI editing with
it.  Of course, it is just a prototype and there is more to come.  It is
likely to blow out here and there, so save your work as you go.
>
> Operation note: run the script in a directory that has a few image files
(jpg, gif, png).  That way you can paste the images easily.
>
> So, now you have no excuses. Let's see some REBOL/View interfaces.
>
> -Carl
>
> PS: I wrote this script over the weekend, along with crushing our Merlot
grapes.  It will give you a good idea for what 25K can do in REBOL/View.
>
>
>




[REBOL] pinging SELMA Re:(3)

2000-09-18 Thread Al . Bri

Jeff wrote:
>   Anyone actually hacked some improvements to the SELMA code?

I did a while back, but I've since mislaid the code.

Andrew Martin
ICQ: 26227169
http://members.ncbi.com/AndrewMartin/
http://members.xoom.com/AndrewMartin/
-><-




[REBOL] Reinstalling view Re:

2000-09-18 Thread allen

Hi Brett,

There is a reinstall command line option. Type 
>>usage 
in \view console to get the details 

Cheers,

Allen K

- Original Message - 
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, September 19, 2000 1:35 PM
Subject: [REBOL] Reinstalling view


> Scripts will not execute from the panel in View so I thought about
> uninstalling view and then reinstalling it.
> 
> 
> What steps do I need to take to uninstall view?
> And do I have to fiddle with the registry to clean it out completely?
> 
> Brett.
> 
> --
> >> my-rebol-stuff
> == http://www.codeconscious.com/
> 
> 




[REBOL] Reinstalling view

2000-09-18 Thread brett

Scripts will not execute from the panel in View so I thought about
uninstalling view and then reinstalling it.


What steps do I need to take to uninstall view?
And do I have to fiddle with the registry to clean it out completely?

Brett.

--
>> my-rebol-stuff
== http://www.codeconscious.com/




[REBOL] deleting email Re:(3)

2000-09-18 Thread brett

> I've
> > got a real neat idea of creating a REBOL program to keep its own email
> > database and generate a web front-end and voila! a platform independant
> > email client.

Project Rebmail is similarly a neat idea for a email client but
unfortunately (AFAIK) doesn't exist as a useable program yet.
http://www.egroups.com/group/Rebmail

Brett.




[REBOL] How to load func defs at start-up Re:(2)

2000-09-18 Thread brett

I'll just add that I do very similar to this but I try to put all my
additions in another script called ConfigureSession.r which resides in a
data directory (for ease of backing up my volatile configuration).
ConfigureSession.r then sets words and calls utility scripts.

Doing this allows the same configuration for Core and View.

Brett.

- Original Message -
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Tuesday, September 19, 2000 5:56 AM
Subject: [REBOL] How to load func defs at start-up Re:


Following inline is my %user.r, followed by my %utilities.r script.
All of the functions listed in utilities are then available to me during the
session.
*start user.r
REBOL [
Title: "User Preferences"
Date: 28-Aug-2000
]
protect-system ;protect system words from redefinition with all of my
utilities
set-net-cases: [
 1 [[EMAIL PROTECTED] smtp.netzero.net pop.netzero.net none none none ]
 2 [[EMAIL PROTECTED] smtp.mail.yahoo.com pop.mail.yahoo.com none none
none]
]
print "Which net account do you want to use?"
foreach [number case] set-net-cases [
 print [number tab case]
]
set-net account: select set-net-cases choice: to-integer ask "Enter your
number choice here :>> "

 system/console/prompt: "REBOL:>> "
 system/console/result: "REBOL:== "

;utilities to do each time
; keep the utilities folder as a subfolder of where the executable is i.e.
%./utilities
;greeting---
print "***"
Print "Hello, Alan!"
print  ["It is" now/date "at" now/time "."]
print  ["You are currently in the" what-dir  "directory." newline]
print  ["The following are your scripts loaded with utilities.r" newline]
do %./utilities/utilities.r  ; put utilities in utilities folder and call
them in %utilities.r
*end of
user.r**
*start
utilities.r**
REBOL[
 title:  "My Utilities"
 file:  %utilities.r
 purpose: "Things I want available."
 date:  "22-May-2000/10:43:36-4:00"
]

; scripts I want available
;make 'symlinks' to directory functions
list: :list-dir
pwd: :what-dir
cd: :change-dir
md: :make-dir
;-a few simple shortcuts---
cls: does [prin ["^(1B)[J"]] ; this clears the screen
;-my utilities--
do %../utilities/ls.r
do %../utilities/mail.r
do %../utilities/convert-lines.r
do %../utilities/makehead.r
do %../utilities/s-swap.r
***end user.r***
Hope this helps.

  [EMAIL PROTECTED] wrote:


Hi:
How may I load function definitions at startup?
As an experiment, I added the following function def
to both user.r and rebol.r:
import: func[{"do" a file (IMPORT function def}f[string!]]
[do make file! f]

However, upon starting rebol, rebol does not recognize
it.

I note also, that set-user is not recognized.

Just curious...
TIA
Tim




[REBOL] standard message object Re:

2000-09-18 Thread brett

I'm not entirely sure what your suggestion is. How is that different from
using import-email?

Thanks.
Brett.

- Original Message -
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, September 19, 2000 3:09 AM
Subject: [REBOL] standard message object


> I have some thoughts about creating a standard message
> object! and I would like to hear your input.
>
> Across the Internet, whether it be in e-mail, newsgroups,
> bulletin board systems, or Web pages, the most
> common form of communication is the message.
> Messages have common values, illustrated as follows:
>
> EMAIL
> -
> From:
> Subject:
> Content:
>
> NEWS
> 
> From:
> Subject:
> Content:
>
> BULLETIN BOARD
> --
> Author:
> Subject:
> Comment:
>
> NEWS STORY
> --
> Byline:
> Headline:
> Body:
>
> ...and I'm sure there are more comparisons I cannot think
> of at the moment.
>
> Because of these similarities, I suggest that a standard
> message object! be developed so that information can
> easily be exchanged between mediums.
>
> Furthermore, functions should be developed for converting
> messages from the e-mail, news, etc., formats into the
> standard message object! and vice-versa.
>
> But what values should be included in the message
> object! ?
>
> A news posting, for example, may include the following
> headers...
>
> From
> Subject
> Date
> Newsgroups
> Path
> In-Reply-To
> Message-ID
> References
> MIME-Version
> Content-Type
> Lines
> NNTP-Posting-Host
> X-Trace
> NNTP-Posting-Date
> Organization
> Xref
> Followup-To
> Content-Transfer-Encoding
> X-Complaints-To
> X-Mailer
> X-Accept-Language
> Reply-To
> X-Newsreader
> X-Priority
> X-MSMail-Priority
> X-MimeOLE
> User-Agent
> X-Abuse-to
> X-Comments
> X-Anon
> X-Mail-To-News-Contact
> X-Mimeole
> X-Sender
> X-Server-Date
> X-MIMEOLE
> X-Abuse-Info
> X-Anon-1
> X-Anon-2
> X-No-Archive
> Sender
>
>
> While an e-mail message may include the following
> headers...
>
> Received
> Return-path
> To
> From
> Reply-To
> Date
> Subject
> Organization
> Message-Id
> X-REBOL
> MIME-Version
> Content-Type
> Precedence
> X-MindSpring-Loop
> Content-transfer-encoding
> Priority
> In-reply-to
> References
> X-mailer
> X-SELMA
> X-PMFLAGS
>
>
> Bulletin Board messages and News Articles have their
> own formats, as well. Is there a standard message
> object! that could be developed and re-used?
>
> For example...
>
> make object! [
> Author:
> Date:
> Subject:
> Body:
> Message-ID:
> MIME-Version:
> Content-Type:
> Origin:
> ]
>
> Are more values than the above needed for a standard
> message object?
>
> -Ryan
>




[REBOL] GUI Maker - You'll like this. Re:

2000-09-18 Thread rebol

Hi Carl,

that is very cool. It's miles ahead of the tools you usually get to design
Web-based dynamic content. 

It reminds a little of Delphi's VCL approach. They had default method
handlers, such that if you double-clicked on a button in the designer, for
instance, then you're switched to the code editor with a prepared function
skeleton to handle the button's default event, which is a click event.  In
Delphi it then says:

procedure TForm1.Button1Click(Sender: TObject);
begin

end;

You can now add your code to the skeleton. The object that represents the
GUI element has automatically registered the name of the procedure as its
onclick event handler. Is this where you're heading? (Just curious.) 
Implementing something like that should be a little more complicated then
it may first appear, because the Delphi IDE keeps the sourcecode view in
the editor synchronized with the GUI view in the GUI designer at all times. 

At 03:29 PM 9/18/00 -0700, you wrote:
>I just uploaded layout.r -- a script that builds REBOL graphical user
interfaces.  With it, you can easily create REBOL GUI's without needing to
program a line of code.
>
>You can get layout.r by running REBOL/View and clicking on REBOL.com. When
you start Layout it includes a few short instructions on how to use it.
>
>It's pretty good.  You can do some fairly sophisticated GUI editing with
it.  Of course, it is just a prototype and there is more to come.  It is
likely to blow out here and there, so save your work as you go.
>
>Operation note: run the script in a directory that has a few image files
(jpg, gif, png).  That way you can paste the images easily.
>
>So, now you have no excuses. Let's see some REBOL/View interfaces.
>
>-Carl
>
>PS: I wrote this script over the weekend, along with crushing our Merlot
grapes.  It will give you a good idea for what 25K can do in REBOL/View.
>
>
>
>

;- Elan [ : - ) ]
author of REBOL: THE OFFICIAL GUIDE
REBOL Press: The Official Source for REBOL Books
http://www.REBOLpress.com
visit me at http://www.TechScribe.com





[REBOL] Re: GUI Maker - You'll like this. Re:

2000-09-18 Thread carl

On 19-Sep-00, [EMAIL PROTECTED] wrote:

> Sounds spectacular, so I downloaded the latest view for windows
> (looks nice), but there is a problem...

> Clicking rebol.com does nothing, and putting
> http://www.rebol.com/index.r  I get the following message...

> ERROR - Cannot load index file: http://www.rebol.com/index.r

> I can however load it from a console session by doing:

> print read http://www.rebol.com/index.r

> Not nearly as fun though.

> Any ideas???

layout.r downloaded okay for me from the Test Panel using Amiga View,
except Amiga View's only at 0.10.31 and so can't run layout.r yet. ):

You can get layout.r directly at...

http://www.rebol.com/view/reb/layout.r

though.




[REBOL] file picker Re:

2000-09-18 Thread rebol

Hi Ryan,

for a /Core version of file picker you should really check Gabriele's
ropus.r script. I think you should be able to get it online (user
contributed scripts archive).


At 03:18 PM 9/18/00 -0700, you wrote:
>I am looking for both /Core and /View file pickers.  I have dinked with
>Carls view example of one, but have'nt produced anything usable as of
>yet.  Anybody got one?
>
>--Ryan
>
>
>
>
>

;- Elan [ : - ) ]
author of REBOL: THE OFFICIAL GUIDE
REBOL Press: The Official Source for REBOL Books
http://www.REBOLpress.com
visit me at http://www.TechScribe.com





[REBOL] A bug in file port? Re:(2)

2000-09-18 Thread rebol

Hi Geo,

then I recommend you skip to Chapter 21 (page 673). It's all about ports.
(Specifially page 677 bottom says:

"We can return fp to the head of file with the head function:

fp: head fp
"
}

In case you haven't discovered it yet, I'll think you'll find the detailed
review of the open function (pp. 678) quite enlightening. It reviews the
port object that is returned by the open function in some detail.




At 03:21 PM 9/18/00 -0700, you wrote:
>Yep, it works! Should have read the description more closely.
>
>Thanks, Elan!
>
>Geo...
>
>PS I just got your book. It looks good at first sight. :)
>
>
>[EMAIL PROTECTED] wrote:
>> 
>> Hi Geo,
>> 
>> you're doing great! You overlooked one little detai:
>> 
>> replace
>> >> head fp
>> 
>> by
>> 
>> >>fp: head fp
>> 
>> The head function RETURNS the same port whose current position is at the
>> head of the port. It does not modify the current position of its argument!
>> 
>> Hope this helps,
>> 
>> 
>> ;- Elan [ : - ) ]
>> author of REBOL: THE OFFICIAL GUIDE
>> REBOL Press: The Official Source for REBOL Books
>> http://www.REBOLpress.com
>> visit me at http://www.TechScribe.com
>
>
>

;- Elan [ : - ) ]
author of REBOL: THE OFFICIAL GUIDE
REBOL Press: The Official Source for REBOL Books
http://www.REBOLpress.com
visit me at http://www.TechScribe.com





[REBOL] Small admin/report benchmark Re:(2)

2000-09-18 Thread joel . neely

Thanks, Gabriele!

I'll be glad to rerun the benchmarks to include your version.
If possible, I'll do it later this evening.

-jn-

[EMAIL PROTECTED] wrote:
> 
> Hello [EMAIL PROTECTED]!
> 
> On 18-Set-00, you wrote:
> 
>  j> Read through the colon-delimited file below (a copy of
>  j> an /etc/passwd file, mangled for security purposes),
>  j> and print a report tallying the distinct values in the
>  j> 7th field (in this case, the field that identifies the
>  j> default shell for each userID).  Sort the results by
>  j> the value of the field being tallied, and print the
>  j> results in neat columns.
> 
> This uses a /DIRECT port; it's a bit different,too, just to show
> another way to do it. :)
> 
> 
> REBOL []
> 
> foreach-line: func [
>   file [file!]
>   code [block!]
>   /local line
> ] [
>   ; I don't know if this REALLY uses less memory...
>   file: open/read/direct/lines file
>   code: func [line] code
>   while [line: pick file 1] [code line]
>   close file
> ]
> 
> shells: []
> 
> count-shell: func [shell [string! none!]] [
>   change shell: any [
> find/tail shells shell
> insert tail shells shell
>   ] 1 + any [shell/1 0]
> ]
> 
> foreach-line %passwords.txt [
>   count-shell pick parse/all line ":" 7
> ]
> 
> foreach [shell count] sort/skip shells 2 [
>   print [
> ; we really need FORMAT here!
>   head insert/dup count: form count " " 3 - length? count
>   any [shell "(none)"]
>   ]
> ]
> 
> 
> I don't have Perl here, so please repeat the tests with this to
> see if it makes any difference.
> 
> Regards,
> Gabriele.
> --
> Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer
> Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/




[REBOL] Associative Data Store Re:(3)

2000-09-18 Thread joel . neely

[EMAIL PROTECTED] wrote:
> 
> I'm probably going to get beaten up for this :), but if my question is
> totally absurd, please excuse my ignorance...
>

The only absurd questions are those that are asked out of malice or not
asked out of timidity.  ;-)  I may have strong opinions on what I'd like
to be able to do in my own programs, but certainly don't want that to
come across as negative value judgements on anyone who wishes to write
in a different style.

> 
> You seem to put a lot of emphasis on being able to use block!s as keys. Is
> this really necessary or desired?
> 

Well, in terms of strictly "necessary", we could just write everything
in
tcl, where all data are strings (even data structures).  However, REBOL
gives us this really nice collection of various data types.  Why NOT be
able to use them?  As the only thing really necessary for looking up a
key is to do an equality test, why shouldn't keys be able to come from
any data type for which the concept of "equal" makes sense?

Also, as one of my co-workers pointed out to me, a  block!  is a generic
container into which I'm allowed to put any kind of REBOL data I wish.
If  find  (for example) is defined to work on blocks, then why shouldn't
it work on blocks that contain anything blocks are allowed to contain
(such as other blocks)?

In terms of "desired", I certainly desire that capability!
Let me give an example:

Suppose I have a file of data on school children, which includes age and
grade level for each student.  Now suppose I'm asked to cross-tabulate
age and grade level for some report.  This means I need a set of
counters,
where each one corresponds to a specific combination of age and grade. 
It
would be very pleasant, IMHO, to be able to write something like the
following sketch:

age-grade-tab: assoc/new
foreach studentrecord read/lines %studentdemographics.data [
age:   get-age studentrecord
grade: get-grade studentrecord
a-g:   reduce [age grade] ; the key IS the combination!
age-grade-tab/put  a-g  1 + any [age-grade-tab/get a-g 0]
]

Now someone may ask why I didn't just use a two-dimensional array, with
age and grade as subscripts.  A couple of reasons immediately come to
mind:

0) A counter is identified by a combination of two facts: age and
   grade.  REBOL provides me with a handy datatype for representing
   compound values: the block!  Why shouldn't I use it?

1) Such an array would be very sparse!  As most of the values are
   clustered along a narrow diagonal band, it would be nice to limit
   my storage requirements to age/grade combinations that actually
   exist.  (Please remember that this is a small example of a more
   general concern.  I'm only illustrating the fact that arrays are
   often wildly space-inefficient; I'm sure you can all come up with
   many examples that are even more extreme, such as weight in grams
   versus height in centimeters, etc.)

2) Who says that grade is an integer?  Perhaps the coding scheme is
   that "K" is kindergarten, 1-8 are grade numbers, "Fr" "So" "Jr"
   "Sr" are the last four levels of high school, "GED" high-school
   equivalent coursework for adults, and "AE" is adult education
   courses for high school diploma holders.  In this case we not only
   can't use the grade as a numerical index, but now our ranges of
   values for both age and grade have become much larger, greatly
   aggravating the sparse-array problem above.

3) Notice that the code sketch above is unaffected by changes in
   these issues.  If I originally wrote the code above only for
   an elementary school (ages 6-11, grades 1-6) and was suddenly
   asked to produce the same report for an entire traditional system
   (ages 4-18, grades 1-12) or a non-traditional school (with the
   non-numeric grade codings and ages 4-90), the above code wouldn't
   break.  Isn't writing generalized code that doesn't break a good
   thing to do?

Turning the output side of the report, I can start with something as
simple as

foreach k age-grade-tab/keys [
print [k ":" age-grade-tab/get k]
]

which works for all of the above cases.  However, if I need to provide
a more orderly report, I'll probably write something like

foreach k sort/compare age-grade-tab/keys age-grade-sorter [
; with some nice layout tricks not relevant to this point
]

If there is simply a range expansion (grades 1-12 instead of 1-6,
with ages 4-18 instead of 6-11) the above code still works (ignoring
layout issues).  If we go to the mixed coding of (2) above, all I
have to do is go to one function  age-grade-sorter  and adjust it
appropriately.  All of the rest of the code still works.

I VERY much like the idea of encapsulating each policy decision in
exactly one place in the code.  The idea of having to transform data
back and forth between a natural representation and an agglomerated
string throughout my program (just because some language feature has
a bias in favor of st

[REBOL] GUI Maker - You'll like this. Re:

2000-09-18 Thread ryanc

Sounds spectacular, so I downloaded the latest view for windows (looks nice), but 
there is a problem...

Clicking rebol.com does nothing, and putting http://www.rebol.com/index.r  I 
get the following message...

ERROR - Cannot load index file: http://www.rebol.com/index.r

I can however load it from a console session by doing:

print read http://www.rebol.com/index.r

Not nearly as fun though.

Any ideas???

[EMAIL PROTECTED] wrote:

> I just uploaded layout.r -- a script that builds REBOL graphical user interfaces.  
>With it, you can easily create REBOL GUI's without needing to program a line of code.
>
> You can get layout.r by running REBOL/View and clicking on REBOL.com. When you start 
>Layout it includes a few short instructions on how to use it.
>
> It's pretty good.  You can do some fairly sophisticated GUI editing with it.  Of 
>course, it is just a prototype and there is more to come.  It is likely to blow out 
>here and there, so save your work as you go.
>
> Operation note: run the script in a directory that has a few image files (jpg, gif, 
>png).  That way you can paste the images easily.
>
> So, now you have no excuses. Let's see some REBOL/View interfaces.
>
> -Carl
>
> PS: I wrote this script over the weekend, along with crushing our Merlot grapes.  It 
>will give you a good idea for what 25K can do in REBOL/View.

--


 Ryan Cole
 Programmer Analyst
 www.iesco-dms.com
707-468-5400

The problem of language here are really serious.
We wish to speak in some way about the structure
of the atoms . . . But we cannot speak about atoms
in ordinary language. -W. Heisenberg





[REBOL] GUI Maker - You'll like this.

2000-09-18 Thread carl

I just uploaded layout.r -- a script that builds REBOL graphical user interfaces.  
With it, you can easily create REBOL GUI's without needing to program a line of code.

You can get layout.r by running REBOL/View and clicking on REBOL.com. When you start 
Layout it includes a few short instructions on how to use it.

It's pretty good.  You can do some fairly sophisticated GUI editing with it.  Of 
course, it is just a prototype and there is more to come.  It is likely to blow out 
here and there, so save your work as you go.

Operation note: run the script in a directory that has a few image files (jpg, gif, 
png).  That way you can paste the images easily.

So, now you have no excuses. Let's see some REBOL/View interfaces.

-Carl

PS: I wrote this script over the weekend, along with crushing our Merlot grapes.  It 
will give you a good idea for what 25K can do in REBOL/View.





[REBOL] file picker

2000-09-18 Thread ryanc

I am looking for both /Core and /View file pickers.  I have dinked with
Carls view example of one, but have'nt produced anything usable as of
yet.  Anybody got one?

--Ryan






[REBOL] A bug in file port? Re:

2000-09-18 Thread gmassar

Yep, it works! Should have read the description more closely.

Thanks, Elan!

Geo...

PS I just got your book. It looks good at first sight. :)


[EMAIL PROTECTED] wrote:
> 
> Hi Geo,
> 
> you're doing great! You overlooked one little detai:
> 
> replace
> >> head fp
> 
> by
> 
> >>fp: head fp
> 
> The head function RETURNS the same port whose current position is at the
> head of the port. It does not modify the current position of its argument!
> 
> Hope this helps,
> 
> 
> ;- Elan [ : - ) ]
> author of REBOL: THE OFFICIAL GUIDE
> REBOL Press: The Official Source for REBOL Books
> http://www.REBOLpress.com
> visit me at http://www.TechScribe.com




[REBOL] pinging SELMA Re:(2)

2000-09-18 Thread jeff



   Howdy, T: 
   
  Nice idea, senior! :)

  Anyone actually hacked some improvements to the SELMA code?
  (You can obtain a copy of the selma source by sending the
  subject "selma-source" to SELMA.  Now there's a mouthful!)

  -jeff

> Here's a thought.. some sort of thread
> control/filtering?  Enjoy monitoring the conversation,
> but deleting upwards of 100 e-mails on busy days.
> 
> T Brownell
> 
> 
> --- [EMAIL PROTECTED] wrote:
> 
> 
>   BTW: Anyone made any improvements to SELMA that they would
>   like to share?
> 
>   -jeff
> 
> 
> 
> __   Do You
> Yahoo!?   Yahoo! Mail  -  Free  email  you  can access from
> anywhere!  http://mail.yahoo.com/
> 
> 




[REBOL] A bug in file port? Re:

2000-09-18 Thread rebol

Hi Geo,

you're doing great! You overlooked one little detai:

replace 
>> head fp

by

>>fp: head fp

The head function RETURNS the same port whose current position is at the
head of the port. It does not modify the current position of its argument!

Hope this helps,



At 02:18 PM 9/18/00 -0700, you wrote:
>As per Core User's Guide 2.2.0, on "Ports Access to Files" page
>at section "Line Access", I tried as follows:
>
>>> fp: open/lines %file.txt
>>> print first fp
>I wanted the gold, and I got it --
>>> forall fp [if find first fp "gold" [print first fp]]
>I wanted the gold, and I got it --
>  And somehow the gold isn't all.
>== false
>>>
>
>All seems going well.
>
>For my curiosity, I repeated the last statement:
>
>>> forall fp [if find first fp "gold" [print first fp]]
>== none
>
>Opps. fp must be at its tail.
>So, I tried:
>
>>> tail? fp
>== true
>>> head fp
>>> head? fp
>== false
>
>It puzzled me! Is it a bug or is it me?
>
>I am still relatively new to REBOL in spite of my log
>experience in programming.
>
>Geo Massar
>Veteran programmer
>
>
>

;- Elan [ : - ) ]
author of REBOL: THE OFFICIAL GUIDE
REBOL Press: The Official Source for REBOL Books
http://www.REBOLpress.com
visit me at http://www.TechScribe.com





[REBOL] Re: how to refresh fields in a VID list?

2000-09-18 Thread carl

On 18-Sep-00, [EMAIL PROTECTED] wrote:

> Hi,

> This is a cut-down of the code:

> block: copy [
>["ssql" "www.somewhere.com"
> "a-o.dll-eUK-osform_template=awake.t" "388"]
>["ping" "203.89.213.43" "" "5"]
> ]

> view layout [
>button "refresh" [{Here, contents of block changes - how should
> I refresh list? }]
>mylist: list 850x400 80.80.80 [across field field field field]
> data block
> ]

> Anyone can help?
> Regards,

> Anton.

I asked much the same question a while back - which received no
response. (:   Hope you have better luck, or that the promised new
View/VID docs appear soon and help to explain such things a little
better.




[REBOL] A bug in file port?

2000-09-18 Thread gmassar

As per Core User's Guide 2.2.0, on "Ports Access to Files" page
at section "Line Access", I tried as follows:

>> fp: open/lines %file.txt
>> print first fp
I wanted the gold, and I got it --
>> forall fp [if find first fp "gold" [print first fp]]
I wanted the gold, and I got it --
  And somehow the gold isn't all.
== false
>>

All seems going well.

For my curiosity, I repeated the last statement:

>> forall fp [if find first fp "gold" [print first fp]]
== none

Opps. fp must be at its tail.
So, I tried:

>> tail? fp
== true
>> head fp
>> head? fp
== false

It puzzled me! Is it a bug or is it me?

I am still relatively new to REBOL in spite of my log
experience in programming.

Geo Massar
Veteran programmer




[REBOL] How to load func defs at start-up Re:(2)

2000-09-18 Thread tim

Thank you!
You are indeed civic minded :)
regards
Tim

[EMAIL PROTECTED] wrote:

>  Following inline is my %user.r, followed by my %utilities.r script.
>
> All of the functions listed in utilities are then available to me
> during the session.
>
> *start user.r
>
> REBOL [
> Title: "User Preferences"
> Date: 28-Aug-2000
> ]
>
> protect-system ;protect system words from redefinition with all of my
> utilities
>
> set-net-cases: [
>  1 [[EMAIL PROTECTED] smtp.netzero.net pop.netzero.net none none
> none ]
>  2 [[EMAIL PROTECTED] smtp.mail.yahoo.com pop.mail.yahoo.com none
> none none]
> ]
>
> print "Which net account do you want to use?"
> foreach [number case] set-net-cases [
>  print [number tab case]
> ]
> set-net account: select set-net-cases choice: to-integer ask "Enter
> your number choice here :>> "
>
>
>
>  system/console/prompt: "REBOL:>> "
>  system/console/result: "REBOL:== "
>
>
>
> ;utilities to do each time
> ; keep the utilities folder as a subfolder of where the executable is
> i.e. %./utilities
>
> ;greeting---
> print
> "***"
> Print "Hello, Alan!"
> print  ["It is" now/date "at" now/time "."]
> print  ["You are currently in the" what-dir  "directory." newline]
> print  ["The following are your scripts loaded with utilities.r"
> newline]
>
> do %./utilities/utilities.r  ; put utilities in utilities folder and
> call them in %utilities.r
>
> *end of
> user.r**
>
> *start
> utilities.r**
>
> REBOL[
>  title:  "My Utilities"
>  file:  %utilities.r
>  purpose: "Things I want available."
>  date:  "22-May-2000/10:43:36-4:00"
> ]
>
>
>
> ; scripts I want available
>
> ;make 'symlinks' to directory
> functions
> list: :list-dir
> pwd: :what-dir
> cd: :change-dir
> md: :make-dir
>
> ;-a few simple shortcuts---
> cls: does [prin ["^(1B)[J"]] ; this clears the screen
>
> ;-my utilities--
> do %../utilities/ls.r
> do %../utilities/mail.r
> do %../utilities/convert-lines.r
> do %../utilities/makehead.r
> do %../utilities/s-swap.r
>
> ***end user.r***
>
> Hope this helps.
>
>   [EMAIL PROTECTED] wrote:
>
>
>  Hi:
>  How may I load function definitions at startup?
>  As an experiment, I added the following function def
>  to both user.r and rebol.r:
>  import: func[{"do" a file (IMPORT function def}f[string!]]
>  [do make file! f]
>
>  However, upon starting rebol, rebol does not recognize
>  it.
>
>  I note also, that set-user is not recognized.
>
>  Just curious...
>  TIA
>  Tim
>




[REBOL] credit card validation Re:(2)

2000-09-18 Thread ralph

ah zo! Thanks, Gabriele!

> -Original Message-
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Monday, September 18, 2000 1:03 PM
> To: [EMAIL PROTECTED]
> Subject: [REBOL] Re: credit card validation
> 
> 
> Hello [EMAIL PROTECTED]!
> 
> On 16-Set-00, you wrote:
> 
>  r> cleancard: func [card][
>  r>replace/all card " " ""
>  r> parse card [some [to "^M" (remove find card "^M")] to end]
>  r> parse card [some [to "^/" (remove find card "^/")] to end]
>  r>card: trim card
>  r> ]
> 
> I think that:
> 
>   trim/with card " ^/^M"
> 
> should be faster. Also,
> 
>   to-integer card/1 - 48
> 
> is a bit faster than:
> 
>   to-integer to-string card/1
> 
> Regards,
> Gabriele.
> -- 
> Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer
> Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/
> 




[REBOL] deleting email Re:(2)

2000-09-18 Thread jelinem1


I swear that wasn't there the last time I looked.

- Michael Jelinek





[EMAIL PROTECTED] on 09/18/2000 02:39:48 PM

From: [EMAIL PROTECTED] on 09/18/2000 02:39 PM

Please respond to [EMAIL PROTECTED]
To:   [EMAIL PROTECTED]
cc:
Subject:  [REBOL] deleting email Re:


http://www.rebol.com/users/netpop.html#DeletingEmail

- Original Message -
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, September 18, 2000 2:44 PM
Subject: [REBOL] deleting email


> The pop:// protocol stuff reads email very well, and I'm very happy with
> it. My email client is broken on my computer at home and instead of
pulling
> all my beautiful hair out trying to beat the MS crap into submission,
I've
> got a real neat idea of creating a REBOL program to keep its own email
> database and generate a web front-end and voila! a platform independant
> email client.
>
> The only piece I don't yet know is how to delete an email item from the
> host POP server. Anyone know?
>
> - Michael Jelinek
>












[REBOL] none

2000-09-18 Thread justin

unsubscribe




[REBOL] Even I make mistakes Re:(2)

2000-09-18 Thread ralph

thanks, Elan... handy stuff.

> -Original Message-
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Monday, September 18, 2000 4:09 PM
> To: [EMAIL PROTECTED]
> Subject: [REBOL] Even I make mistakes Re:
>
>
> Hi Ralph,
>
> modules will hopefully reduce the likelyhood of name clashes in
> the future.
> For now I think that using objects helps to avoid this kind of errors in
> scripts that evolve over time.
>
> Another trick is to execute a trial run while PROTECTing all of
> those words
> that one wishes to keep unique. Name clashes will then become evident when
> a word is inadvertently reused.
>
> The following script can be helpful. Given a script file filename.r it
> writes a new filename.rp file.
>
> input: filename.r
> output: filename.rp
>
> When you DO the script filename.rp all globally defined words in this
> script will be PROTECTed. Attempting to redefine any of these words will
> result in an error message.
>
> How it works:
> The script prompts you for a filename or a directory name.
> If you provide a comma separated list of filename, the script will process
> all the filenames provided.
> If you provide a directory name the script will process all the files in
> that directory.
> Hit return if you want to process all script files in the current
> directory. You do not need to provide the current directory name.
>
> The script assumes that the files you wish to process have the extension
> ".r". If a filename does not have the ".r" extension, the script will add
> that extension, regardless of whether or not the filename contains a
> different extension.
>
> The script loads the script file, identifies tokens that will be
> defined in
> the global context by the script it loaded and creates a new script file
> that has the same filename as the original file. It replaces the ".r"
> extension by the extension ".rp".
>
> The script appends two things to the original script file which
> it saves in
> the
> .rp file.
> 1. A block called __set-words. This block contains all globally defined
> words in the script (with exception of words that are defined by using the
> set function.)
> 2. A foreach expression that protects all the words listed in the
> __set-words block.
>
> If you subsequently attempt to load a script that redefines the same word,
> you will get a word protected error, which will alert you to
> those globally
> defined words that are being redefined in this other script.
>
> You can easily test the script by first running it to generate a ".rp"
> file, DO the .rp file and then DO the original .r file.
>
> Example:
>
> 1. First prepare a .rp file:
>
> >> do %protect-words.r
> Script: "Protect-Words" (none)
>
>   Note: Only files with a .r extension will be protected. They will be
> saved to
>   a file that has the same name and the extension .rp.
>   Please enter
>   1. the names of the files you wish to protect separated by
> commas; or
>   2. the qualified pathname to the directory containing the files you
> wish to protect; or
>   3. hit  to protect all files with a .r extension in the
> current directory.
>   >: %test-prscript.r
>
> 2. Now evaluate the .rp file
>
> >> do %test-prscript.rp
> Script: "Untitled" (none)
>
> 3. When you now try to redefine the globally defined word in
> test-prscript.rp by evaluating the original test-proscript.r file, you are
> notified of the attempt to redefine protected words:
>
> >> do %test-prscript.r
> Script: "Untitled" (none)
> ** Script Error: Word this is protected, cannot modify.
> ** Where: this: 1
> that: func []
>
> The file test-prscript.r contains the following script:
>
> REBOL []
>
> this: 1
> that: func [] [ x: 1]
> and-more: "this is more."
>
> The resulting file test-prscript.rp contains:
> REBOL []
>
> this: 1
> that: func [] [ x: 1]
> and-more: "this is more."
> __set-words: [and-more that this]
>
>   foreach word __set-words [
> protect word
>   ]
>
> The protect-words.r script file contains:
>
> REBOL

>   title: "Protect-Words"
>   file: %protect-words.r
> ]
> script: none
> set-words: none
> protect-set-words: {
>   foreach word __set-words [
> protect word
>   ]
> }
>
> dir: system/script/path
>
> read-script: func [filename [%file]] [
>   set-words: make block! 100
>   script: read filename
>   filename
> ]
>
> collect-set-words: func [filename [file!] /local tokens] [
>   set-words: make block! 100
>   tokens: load/next filename
>   while [not empty? tokens]

> if set-word? first tokens [
>   insert set-words to word! first tokens
> ]
> tokens: load/next second tokens
>   ]
>   set-words
> ]
>
> make-protected-script: func [filename [file!] /local protected-filename
> tokens]

>   tokens: mold collect-set-words read-script filename
>   append script join newline "__set-words: "
>   append script tokens
>   append script join newline protect-set-words
>   protected-filename: append filename #"p"
>   write protected-filename script
> ]
>
> protect-these-files: ask {

[REBOL] Re: Associative data store Re:(5)

2000-09-18 Thread g . santilli

Hello [EMAIL PROTECTED]!

On 18-Set-00, you wrote:

 A> Thanks Gabriele! I just need to change this line:
 A>] reduce [val]
 A>to:
 A>] reduce [value]

Oops! I tested that on the console, with:

  associate: func [blk key val] ...

and missed that 'val when changing the function for the list...
:-)

 A>as there's a stray 'VAL running around in Rebol.

Some function that lacks a /local declaration...

Regards,
Gabriele.
-- 
Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer
Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/




[REBOL] Re: Essay on Associative Data Stores

2000-09-18 Thread g . santilli

Hello [EMAIL PROTECTED]!

On 16-Set-00, you wrote:

 j>>> test-select: func [b [block!] k [any-type!] v
 j> [any-type!]] [
 j>[append b reduce [k v]
 j>[select b k
 j>[]
 j>>> blk: []
 j>== []

Try this:

>> test-select: func [b k v] [
[append b reduce [k v]
[select/only b k
[]
>> blk: []
== []
>> test-select blk "a" "b"
== "b"
>> test-select blk [2 3] 6
== 6

 j>>> select blk reduce [[2 3]]
 j>== 6

 j> Now THAT was a surprise! I'll be glad to hear any explanations
 j> anyone can offer for that last case! Whatever the explantion

REBOL functions tend to treat series as a sequence of values, not
as a single value. They have the /ONLY refinement to treat series
as a single value. You SELECT was serching for the value 2
followed by the value 3, not for the value [2 3].

Also notice that:

>> blk: [1 2 "one-two" 1 3 "one-three" 2 3 "two-three"]
== [1 2 "one-two" 1 3 "one-three" 2 3 "two-three"]
>> select blk [1 2]
== "one-two"
>> select blk [1 3]
== "one-three"
>> select blk [2 3]
== "two-three"

Regards,
Gabriele.
-- 
Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer
Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/




[REBOL] Re: Small admin/report benchmark

2000-09-18 Thread g . santilli

Hello [EMAIL PROTECTED]!

On 18-Set-00, you wrote:

 j> Read through the colon-delimited file below (a copy of
 j> an /etc/passwd file, mangled for security purposes),
 j> and print a report tallying the distinct values in the
 j> 7th field (in this case, the field that identifies the
 j> default shell for each userID).  Sort the results by
 j> the value of the field being tallied, and print the
 j> results in neat columns.

This uses a /DIRECT port; it's a bit different,too, just to show
another way to do it. :)


REBOL []

foreach-line: func [
  file [file!]
  code [block!]
  /local line
] [
  ; I don't know if this REALLY uses less memory...
  file: open/read/direct/lines file
  code: func [line] code
  while [line: pick file 1] [code line]
  close file
]

shells: []

count-shell: func [shell [string! none!]] [
  change shell: any [
find/tail shells shell
insert tail shells shell
  ] 1 + any [shell/1 0]
]

foreach-line %passwords.txt [
  count-shell pick parse/all line ":" 7
]

foreach [shell count] sort/skip shells 2 [
  print [
; we really need FORMAT here!
  head insert/dup count: form count " " 3 - length? count
  any [shell "(none)"]
  ]
]


I don't have Perl here, so please repeat the tests with this to
see if it makes any difference.

Regards,
Gabriele.
-- 
Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer
Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/




[REBOL] Re: Decode CGI with checkboxes

2000-09-18 Thread g . santilli

Hello [EMAIL PROTECTED]!

On 17-Set-00, you wrote:

 r> Hi, just wondering how you deal with checkboxes when doing
 r> CGI.

The CGI decoder built in YARWeS worked in this case. Let me see if
I can dig it back...

Hmm... perhaps it's a bit complicated, anyway:

insert-no-dups: func [
list [any-block!]
word [word!]
value [any-type!]
/local pos
] [
either found? pos: find head list to-set-word :word [
either list? second pos [
append second pos value
] [
change/only next pos to-list reduce [second pos value]
]
] [
append list reduce [to-set-word :word value]
]
head list
]

uchar: [unreserved | escape]
unreserved: make bitset! 
#{9277FF03FE7F}
escape: [#"%" 2 HEX]
HEX: charset "0123456789ABCDEFabcdef"
query-allowed: charset ";/?:@+"
last-query-name: none
last-query-value: none
last-query-object: make list! []
namevalue: [
copy last-query-name some [uchar | query-allowed] #"="
copy last-query-value some [uchar | query-allowed] [#"&" | CRLF | end]
(insert-no-dups last-query-object to-word decode last-query-name decode 
last-query-value)
]
query-rule: [(last-query-object: make list! []) some namevalue end]
decoded-string: copy ""
last-string: none
last-hex: none
filter: func [str] [either none? str [""] [str]]
decode-rule: [[
some [copy last-string to #"%" skip copy last-hex 2 HEX (
append decoded-string join filter last-string hex2char last-hex
)] | none
] copy last-string to end (append decoded-string filter last-string)
]
decode: func [
string [any-string!]
] [
decoded-string: copy ""
string: translate copy string #"+" #" "
if not parse/all string decode-rule [
throw make error! reduce [
'user 'message
"Decode error"
"Error decoding url-encoded string"
string
]
]
decoded-string
]

parse-query: func [string [string!]] [
parse/all string query-rule
make object! to-block head last-query-object
]

I just did some cut&paste, so probably it won't work. Anyway,
you could even continue using DECODE-CGI:

>> blk: decode-cgi "name=value1&name=value2&name=value3"
== [name: "value1" name: "value2" name: "value3"]
>> fixed: []
== []
>> foreach [name value] blk [ 
[either pos: find fixed :name [
[pos/2: compose [(pos/2) (value)]
[] [
[insert insert fixed :name value
[]
[]
== [name: ["value1" "value2" "value3"]]

HTH,
Gabriele.
-- 
Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer
Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/




[REBOL] Re: debugging rebol apps

2000-09-18 Thread g . santilli

Hello [EMAIL PROTECTED]!

On 17-Set-00, you wrote:

 r> Hi. Since rebol does not have a compiler, I find it a bit more
 r> difficult to debug large rebApps. Anyone have any debugging
 r> tips/strategies? Curious how others debug their scripts...

Actually, interpreted languages are usually much easier to debug
than compiled ones.

WRT REBOL, you can add PROBEs to you code to see what happens;
this is the method I prefer, but you need to know where to put
PROBEs. Sometime you might want to use TRACE, as in:

  trace on
  ; piece of code to debug
  trace off

but note that this produces a lot of output.

A good advice, that you surely know, is to subdivide you problem
into subproblems, and subdivide your code into functions. This way
you can debug every function individually at the console, before
testing the whole program.

HTH,
Gabriele.
-- 
Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer
Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/




[REBOL] Re: credit card validation

2000-09-18 Thread g . santilli

Hello [EMAIL PROTECTED]!

On 16-Set-00, you wrote:

 r> cleancard: func [card][
 r>replace/all card " " ""
 r> parse card [some [to "^M" (remove find card "^M")] to end]
 r> parse card [some [to "^/" (remove find card "^/")] to end]
 r>card: trim card
 r> ]

I think that:

  trim/with card " ^/^M"

should be faster. Also,

  to-integer card/1 - 48

is a bit faster than:

  to-integer to-string card/1

Regards,
Gabriele.
-- 
Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer
Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/




[REBOL] Even I make mistakes Re:

2000-09-18 Thread rebol

Hi Ralph,

modules will hopefully reduce the likelyhood of name clashes in the future.
For now I think that using objects helps to avoid this kind of errors in
scripts that evolve over time. 

Another trick is to execute a trial run while PROTECTing all of those words
that one wishes to keep unique. Name clashes will then become evident when
a word is inadvertently reused.

The following script can be helpful. Given a script file filename.r it
writes a new filename.rp file.

input: filename.r
output: filename.rp

When you DO the script filename.rp all globally defined words in this
script will be PROTECTed. Attempting to redefine any of these words will
result in an error message. 

How it works:
The script prompts you for a filename or a directory name. 
If you provide a comma separated list of filename, the script will process
all the filenames provided.
If you provide a directory name the script will process all the files in
that directory.
Hit return if you want to process all script files in the current
directory. You do not need to provide the current directory name.

The script assumes that the files you wish to process have the extension
".r". If a filename does not have the ".r" extension, the script will add
that extension, regardless of whether or not the filename contains a
different extension.

The script loads the script file, identifies tokens that will be defined in
the global context by the script it loaded and creates a new script file
that has the same filename as the original file. It replaces the ".r"
extension by the extension ".rp". 

The script appends two things to the original script file which it saves in
the 
.rp file. 
1. A block called __set-words. This block contains all globally defined
words in the script (with exception of words that are defined by using the
set function.)
2. A foreach expression that protects all the words listed in the
__set-words block. 

If you subsequently attempt to load a script that redefines the same word,
you will get a word protected error, which will alert you to those globally
defined words that are being redefined in this other script. 

You can easily test the script by first running it to generate a ".rp"
file, DO the .rp file and then DO the original .r file. 

Example:

1. First prepare a .rp file:

>> do %protect-words.r
Script: "Protect-Words" (none)

  Note: Only files with a .r extension will be protected. They will be
saved to
  a file that has the same name and the extension .rp.
  Please enter
  1. the names of the files you wish to protect separated by commas; or
  2. the qualified pathname to the directory containing the files you
wish to protect; or
  3. hit  to protect all files with a .r extension in the
current directory.
  >: %test-prscript.r

2. Now evaluate the .rp file

>> do %test-prscript.rp
Script: "Untitled" (none)

3. When you now try to redefine the globally defined word in
test-prscript.rp by evaluating the original test-proscript.r file, you are
notified of the attempt to redefine protected words:

>> do %test-prscript.r
Script: "Untitled" (none)
** Script Error: Word this is protected, cannot modify.
** Where: this: 1
that: func []

The file test-prscript.r contains the following script:

REBOL []

this: 1
that: func [] [ x: 1]
and-more: "this is more."

The resulting file test-prscript.rp contains:
REBOL []

this: 1
that: func [] [ x: 1]
and-more: "this is more."
__set-words: [and-more that this]

  foreach word __set-words [
protect word
  ]

The protect-words.r script file contains:

REBOL [  
  title: "Protect-Words"
  file: %protect-words.r
]
script: none
set-words: none
protect-set-words: {
  foreach word __set-words [
protect word
  ]
}

dir: system/script/path

read-script: func [filename [%file]] [
  set-words: make block! 100
  script: read filename
  filename
]

collect-set-words: func [filename [file!] /local tokens] [
  set-words: make block! 100
  tokens: load/next filename
  while [not empty? tokens] [ 
if set-word? first tokens [
  insert set-words to word! first tokens
]
tokens: load/next second tokens 
  ]
  set-words
]

make-protected-script: func [filename [file!] /local protected-filename
tokens] [  
  tokens: mold collect-set-words read-script filename
  append script join newline "__set-words: "
  append script tokens
  append script join newline protect-set-words
  protected-filename: append filename #"p"
  write protected-filename script
]

protect-these-files: ask {
  Note: Only files with a .r extension will be protected. They will be
saved to 
  a file that has the same name and the extension .rp.
  Please enter 
  1. the names of the files you wish to protect separated by commas; or
  2. the qualified pathname to the directory containing the files you
wish to protect; or
  3. hit  to protect all files with a .r extension in the
current directory.
  >: }
either found? find protect-these-files "," [
  protect-these-files: parse/all protec

[REBOL] How to load func defs at start-up Re:

2000-09-18 Thread civicminded4
 Following inline is my %user.r, followed by my %utilities.r script.
All of the functions listed in utilities are then available to me during the session.
*start user.r
REBOL [Title: "User Preferences"Date: 28-Aug-2000]
protect-system ;protect system words from redefinition with all of my utilities
set-net-cases: [ 1 [[EMAIL PROTECTED] smtp.netzero.net pop.netzero.net none none none ] 2 [[EMAIL PROTECTED] smtp.mail.yahoo.com pop.mail.yahoo.com none none none]]
print "Which net account do you want to use?"foreach [number case] set-net-cases [ print [number tab case]]set-net account: select set-net-cases choice: to-integer ask "Enter your number choice here :>> "
 
 system/console/prompt: "REBOL:>> " system/console/result: "REBOL:== "
 
;utilities to do each time ; keep the utilities folder as a subfolder of where the executable is i.e. %./utilities
;greeting---print "***"Print "Hello, Alan!"print  ["It is" now/date "at" now/time "."]print  ["You are currently in the" what-dir  "directory." newline]print  ["The following are your scripts loaded with utilities.r" newline]
do %./utilities/utilities.r  ; put utilities in utilities folder and call them in %utilities.r
*end of user.r**
*start utilities.r**
REBOL[ title:  "My Utilities" file:  %utilities.r purpose: "Things I want available." date:  "22-May-2000/10:43:36-4:00"]
 
; scripts I want available
;make 'symlinks' to directory functionslist: :list-dirpwd: :what-dircd: :change-dirmd: :make-dir
;-a few simple shortcuts---cls: does [prin ["^(1B)[J"]] ; this clears the screen
;-my utilities--do %../utilities/ls.rdo %../utilities/mail.rdo %../utilities/convert-lines.rdo %../utilities/makehead.rdo %../utilities/s-swap.r
***end user.r***
Hope this helps.
  [EMAIL PROTECTED] wrote: 
Hi:How may I load function definitions at startup?As an experiment, I added the following function defto both user.r and rebol.r:import: func[{"do" a file (IMPORT function def}f[string!]][do make file! f]However, upon starting rebol, rebol does not recognizeit.I note also, that set-user is not recognized.Just curious...TIATim

[REBOL] deleting email Re:

2000-09-18 Thread ole_f

Hi Michael, 18-Sep-2000 you wrote:

[...]
>The only piece I don't yet know is how to delete an email item from the
>host POP server. Anyone know?

Just use 'remove on the opened port, like you would with any series.
(Absolutely not tested) code for deleting the 4th message in your mailbox:

p: open pop://username:[EMAIL PROTECTED]
remove at p 4
close p

Hope this is what you asked for (since I have a great track record of
misunderstanding what people actually want) :-)

Kind regards,
-- 
Ole Friis <[EMAIL PROTECTED]>

Amiga is a trademark of Amiga Inc.




[REBOL] deleting email Re:

2000-09-18 Thread rebol

http://www.rebol.com/users/netpop.html#DeletingEmail

- Original Message -
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, September 18, 2000 2:44 PM
Subject: [REBOL] deleting email


> The pop:// protocol stuff reads email very well, and I'm very happy with
> it. My email client is broken on my computer at home and instead of
pulling
> all my beautiful hair out trying to beat the MS crap into submission, I've
> got a real neat idea of creating a REBOL program to keep its own email
> database and generate a web front-end and voila! a platform independant
> email client.
>
> The only piece I don't yet know is how to delete an email item from the
> host POP server. Anyone know?
>
> - Michael Jelinek
>




[REBOL] Essay on Associative Data Stores Re:

2000-09-18 Thread ole_f

Hi Joel, 16-Sep-2000 you wrote:

>1.1.  Keys and values are not distinguised.
>1.2.  Storage management/economy require extra code to
>  handle replacement of values for existing keys.
>1.3.  The  block!  type doesn't appear to be supported as a key
>  in a manner consistent with other data types.

I've attached some functions for manipulating with an associative data
structure. I personally think they suffice for my normal uses, but I'm
looking forward to your comments (though, please keep it short then, I don't
have the time to read through all that ASCII ;-) ).

BTW, using a hash! for the "keys" array would probably be a better idea than
just using a block!, as I currently do. _If_ find/only works faster on hash!
lists, that is (it should be, but I don't know).

Kind regards,
--
Ole Friis <[EMAIL PROTECTED]>

Amiga is a trademark of Amiga Inc.


REBOL []

create-ads: func [
  "Creates a new associative data structure"
][
  make object! [
keys: copy []
values: copy []
  ]
]

lookup-ads: func [
  "Returns the value associated with the key"
  ads [object!] "The associative data structure"
  key [any-type!] "Key"
  /local t-list
][
  if found? t-list: find/only ads/keys key [
pick ads/values index? t-list
  ]
]

associate-ads: func [
  "Appends the new key/value pair in the data structure"
  ads [object!] "The associative data structure"
  key [any-type!] "Key"
  value [any-type!] "Value"
  /local t-list
][
  either found? t-list: find/only ads/keys key [
change/only at ads/values index? t-list value
  ][
append/only ads/keys key
append/only ads/values value
  ]
]




[REBOL] deleting email

2000-09-18 Thread jelinem1

The pop:// protocol stuff reads email very well, and I'm very happy with
it. My email client is broken on my computer at home and instead of pulling
all my beautiful hair out trying to beat the MS crap into submission, I've
got a real neat idea of creating a REBOL program to keep its own email
database and generate a web front-end and voila! a platform independant
email client.

The only piece I don't yet know is how to delete an email item from the
host POP server. Anyone know?

- Michael Jelinek





[REBOL] FTP Absolute Path Problem Re:

2000-09-18 Thread jelinem1


I don't think this is an FTP issue; I believe the issue has to do with your
machine's setup. Your machine recognizes your user name and sets your HOME
path. Your machine forces FTP to prepend the HOME path. I could be wrong,
but I don't think FTP can work around this. This is a security feature of
the machine.

You could always devise a work-around like %../../ or creating a
soft-link (in your HOME directory) to the directory you want.

- Michael Jelinek





[EMAIL PROTECTED] on 09/18/2000 11:32:51 AM

From: [EMAIL PROTECTED] on 09/18/2000 11:32 AM

Please respond to [EMAIL PROTECTED]
To:   [EMAIL PROTECTED]
cc:
Subject:  [REBOL] FTP Absolute Path Problem


I'm having the following problem:

I want to load a file that resides on a server under the absolute path of
/var/local/ecdr/data/.  However, when I use the ftp command, it always
thinks I
want to do relative addressing from my home directory.

I have tried:

records: load ftp://ecdr:[EMAIL PROTECTED]/var/local/ecdr/data/cdr_out

and also:

records: load ftp://ecdr:[EMAIL PROTECTED]//var/local/ecdr/data/cdr_out

and even:

records: load join ftp://ecdr:[EMAIL PROTECTED]
%/var/local/ecdr/data/cdr_out

but it always tells me that rebol is looking for
"./var/local/ecdr/data/cdr_out".  In other words, it is looking under
/home/cribbsj/var/local/ecdr/data/cdr_out, which, of course, does not
exist.

In short, does anyone know how to make the ftp command use absolute path
addressing as opposed to relative path addressing?

Any help would be greatly appreciated!
--
Jamey Cribbs
Sr. Technical Consultant












[REBOL] debugging rebol apps Re:(3)

2000-09-18 Thread jelinem1


Heheh, when it works. :D

- Michael Jelinek





[EMAIL PROTECTED] on 09/18/2000 10:11:18 AM

From: [EMAIL PROTECTED] on 09/18/2000 10:11 AM

Please respond to [EMAIL PROTECTED]
To:   [EMAIL PROTECTED]
cc:
Subject:  [REBOL] debugging rebol apps Re:(2)




  Howdy, Michael:

> Well, since you asked...
>
> I  have a fairly  large  application, divided  into several
> files (modules).
 . . .
> eprint: make object! [
>   adv: func   [msg-raw  [series!]][ if any  [testing/adv
>   testing/all][print
> [ "^(tab)ADV: " reduce msg-raw ]]]
>   dun: func   [msg-raw [series!]][  if  any [testing/lib
>   testing/all][print
> [ "^(tab)DUNGEON: " reduce msg-raw ]]]

  Wow, when do we get to see that? (-:

  -Jeff












[REBOL] Associative Data Store Re:(5)

2000-09-18 Thread ryanc

Here is my very subtle mold change applied to Gabriele's script:

associate: func [block [block!] key value] [
  head change/only any [
find/tail block mold key
insert tail block mold key
  ] reduce [value]
]

associate?: func [block [block!] key] [
  all [key: select block mold key first mold key]
]

I cannot find any bugs, someone else want to try?

--Ryan

[EMAIL PROTECTED] wrote:

> Keith and Pek made me realize the obvious.  The main problem with select is we
> need to use it with two differrent datatypes.  Thus so, we can force the key to
> string and wrap the data with a block.  I believe if we convert the string with
> mold we save data type integrity.  I think this solves all problems with using
> select.
>
> --Ryan
>
> [EMAIL PROTECTED] wrote:
>
> > - Original Message -
> > From: <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Monday, September 18, 2000 4:35 PM
> > Subject: [REBOL] Associative Data Store Re:(2)
> >
> > > I'm probably going to get beaten up for this :), but if my question is
> > > totally absurd, please excuse my ignorance...
> > >
> > > You seem to put a lot of emphasis on being able to use block!s as keys. Is
> > > this really necessary or desired?
> > >
> > > It seems like an implementation would be easier and/or more efficient if
> > we
> > > didn't have to worry about that case. Same for logic! values :)
> > >
> > > Many other languages get by with just strings for keys, why do we have to
> > be
> > > able to use every Rebol data type as a key?
> >
> > That's true. Even XBase systems work that way. In real - what about any
> > entry form fiels? They are all strings ... and if not, you can convert to
> > string first :-)
> >
> > -pekr-
> >
> > >
> > > Keith
> > >
> > > - Original Message -
> > > From: <[EMAIL PROTECTED]>
> > > To: <[EMAIL PROTECTED]>
> > > Sent: Monday, September 18, 2000 7:47 AM
> > > Subject: [REBOL] Associative Data Store Re:
> > >
> > >
> > > > Here's what happened when I tried it:
> > > >
> > > > >> blk: []
> > > > == []
> > > > >> Associate blk [2 3] 5
> > > > == [[2 3] [5]]
> > > > >> Associate? blk [2 3]
> > > > == none
> > > >
> > > > Beg pardon?  Also...
> > > >
> > > > >> Associate blk 5 7
> > > > == [[2 3] [5] 5 [7]]
> > > > >> Associate blk [5] 9
> > > > == [[2 3] [5] 5 [9]]
> > > > >> Associate? blk 5
> > > > == 9
> > > > >> Associate? blk [5]
> > > > == 9
> > > >
> > > > Hmmm...  Can't distinguish  5  from  [5]  ??
> > > >
> > > > >> Associate? blk reduce [2 3]
> > > > == none
> > > > >> Associate? blk reduce [[2 3]]
> > > > == 5
> > > >
> > > > Aha!  Unlike all other data types, an extra [] wrapper is require
> > > > for  block! -type keys?  Well, let's check to see if the old
> > > > merged-key/value-space bug is still present.
> > > >
> > > > >> Associate? blk reduce [[5]]
> > > > ** Script Error: first expected series argument of type: series
> > > > pair event money date object port time tuple any-function
> > > > library struct event.
> > > > ** Where: all [
> > > > Value: select Block Key
> > > > first Value
> > > > ]
> > > >
> > > > So I can't even check to see if [[5]] (or [5]???) might have been
> > > > legitimately used as a key?
> > > >
> > > > This version still uses  find  and therefore still "inherits" the
> > > > buggy behavior when  block!  data are used as keys.
> > > >
> > > > -jn-
> > > >
> > > > [EMAIL PROTECTED] wrote:
> > > > >
> > > > > Here's an implementation for an Associative Data Store (ADS) that uses
> > > only
> > > > > two functions, doesn't require an object per ADS and can use any Rebol
> > > value
> > > > > as a key. Comment invited. Thanks to Gabriele for showing how to
> > shorten
> > > the
> > > > > 'Associate? function.
> > > > >
> > > >
> > > > [code snipped]
> > >
>
> --
>
>  Ryan Cole
>  Programmer Analyst
>  www.iesco-dms.com
> 707-468-5400
>
> The problem of language here are really serious.
> We wish to speak in some way about the structure
> of the atoms . . . But we cannot speak about atoms
> in ordinary language. -W. Heisenberg




[REBOL] Small admin/report benchmark Re:

2000-09-18 Thread sterling


This is great!  I love to see stuff like this.  It'll help us get a
good sense for where we stand and it produces useful scripts to the
community at the same time.

I haven't had a chance to run the same test here but I will sometime.
Did you try parsing the whole file instead of line by line?  I would
think it would be a little faster that way.  Maybe I'll try that later 
as a break from /Command work.

Sterling




[REBOL] Associative Data Store Re:(4)

2000-09-18 Thread ryanc

Keith and Pek made me realize the obvious.  The main problem with select is we
need to use it with two differrent datatypes.  Thus so, we can force the key to
string and wrap the data with a block.  I believe if we convert the string with
mold we save data type integrity.  I think this solves all problems with using
select.

--Ryan

[EMAIL PROTECTED] wrote:

> - Original Message -
> From: <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Monday, September 18, 2000 4:35 PM
> Subject: [REBOL] Associative Data Store Re:(2)
>
> > I'm probably going to get beaten up for this :), but if my question is
> > totally absurd, please excuse my ignorance...
> >
> > You seem to put a lot of emphasis on being able to use block!s as keys. Is
> > this really necessary or desired?
> >
> > It seems like an implementation would be easier and/or more efficient if
> we
> > didn't have to worry about that case. Same for logic! values :)
> >
> > Many other languages get by with just strings for keys, why do we have to
> be
> > able to use every Rebol data type as a key?
>
> That's true. Even XBase systems work that way. In real - what about any
> entry form fiels? They are all strings ... and if not, you can convert to
> string first :-)
>
> -pekr-
>
> >
> > Keith
> >
> > - Original Message -
> > From: <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Monday, September 18, 2000 7:47 AM
> > Subject: [REBOL] Associative Data Store Re:
> >
> >
> > > Here's what happened when I tried it:
> > >
> > > >> blk: []
> > > == []
> > > >> Associate blk [2 3] 5
> > > == [[2 3] [5]]
> > > >> Associate? blk [2 3]
> > > == none
> > >
> > > Beg pardon?  Also...
> > >
> > > >> Associate blk 5 7
> > > == [[2 3] [5] 5 [7]]
> > > >> Associate blk [5] 9
> > > == [[2 3] [5] 5 [9]]
> > > >> Associate? blk 5
> > > == 9
> > > >> Associate? blk [5]
> > > == 9
> > >
> > > Hmmm...  Can't distinguish  5  from  [5]  ??
> > >
> > > >> Associate? blk reduce [2 3]
> > > == none
> > > >> Associate? blk reduce [[2 3]]
> > > == 5
> > >
> > > Aha!  Unlike all other data types, an extra [] wrapper is require
> > > for  block! -type keys?  Well, let's check to see if the old
> > > merged-key/value-space bug is still present.
> > >
> > > >> Associate? blk reduce [[5]]
> > > ** Script Error: first expected series argument of type: series
> > > pair event money date object port time tuple any-function
> > > library struct event.
> > > ** Where: all [
> > > Value: select Block Key
> > > first Value
> > > ]
> > >
> > > So I can't even check to see if [[5]] (or [5]???) might have been
> > > legitimately used as a key?
> > >
> > > This version still uses  find  and therefore still "inherits" the
> > > buggy behavior when  block!  data are used as keys.
> > >
> > > -jn-
> > >
> > > [EMAIL PROTECTED] wrote:
> > > >
> > > > Here's an implementation for an Associative Data Store (ADS) that uses
> > only
> > > > two functions, doesn't require an object per ADS and can use any Rebol
> > value
> > > > as a key. Comment invited. Thanks to Gabriele for showing how to
> shorten
> > the
> > > > 'Associate? function.
> > > >
> > >
> > > [code snipped]
> >

--


 Ryan Cole
 Programmer Analyst
 www.iesco-dms.com
707-468-5400

The problem of language here are really serious.
We wish to speak in some way about the structure
of the atoms . . . But we cannot speak about atoms
in ordinary language. -W. Heisenberg





[REBOL] Small admin/report benchmark Re:

2000-09-18 Thread jeff



   Howdy, Joel:

> REBOL solution:
> 
> My effort at producing a comparable REBOL script is
> given next.  I tried to use appropriate REBOLish
> idioms to accomplish equivalent results.
> 
>  begin REBOL script 
> #!/usr/local/bin/rebol -sq
> 
> REBOL []
> 
> shells: copy make block! 5
> countshell: func [sh [string!] /local shr] [
>  either none? shr: find shells sh [
>  append shells reduce [sh 1]
>  ][
>  change shr: next shr 1 + shr/1
>  ]
> ]
> 
> foreach line read/lines %passwords.txt [
>  countshell any [pick parse/all line ":" 7  "(none)"]
> ]
> 
> foreach [sh n] sort/skip shells 2 [
>  n: to-string n
>  while [3 > length? n] [insert n " "]
>  print [n sh]
> ]
> = end REBOL script =

Here's an alternate approach:
(I skipped the sort for now..)

REBOL []
shells: make block! 5 ;- no need for xtra copy

do func [/sh/blk][
foreach line read/lines %passwords.txt [
sh: pick parse/all line ":" 7
append any [
select shells sh all [
append shells reduce [sh blk: copy []] blk
]
] sh
]
blk: copy [backdrop 20.40.200 title "Shells" across]
foreach [name sh] shells [
   append blk compose [text (form length? sh) tab text (form name) return]
]
view layout blk
] 

;-- Note, we used rebol's NONE datatype to represent those
;whose shells are NONE. 


  The approach taken is to use blocks to accumulate data and
  use length? and index? and what not to do the bean counting.

  I did cheat, though, and didn't bother sorting. Sorry!
  Reason why is the REBOL sort function is getting some much
  needed work done to it right now and the new sort function
  will make this kind of thing a lot easier.  Might even use
  it to sort the actual layout produced!  :-)

  Perl is likely faster for various tasks to REBOL, but REBOL
  makes many tasks much easier to do.

  It's all how you slice it. :)

  -jeff




[REBOL] pinging SELMA Re:(2)

2000-09-18 Thread civicminded4
 Yes, please, thread the comments!
  [EMAIL PROTECTED] wrote: 
Here's a thought.. some sort of threadcontrol/filtering? Enjoy monitoring the conversation,but deleting upwards of 100 e-mails on busy days.T Brownell--- [EMAIL PROTECTED] wrote:BTW: Anyone made any improvements to SELMA thatthey wouldlike to share?-jeff__Do You Yahoo!?Yahoo! Mail - Free email you can access from anywhere!http://mail.yahoo.com/

[REBOL] standard message object

2000-09-18 Thread RChristiansen

I have some thoughts about creating a standard message 
object! and I would like to hear your input.

Across the Internet, whether it be in e-mail, newsgroups, 
bulletin board systems, or Web pages, the most 
common form of communication is the message. 
Messages have common values, illustrated as follows:

EMAIL
-
From:
Subject:
Content:

NEWS

From:
Subject:
Content:

BULLETIN BOARD
--
Author:
Subject:
Comment:

NEWS STORY
--
Byline:
Headline:
Body:

...and I'm sure there are more comparisons I cannot think 
of at the moment.

Because of these similarities, I suggest that a standard 
message object! be developed so that information can 
easily be exchanged between mediums.

Furthermore, functions should be developed for converting 
messages from the e-mail, news, etc., formats into the 
standard message object! and vice-versa.

But what values should be included in the message 
object! ?

A news posting, for example, may include the following 
headers...

From
Subject
Date
Newsgroups
Path
In-Reply-To
Message-ID
References
MIME-Version
Content-Type
Lines
NNTP-Posting-Host
X-Trace
NNTP-Posting-Date
Organization
Xref
Followup-To
Content-Transfer-Encoding
X-Complaints-To
X-Mailer
X-Accept-Language
Reply-To
X-Newsreader
X-Priority
X-MSMail-Priority
X-MimeOLE
User-Agent
X-Abuse-to
X-Comments
X-Anon
X-Mail-To-News-Contact
X-Mimeole
X-Sender
X-Server-Date
X-MIMEOLE
X-Abuse-Info
X-Anon-1
X-Anon-2
X-No-Archive
Sender


While an e-mail message may include the following 
headers...

Received
Return-path
To
From
Reply-To
Date
Subject
Organization
Message-Id
X-REBOL
MIME-Version
Content-Type
Precedence
X-MindSpring-Loop
Content-transfer-encoding
Priority
In-reply-to
References
X-mailer
X-SELMA
X-PMFLAGS


Bulletin Board messages and News Articles have their 
own formats, as well. Is there a standard message 
object! that could be developed and re-used?

For example...

make object! [
Author:
Date:
Subject:
Body:
Message-ID:
MIME-Version:
Content-Type:
Origin:
]

Are more values than the above needed for a standard 
message object?

-Ryan




[REBOL] FTP Absolute Path Problem

2000-09-18 Thread cribbsj

I'm having the following problem:

I want to load a file that resides on a server under the absolute path of
/var/local/ecdr/data/.  However, when I use the ftp command, it always thinks I
want to do relative addressing from my home directory.

I have tried: 

records: load ftp://ecdr:[EMAIL PROTECTED]/var/local/ecdr/data/cdr_out

and also:

records: load ftp://ecdr:[EMAIL PROTECTED]//var/local/ecdr/data/cdr_out

and even:

records: load join ftp://ecdr:[EMAIL PROTECTED] %/var/local/ecdr/data/cdr_out

but it always tells me that rebol is looking for
"./var/local/ecdr/data/cdr_out".  In other words, it is looking under
/home/cribbsj/var/local/ecdr/data/cdr_out, which, of course, does not exist.

In short, does anyone know how to make the ftp command use absolute path
addressing as opposed to relative path addressing?

Any help would be greatly appreciated!
-- 
Jamey Cribbs
Sr. Technical Consultant




[REBOL] How to load func defs at start-up

2000-09-18 Thread tim


Hi:
How may I load function definitions at startup?
As an experiment, I added the following function def
to both user.r and rebol.r:
import: func[{"do" a file (IMPORT function def}f[string!]]
[do make file! f]

However, upon starting rebol, rebol does not recognize
it.

I note also, that set-user is not recognized.

Just curious...
TIA
Tim




[REBOL] best means of passing refinements from main to helper function? Re:(4)

2000-09-18 Thread jeff



> But  then this  (the  example below)  explicitly  lists the
> refinements in the function  body.  I think the  "ultimate"
> solution would process an arbitray list, as with a loop. It
> is fairly  short  though  :) and IS   a  step  up  from 'if
> statements, esp for more than 2 refinements.
> 
> - Michael Jelinek

  Yes, like I meant to say: it's not exactly elegant. (:
  Refinement transferal is at the frontiers of REBOL
  research. ;)

  -jeff

> main: func [
>  /use-month month-to-use /use-day day-to-use
> ] [
>  go?: func ['what  /it][either it: get what [either true = it [what][it]][]]
>  do  reduce  compose/deep   [
>  to-path   [deduction  (go? use-month) (go? use-day)]
>  (go? month-to-use) (go? day-to-use)
>  ]
> ]




[REBOL] debugging rebol apps Re:(2)

2000-09-18 Thread jeff



  Howdy, Michael:

> Well, since you asked...
> 
> I  have a fairly  large  application, divided  into several
> files (modules). 
 . . .
> eprint: make object! [
>   adv: func   [msg-raw  [series!]][ if any  [testing/adv
>   testing/all][print
> [ "^(tab)ADV: " reduce msg-raw ]]]
>   dun: func   [msg-raw [series!]][  if  any [testing/lib
>   testing/all][print
> [ "^(tab)DUNGEON: " reduce msg-raw ]]]

  Wow, when do we get to see that? (-:

  -Jeff




[REBOL] debugging rebol apps Re:(2)

2000-09-18 Thread jeff



Incrementally.  Each time I make a change that I think is
trivial, I still go make sure it works as expected.  I break
out common code into functions, and then debug those functions
individually.  Always add type specifiers to function arguments
to be sure you're being passed what is expected. 

The thing that always seems to help for me is I'll try to make
each module do something very simple successfully before
elaborating.  Like, for instance, if the goal of a function is
to generate some data and then display it (or have another
function display it) I make my first goal to successfully:

  print mold data

When a script reaches the couple pages mark, I find it helps
to break out common parts, like utility functions, to go into
their own file.  They can always be recombined later, but the
more scrolling you end up doing the more confusing it can become.

Nothing revolutionary in those approaches, but I find them
helpful in building larger apps.

-jeff

> Hi. Since rebol  does not have a  compiler, I find it a bit
> more difficult to  debug  large rebApps.  Anyone  have  any
> debugging tips/strategies? Curious  how others debug  their
> scripts...
> 
> Rishi




[REBOL] pinging SELMA Re:

2000-09-18 Thread tbrownell

Here's a thought.. some sort of thread
control/filtering?  Enjoy monitoring the conversation,
but deleting upwards of 100 e-mails on busy days.

T Brownell


--- [EMAIL PROTECTED] wrote:
 
 
 BTW:  Anyone made any improvements to SELMA that
 they would
 like to share?
 
 -jeff
 


__
Do You Yahoo!?
Yahoo! Mail - Free email you can access from anywhere!
http://mail.yahoo.com/




[REBOL] pinging SELMA

2000-09-18 Thread jeff




  Just FYI: If you think one of the lists is down you can
  always send SELMA a message with only the word "help" on the
  subject line.

  If she's running she'll let you know with a copy of the
  commands she knows:

  --


Here is some helpful information:

Commands to REBOL SELMA are given on the subject
line of your message. These commands are currently
supported:

  help - get this information
  suggest - make a suggestion about the list
  selma-source - get the current source code to SELMA
  get msg N - send yourself message #N
  subscribe - add yourself to the list
  unsubscribe - remove yourself from the list

No other commands are provided at this time.

-SELMA


  ---

  BTW:  Anyone made any improvements to SELMA that they would
  like to share?

  -jeff




[REBOL] CGI setup Re:

2000-09-18 Thread tim

Hi:
 Add a new string value to :
 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3Svc\Parameters\Script

 Map  with name of .r  (this is the suffix for the rebol script) and data
 value of

> c:\rebol\rebol.exe -cs %s

> (obviously substitute the appropriate path to your executable).
This works for me on Win NT 4.0 sp6. You may try you scripts in
both cgi-bin and /scripts folder. In my case I can run cgi scripts
from the cgi-bin directory and all the folders below that path.

-Tim
[EMAIL PROTECTED] wrote:

> does anyone know how to setup MS PWS with rebol for cgi in windows95/98
> i have n idea.
>
> aden.




[REBOL] Associative Data Store Re:(3)

2000-09-18 Thread petr . krenzelok


- Original Message -
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, September 18, 2000 4:35 PM
Subject: [REBOL] Associative Data Store Re:(2)


> I'm probably going to get beaten up for this :), but if my question is
> totally absurd, please excuse my ignorance...
>
> You seem to put a lot of emphasis on being able to use block!s as keys. Is
> this really necessary or desired?
>
> It seems like an implementation would be easier and/or more efficient if
we
> didn't have to worry about that case. Same for logic! values :)
>
> Many other languages get by with just strings for keys, why do we have to
be
> able to use every Rebol data type as a key?

That's true. Even XBase systems work that way. In real - what about any
entry form fiels? They are all strings ... and if not, you can convert to
string first :-)

-pekr-

>
> Keith
>
> - Original Message -
> From: <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Monday, September 18, 2000 7:47 AM
> Subject: [REBOL] Associative Data Store Re:
>
>
> > Here's what happened when I tried it:
> >
> > >> blk: []
> > == []
> > >> Associate blk [2 3] 5
> > == [[2 3] [5]]
> > >> Associate? blk [2 3]
> > == none
> >
> > Beg pardon?  Also...
> >
> > >> Associate blk 5 7
> > == [[2 3] [5] 5 [7]]
> > >> Associate blk [5] 9
> > == [[2 3] [5] 5 [9]]
> > >> Associate? blk 5
> > == 9
> > >> Associate? blk [5]
> > == 9
> >
> > Hmmm...  Can't distinguish  5  from  [5]  ??
> >
> > >> Associate? blk reduce [2 3]
> > == none
> > >> Associate? blk reduce [[2 3]]
> > == 5
> >
> > Aha!  Unlike all other data types, an extra [] wrapper is require
> > for  block! -type keys?  Well, let's check to see if the old
> > merged-key/value-space bug is still present.
> >
> > >> Associate? blk reduce [[5]]
> > ** Script Error: first expected series argument of type: series
> > pair event money date object port time tuple any-function
> > library struct event.
> > ** Where: all [
> > Value: select Block Key
> > first Value
> > ]
> >
> > So I can't even check to see if [[5]] (or [5]???) might have been
> > legitimately used as a key?
> >
> > This version still uses  find  and therefore still "inherits" the
> > buggy behavior when  block!  data are used as keys.
> >
> > -jn-
> >
> > [EMAIL PROTECTED] wrote:
> > >
> > > Here's an implementation for an Associative Data Store (ADS) that uses
> only
> > > two functions, doesn't require an object per ADS and can use any Rebol
> value
> > > as a key. Comment invited. Thanks to Gabriele for showing how to
shorten
> the
> > > 'Associate? function.
> > >
> >
> > [code snipped]
>




[REBOL] A couple of things regarding ports Re:(6)

2000-09-18 Thread multimalte

On Mon, 18 Sep 2000 21:41:18 +1200 [EMAIL PROTECTED] wrote:
>> hmm, however, if I for example do like:
>>
>> dispatch [
>>   port1 [print first port1]
>>   port2 [print first port2]
>> ]
>>
>> it waits for the first port before printing the input on the second. both
>the ports are open/direct/lines
>
>Try something like:
>dispatch [port1 [print "Port1"] port2 [print "Port2"]]
>as your:
>print first port1
>may be waiting for input on 'port1.


uhm, one more thing, isn't that what it should do..?
wait for data from either of the ports, and when it reaches
one of them i want to, let's say, print it out?..

how should I work around it then?.. :)

Cheers, malte



>
>That way, you can confirm that dispatch is working correctly.
>
>Andrew Martin
>ICQ: 26227169
>http://members.ncbi.com/AndrewMartin/
>http://members.xoom.com/AndrewMartin/
>-><-
>
>


-- 
Get your firstname@lastname email for FREE at http://NamePlanet.com/?su




[REBOL] Associative Data Store Re:(2)

2000-09-18 Thread rebol

I'm probably going to get beaten up for this :), but if my question is
totally absurd, please excuse my ignorance...

You seem to put a lot of emphasis on being able to use block!s as keys. Is
this really necessary or desired?

It seems like an implementation would be easier and/or more efficient if we
didn't have to worry about that case. Same for logic! values :)

Many other languages get by with just strings for keys, why do we have to be
able to use every Rebol data type as a key?

Keith

- Original Message -
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, September 18, 2000 7:47 AM
Subject: [REBOL] Associative Data Store Re:


> Here's what happened when I tried it:
>
> >> blk: []
> == []
> >> Associate blk [2 3] 5
> == [[2 3] [5]]
> >> Associate? blk [2 3]
> == none
>
> Beg pardon?  Also...
>
> >> Associate blk 5 7
> == [[2 3] [5] 5 [7]]
> >> Associate blk [5] 9
> == [[2 3] [5] 5 [9]]
> >> Associate? blk 5
> == 9
> >> Associate? blk [5]
> == 9
>
> Hmmm...  Can't distinguish  5  from  [5]  ??
>
> >> Associate? blk reduce [2 3]
> == none
> >> Associate? blk reduce [[2 3]]
> == 5
>
> Aha!  Unlike all other data types, an extra [] wrapper is require
> for  block! -type keys?  Well, let's check to see if the old
> merged-key/value-space bug is still present.
>
> >> Associate? blk reduce [[5]]
> ** Script Error: first expected series argument of type: series
> pair event money date object port time tuple any-function
> library struct event.
> ** Where: all [
> Value: select Block Key
> first Value
> ]
>
> So I can't even check to see if [[5]] (or [5]???) might have been
> legitimately used as a key?
>
> This version still uses  find  and therefore still "inherits" the
> buggy behavior when  block!  data are used as keys.
>
> -jn-
>
> [EMAIL PROTECTED] wrote:
> >
> > Here's an implementation for an Associative Data Store (ADS) that uses
only
> > two functions, doesn't require an object per ADS and can use any Rebol
value
> > as a key. Comment invited. Thanks to Gabriele for showing how to shorten
the
> > 'Associate? function.
> >
>
> [code snipped]





[REBOL] [ANN] vanillean alpha 0.2

2000-09-18 Thread c . langreiter

Hi list folks,

you can download an alpha version of my integrated web server / wiki system
vanillean (a Vanilla derivative) from
http://www.langreiter.com/space/vanillean.

A temporary test server is up and running on http://213.229.9.171:

vanillean requires only REBOL/View to be installed and should otherwise be
self-contained. Installation effort equals zero (or at least it should).

I've successfully used it for internal discussions, competitive monitoring,
address + contact management and intranet prototyping. Vanilla (its "big
brother") is the system I use to manage my web site at
http://www.langreiter.com, and of course, it's all written in REBOL.

Enjoy!

Chris





[REBOL] Please test my script Re:

2000-09-18 Thread allen

Hi Carlos,

Just a simple check for the file, shows that it doesn't seem to be on your
server.

print read http://www.rebolbrasil.com/bragweather.r
** User Error: Error.  Target url: http://www.rebolbrasil.com/bragweather.r
could no
t be retrieved.  Server response: HTTP/1.0 404 Not Found.
** Where: print read http://www.rebolbrasil.com/bragweather.r

Cheers,

Allen K


- Original Message -
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, July 19, 2000 12:15 AM
Subject: [REBOL] Please test my script


Hi ALL,

I´d like to ask you to test the script BragWeather.r in REBOLBrasil REBSite.

I´m getting a message that REBOL can´t launch it from local HD, why?

Thank you





[REBOL] Even I make mistakes

2000-09-18 Thread ralph

If anyone tried to order either REBOL FOR DUMMIES or REBOL: THE OFFICIAL
GUIDE yesterday, you found your order would not go through, even with all
the correct information. Why? Even I flub up on occasion. The forms are now
fixed and orders go though fine.

The mistake was a dumb one (as opposed to a Dummies one) and I reveal it
since you may find such instructive in your own coding. I wrote this really
slick little credit card validation function (published earlier on this
list) Saturday. Tested it rigorously, and it worked fine. So I dropped it
into the order forms; tested them briefly; all seemed fine; so I went live
with the changes. Then I get e-mail this morning from a couple of people who
tried to order books yesterday and the orders would not record. Here's the
mistake! One of the REBOL words I defined in my credit card validation
function was the same as one in my form processing script (but the words, of
course, did different functions). This mismatch did not crash the script
(such would have pointed to an obvious problem) but rather caused a more
subtle misoperation; i.e. orders would not record.

The moral of this tale? Document! I stress that in REBOL FOR DUMMIES. If you
don't document, scripts sometimes will coil around and bite you on the 
well, anyway, I fixed it.

Best,

--Ralph Roberts
Soldier of the REBOLution





[REBOL] Please test my script

2000-09-18 Thread carlos



Hi ALL,
 
I´d like to ask you to test the script 
BragWeather.r in REBOLBrasil REBSite.
 
I´m getting a message that REBOL can´t launch it 
from local HD, why?
 
Thank you


[REBOL] debugging rebol apps Re:

2000-09-18 Thread jelinem1


Well, since you asked...

I have a fairly large application, divided into several files (modules). My
traditional approach to debugging when I have no "debugger" is to write a
function which prints its argument only when a global variable is set. This
allows me to print messages about the program's behavior while testing,
then turn off those messages when the program works. For a large app I have
developed this to the following:

In the first file which gets loaded into the REBOL session I define the
following flags:

testing: make object! [
 all: false

 adv:  false
 item: false
 event: true
 lib: false
 main: false
 melee: true
 menu: false
 mon:  false
 party: true
 play: true
 player: true
 room: false
 util: false
 weap: false
]

Where each element represents a module of the program. Then the
testing-print function is defined as follows:

eprint: make object! [
 adv: func [msg-raw [series!]][ if any [testing/adv testing/all][print
[ "^(tab)ADV: " reduce msg-raw ]]]
 dun: func [msg-raw [series!]][ if any [testing/lib testing/all][print
[ "^(tab)DUNGEON: " reduce msg-raw ]]]
 event: func [msg-raw [series!]][ if any [testing/event
testing/all][print [ "^(tab)EVENT: " reduce msg-raw ]]]
 item: func [msg-raw [series!]][ if any [testing/weap
testing/all][print [ "^(tab)WEAP: " reduce msg-raw ]]]
 lib: func [msg-raw [series!]][ if any [testing/lib testing/all][print
[ "^(tab)LIBRARY: " reduce msg-raw ]]]
 main: func [msg-raw [series!]][ if any [testing/main
testing/all][print [ "^(tab)MAIN: " reduce msg-raw ]]]
 melee: func [msg-raw [series!]][ if any [testing/melee
testing/all][print [ "^(tab)MELEE: " reduce msg-raw ]]]
 menu: func [msg-raw [series!]][ if any [testing/menu
testing/all][print [ "^(tab)MENU: " reduce msg-raw ]]]
 mon: func [msg-raw [series!]][ if any [testing/mon testing/all][print
[ "^(tab)MON: " reduce msg-raw ]]]
 party: func [msg-raw [series!]][ if any [testing/party
testing/all][print [ "^(tab)PARTY: " reduce msg-raw ]]]
 play: func [msg-raw [series!]][ if any [play-test testing/all][print
[ "^(tab)PLAY: " reduce msg-raw ]]]
 player: func [msg-raw [series!]][ if any [testing/play
testing/all][print [ "^(tab)PLAYER: " reduce msg-raw ]]]
 room: func [msg-raw [series!]][ if any [testing/room
testing/all][print [ "^(tab)ROOM: " reduce msg-raw ]]]
 util: func [msg-raw [series!]][ if any [testing/util
testing/all][print [ "^(tab)UTIL: " reduce msg-raw ]]]
 weap: func [msg-raw [series!]][ if any [testing/weap
testing/all][print [ "^(tab)WEAP: " reduce msg-raw ]]]

 report: func ["Report the testing status"][
  if play-test [print "* Game is being PLAY-TESTED."]
  if testing/all [print "* Everything is being error-tested."]
  foreach test-var (next first testing) [
   if true = get in testing test-var [print ["*" test-var "is
being error-tested."]]
  ]
 ]
]

I can turn on ALL testing messages simply by setting:

testing/all: true

Or any individual module testing messages by, for example:

testing/main: true

I can then define a testing message by the following (for some reason I
don't need 'reform on the parameter block before passing it):

eprint/adv [ "Creating char:" form class-fields ", weapon:" wname ",
armor:" aname  ", shield:" sname]
eprint/melee [ "Defender:" combatant/target/name " hp:" combatant/target/hp
]
eprint/report ; Displays all module being tested

- Michael Jelinek





[EMAIL PROTECTED] on 09/16/2000 08:57:16 PM

From: [EMAIL PROTECTED] on 09/16/2000 08:57 PM

Please respond to [EMAIL PROTECTED]
To:   [EMAIL PROTECTED]
cc:
Subject:  [REBOL] debugging rebol apps


Hi. Since rebol does not have a compiler, I find it a bit more difficult to
debug large rebApps.
Anyone have any debugging tips/strategies? Curious how others debug their
scripts...

Rishi












[REBOL] system/network/host

2000-09-18 Thread morgenw

Where in the pc is the obtained in Win 95 ?




[REBOL] A couple of things regarding ports + New View stuff Re:(9)

2000-09-18 Thread allen


- Original Message -
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, September 18, 2000 11:04 PM
Subject: [REBOL] A couple of things regarding ports Re:(8)


>
> >read source for 'read-net, (which is used by 'request-download &
'read-via)
> >to see an example of 'dispatch code.
>
> hum.. is it just me that thinks that there are loads of undocumented
functions
> here? :)
>
> Cheers, malte

They are all in experimental pre-beta version, can't really expect them to
be documented yet. Who knows how many changes will happen to them before the
beta is released? However testing them now is the best way to find the bugs
and help improve that code.

The beauty of REBOL is that it isn't hard to find the new functions, with
the power of 'probe, 'echo, 'what and 'source, nothing (except native
implementation) is hidden from us. It's all there for those who want to
explore, it's quite fun really.

But certainly brief documentation of changes would help this testing process
too.

Here are a few more new functions in /view for the curious.

EXISTS-VIA?
-  Check if a file is in the cache

FORM-LOCAL-FILE
- Return correct local public path for a URL.,
form-local-file http://www.rebolforces.com/reb/mines.r
== %/c/rebol/view/public/www.rebolforces.com/reb/mines.r

So then other operations can easily be applied to cached files e.g
modified? form-local-file http://www.rebolforces.com/index.r
== 17-Sep-2000/21:18:22+10:00

CENTER-FACE   obj -- (Type: any) area -- (Type: any)
- modifies the offset of a face passed to it, to centre that face.

; To center on the screen-face use none for the area arg
view center-face layout [text "center test" button "Close" [unview/all]]
none

; To center within a region, provide a face object for the area arg (to
center over)
;or provide an object that has an offset pair! and size pair!

; this will centre the window between 0x0 and 300x300
view center-face layout [text "center test" button "Close" [unview/all]]
make object! [offset: 0x0 size: 300x300]

CONTEXT - Defines an underived object from a block. Example usage in
vidtest.r

==Changes to existing functions==
SHOW and HIDE
 - now accept either a face or a block of faces

CHOOSE
- has a new /window refinement, when used, it means the offset of the choose
popup will be in relation to that parent window rather than to the
screen-face

Hope this helps.


Cheers,


Allen K





[REBOL] best means of passing refinements from main to helper function? Re:(3)

2000-09-18 Thread jelinem1


But then this (the example below) explicitly lists the refinements in the
function body. I think the "ultimate" solution would process an arbitray
list, as with a loop. It is fairly short though :) and IS a step up from
'if statements, esp for more than 2 refinements.

- Michael Jelinek





[EMAIL PROTECTED] on 09/15/2000 04:04:34 PM

From: [EMAIL PROTECTED] on 09/15/2000 04:04 PM

Please respond to [EMAIL PROTECTED]
To:   [EMAIL PROTECTED]
cc:
Subject:  [REBOL] best means of passing refinements from main to helper
  function? Re:(2)




   Howdy, Michael:

  The following approach is exactly elegant, but it gets the
  job done and it's fairly short.  I think it's kind of cute.

  -jeff

REBOL []

deduction: func [
/use-month month-to-use
/use-day day-to-use
][
rejoin [ "file-"
 either use-month [ month-to-use ] [ now/month ]
 either use-day   [ day-to-use ]   [ now/day  ]
]
]

main: func [
/use-month month-to-use
/use-day day-to-use
] [
go?: func ['what /it][either it: get what [either true = it [what][it]]
[]]
do reduce compose/deep [to-path [deduction (go? use-month) (go?
use-day)]
(go? month-to-use) (go? day-to-use)]
]


> This seems   to be  an  occasionally reoccurring  topic. In
> short  I don't   think anyone  has come  up   with a simple
> elegant way of  doing this. A few  of us have come up  with
> solutions  whichinvolve  building  the  helper-function
> call/refinements string. You might  find, however, that you
> would rather use a bunch of 'if statements.
>
> - Michael Jelinek
>
>
>
>
>
> [EMAIL PROTECTED]@MailAndNews.com>  on  09/15/2000
> 03:30:03 PM
>
> From:[EMAIL PROTECTED]@MailAndNews.com  on
> 09/15/2000 03:30 PM
>
> Please respond to [EMAIL PROTECTED]
>
> Sent by: Terrence Brannon <[EMAIL PROTECTED]>
>
> To: [EMAIL PROTECTED]  cc:   Subject: [REBOL]  best  means  of
> passing refinements from main to helper
>function?
>
>
> I  want  to know the best way to  propagate  refinement
> selections (or  their lack)  to  a function  which actually
> does the processing for them.












[REBOL] REBOL/View and proxy-configuration Re:

2000-09-18 Thread capolunghi

I've had the same problem... Thought I was doing something wrong. My send
and read commands, when sending mail or fetching a web site work on my
computer at home, but flunks out on my Lan based computer at work. This is a
real show-stopper! 

Joe



-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Sunday, September 17, 2000 6:59 AM
To: [EMAIL PROTECTED]
Subject: [REBOL] REBOL/View and proxy-configuration


Hello,

Has anyone made experiences with using REBOL/View in a firewalled
LAN?
I am in a LAN that blocks nearly all services.
We have Squid-Proxies for HTTP and FTP.
We have an internal POP3  and SMTP server.

If I configure REBOL/View to use our HTTP/FTP Proxy as a
'generic - type Proxy I can fetch HTML pages.
But If I click on the "REBOL.com" Icon REBOL/View hangs a while
with an empty progress-bar then the window is flashing and I'm
on the start screen as before (but the "R" image that shows that REBOL is 
loading something resists on the down right edge)

Is there an option I have to set?

I've used REBOL/View successfully with a direct internet connection!

Yours sincerely.
Jochen Schmidt




[REBOL] Associative Data Store Re:

2000-09-18 Thread lmecir

Hi Andrew,

there is a lot of cases, where your functions won't work as expected, eg.:

blk: copy []
associate blk [2] 3
associate? blk [2]

The other problem is, that your functions won't accept Any-type! values for
Key/Value

Regards
Ladislav

> Here's an implementation for an Associative Data Store (ADS) that uses
only
> two functions, doesn't require an object per ADS and can use any Rebol
value
> as a key. Comment invited. Thanks to Gabriele for showing how to shorten
the
> 'Associate? function.
>
> [
> Rebol [
> Title: "Associate"
> Name: 'Associate
> File: %Associate.r
> Author: "Andrew Martin"
> Email: [EMAIL PROTECTED]
> Date: 18/September/2000
> ]
>
> Associate: function [Block [block!] Key Value] [Index] [
> Index: find Block Key
> either none? Value [
> if found? Index [
> remove/part Index 2
> ]
> ][
> either found? Index [
> change/only next Index reduce [Value]
> ][
> append Block reduce [Key reduce [Value]]
> ]
> ]
> Block
> ]
>
> Associate?: function [Block [block!] Key] [Value] [
> all [
> Value: select Block Key
> first Value
> ]
> ]
> ]
>
> Andrew Martin
> ICQ: 26227169
> http://members.ncbi.com/AndrewMartin/
> http://members.xoom.com/AndrewMartin/
> -><-
>
>




[REBOL] Essay on Associative Data Stores Re:

2000-09-18 Thread lmecir

Hi Joel,

two notes:

1) I think that some posts on ADS missed one very important point - the
speed. The problem is, that Find (sequential search) may be a bottleneck for
some apps.

2) Select may be less general than Select/only sometimes.

Regards
Ladislav




[REBOL] A couple of things regarding ports Re:(8)

2000-09-18 Thread multimalte


>read source for 'read-net, (which is used by 'request-download & 'read-via)
>to see an example of 'dispatch code.

hum.. is it just me that thinks that there are loads of undocumented functions 
here? :)

Cheers, malte

-- 
Get your firstname@lastname email for FREE at http://NamePlanet.com/?su




[REBOL] Associative Data Store Re:

2000-09-18 Thread joel . neely

Here's what happened when I tried it:

>> blk: []
== []
>> Associate blk [2 3] 5
== [[2 3] [5]]
>> Associate? blk [2 3]
== none

Beg pardon?  Also...

>> Associate blk 5 7
== [[2 3] [5] 5 [7]]
>> Associate blk [5] 9
== [[2 3] [5] 5 [9]]
>> Associate? blk 5
== 9
>> Associate? blk [5]
== 9

Hmmm...  Can't distinguish  5  from  [5]  ??

>> Associate? blk reduce [2 3]
== none
>> Associate? blk reduce [[2 3]]
== 5

Aha!  Unlike all other data types, an extra [] wrapper is require
for  block! -type keys?  Well, let's check to see if the old
merged-key/value-space bug is still present.

>> Associate? blk reduce [[5]]
** Script Error: first expected series argument of type: series
pair event money date object port time tuple any-function
library struct event.
** Where: all [
Value: select Block Key
first Value
]

So I can't even check to see if [[5]] (or [5]???) might have been
legitimately used as a key?

This version still uses  find  and therefore still "inherits" the
buggy behavior when  block!  data are used as keys.

-jn-

[EMAIL PROTECTED] wrote:
> 
> Here's an implementation for an Associative Data Store (ADS) that uses only
> two functions, doesn't require an object per ADS and can use any Rebol value
> as a key. Comment invited. Thanks to Gabriele for showing how to shorten the
> 'Associate? function.
> 

[code snipped]




[REBOL] bot maddening? Re:

2000-09-18 Thread carlos

same to me
Lorenz
- Original Message -
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, September 17, 2000 5:43 PM
Subject: [REBOL] bot maddening?


> Hey, what's going on? I have at least 4 copies of the same message from
the
> list. ...
> -pekr-
> 
> - Original Message -
> From: <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Sunday, September 17, 2000 1:00 PM
> Subject: [REBOL] [REBOL] REBOL/View and proxy-configuration
>
>
> > Hello,
> >
> > Has anyone made experiences with using REBOL/View in a firewalled
> > LAN?
> > I am in a LAN that blocks nearly all services.
> > We have Squid-Proxies for HTTP and FTP.
> > We have an internal POP3  and SMTP server.
> >
> > If I configure REBOL/View to use our HTTP/FTP Proxy as a
> > 'generic - type Proxy I can fetch HTML pages.
> > But If I click on the "REBOL.com" Icon REBOL/View hangs a while
> > with an empty progress-bar then the window is flashing and I'm
> > on the start screen as before (but the "R" image that shows that REBOL
is
> > loading something resists on the down right edge)
> >
> > Is there an option I have to set?
> >
> > I've used REBOL/View successfully with a direct internet connection!
> >
> > Yours sincerely.
> > Jochen Schmidt
>
>




[REBOL] A couple of things regarding ports Re:(10)

2000-09-18 Thread Petr . Krenzelok



[EMAIL PROTECTED] wrote:

> > Where can I find 'read-net, 'request-download and 'read-via ?
>
> source read-net
> And I'm sure you can figure out the rest.

"the rest" - yes, the following line which probably causes panel doesn't
go thru firewall and lives thru last X releases, probably still
incorrect? ;-)

  port: open/direct/binary/no-wait [scheme: 'tcp host: host-name
port-id: 80]

Could above line go thru proxy? Look at Sterling's aproach taken in
reb-prox.r script:

port-spec: make port! [
scheme: 'tcp
port-id: 80
proxy: make system/schemes/default/proxy []
]
if any [system/schemes/default/proxy/host
system/schemes/http/proxy/host] [
proxy-spec: make port! [scheme: 'http]
port-spec/proxy: make proxy-spec/proxy copy []
]

So?

-pekr-



>
>
> > I really hope it's not a silly question :)
>
> Make sure you've got the latest version of Rebol.
>
> Andrew Martin
> ICQ: 26227169
> http://members.ncbi.com/AndrewMartin/
> http://members.xoom.com/AndrewMartin/
> -><-




[REBOL] A couple of things regarding ports Re:(10)

2000-09-18 Thread brett

Thanks Andrew.

Not having latest version was my problem.

A few days from last download and I'm out of date! :)

So now I can look at the source of read-net.

Hmm. Ahh. Ooo. Wow.
I'll say it backwards. Wow... :)

Brett

- Original Message - 
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, September 18, 2000 8:54 PM
Subject: [REBOL] A couple of things regarding ports Re:(9)


> > Where can I find 'read-net, 'request-download and 'read-via ?
> 
> source read-net
> And I'm sure you can figure out the rest.
> 
> > I really hope it's not a silly question :)
> 
> Make sure you've got the latest version of Rebol.
> 
> Andrew Martin
> ICQ: 26227169
> http://members.ncbi.com/AndrewMartin/
> http://members.xoom.com/AndrewMartin/
> -><-
> 




[REBOL] A couple of things regarding ports Re:(9)

2000-09-18 Thread Al . Bri

> Where can I find 'read-net, 'request-download and 'read-via ?

source read-net
And I'm sure you can figure out the rest.

> I really hope it's not a silly question :)

Make sure you've got the latest version of Rebol.

Andrew Martin
ICQ: 26227169
http://members.ncbi.com/AndrewMartin/
http://members.xoom.com/AndrewMartin/
-><-




[REBOL] A couple of things regarding ports Re:(8)

2000-09-18 Thread brett

> read source for 'read-net, (which is used by 'request-download &
'read-via)
> to see an example of 'dispatch code.
>
> Cheers,
>
> Allen K
>

Hi Allen,

Where can I find 'read-net, 'request-download and 'read-via ?
I really hope it's not a silly question :)

Brett.




[REBOL] CGI setup Re:(2)

2000-09-18 Thread brett

At the following link you can find an edited message on this subject. Note
that it assumes that you are familiar with changing the registry.

http://www.codeconscious.com/rebol/rebol-net.html#UsingRebolCGIwithPersonalW
ebServer

Brett.

- Original Message -
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, September 18, 2000 5:15 PM
Subject: [REBOL] CGI setup Re:


> I've managed to do it. But unfortunately I'm at the wrong 'puter atm. You
> should add a registry key to map .r cgi's to Rebol though. ;)
>
> /regards Stefan
>
> -Original Message-
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: den 18 september 2000 07:44
> To: [EMAIL PROTECTED]
> Subject: [REBOL] CGI setup
>
>
> does anyone know how to setup MS PWS with rebol for cgi in windows95/98
> i have n idea.
>
> aden.
>




[REBOL] A couple of things regarding ports Re:(4)

2000-09-18 Thread Petr . Krenzelok



[EMAIL PROTECTED] wrote:

> malte wrote:
> > Im also making a multi-connection app, and had the same problems, however,
> I don't get things to work with dispatch either..
> > perhaps Im not using it properly.. syntax, anyone? :)
> >
> > right now I go like
> > port: dispatch [port1 port2]
> >
> > wrong?
>
> Yes. That's wrong. Have a look at the source for 'dispatch:
>
> >> source dispatch
> dispatch: func [
> {Wait for a block of ports. As events happen, dispatch port handler
> blocks.}
> port-block [block!] {Block of port handler pairs (port can be timeout
> too).}
> /local ports awake timeblk result
> ][
> ports: copy []
> foreach [port job] port-block: reduce port-block [
> if any [number? port time? port] [if none? timeblk [timeblk: :job]]
> append ports port
> ]
> forever [
> either awake: wait/all ports [
> if foreach item awake [
> set/any 'result do select port-block item item
> if all [value? 'result 'break = :result] [break/return true]
> ] [break]
> ] [do :timeblk]
> ]
> ]
>
> Note the 'foreach:
> foreach [port job] port-block

ah, it's interesting - do you really prefer this aproach? (nested blocks) I
remember Carl ones discussed he prefers one aproach, but I don't remember the
result ...

I would probably prefer having separate block with handlers parallel to
port-block ...

-pekr-

>
> There's a job after each port value. Try:
> dispatch [port1 Port1Handler port2 Port2Handler]
> and have:
> Port1Handler: func [...
> etc.
>
> I hope that helps!
>
> Andrew Martin
> ICQ: 26227169
> http://members.ncbi.com/AndrewMartin/
> http://members.xoom.com/AndrewMartin/
> -><-




[REBOL] A couple of things regarding ports Re:(8)

2000-09-18 Thread Al . Bri

Allen wrote:
> I've used 'dispatch in a basic /View chat script demo and it worked as
expected.

Allen's code looks like this:

dispatch [
message-port :do-message
event-port   :do-event
]

'do-message and 'do-event are both functions.

Andrew Martin
ICQ: 26227169
http://members.ncbi.com/AndrewMartin/
http://members.xoom.com/AndrewMartin/
-><-




[REBOL] A couple of things regarding ports Re:(7)

2000-09-18 Thread allen


- Original Message -
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, September 18, 2000 9:00 PM
Subject: [REBOL] A couple of things regarding ports Re:(6)


>
> >Try something like:
> >dispatch [port1 [print "Port1"] port2 [print "Port2"]]
> >as your:
> >print first port1
> >may be waiting for input on 'port1.
>
> the whole idea was to wait for data from the ports :)
>
> however, if I do it like [print "Port1"]
> I get spammed with a never ending list of Port1's,
> allthough the other end of Port1 isn't sending anything,
> and occasionally one or two Port2's..
> something with the 'wait seems fishy enough?..

I've used 'dispatch in a basic /View chat script demo and it worked as
expected.

Try changing the port number to be sure nothing else on your system isn't
using the same port number. (If you are using windows kill off any other
REBOL processses that have accumulated in the taskmanager, they tend to hang
around if the View is closed but the ports weren't closed properly.)

read source for 'read-net, (which is used by 'request-download & 'read-via)
to see an example of 'dispatch code.

Cheers,

Allen K





[REBOL] A couple of things regarding ports Re:(6)

2000-09-18 Thread multimalte


>Try something like:
>dispatch [port1 [print "Port1"] port2 [print "Port2"]]
>as your:
>print first port1
>may be waiting for input on 'port1.

the whole idea was to wait for data from the ports :)

however, if I do it like [print "Port1"]
I get spammed with a never ending list of Port1's,
allthough the other end of Port1 isn't sending anything,
and occasionally one or two Port2's..
something with the 'wait seems fishy enough?..

Cheers, malte

-- 
Get your firstname@lastname email for FREE at http://NamePlanet.com/?su




[REBOL] A couple of things regarding ports Re:(5)

2000-09-18 Thread Al . Bri

> hmm, however, if I for example do like:
>
> dispatch [
>   port1 [print first port1]
>   port2 [print first port2]
> ]
>
> it waits for the first port before printing the input on the second. both
the ports are open/direct/lines

Try something like:
dispatch [port1 [print "Port1"] port2 [print "Port2"]]
as your:
print first port1
may be waiting for input on 'port1.

That way, you can confirm that dispatch is working correctly.

Andrew Martin
ICQ: 26227169
http://members.ncbi.com/AndrewMartin/
http://members.xoom.com/AndrewMartin/
-><-




[REBOL] A couple of things regarding ports Re:(4)

2000-09-18 Thread multimalte


ah yes, at a closer look at the source :)

hmm, however, if I for example do like:

dispatch [
  port1 [print first port1]
  port2 [print first port2]
]

it waits for the first port before printing the input on the second..
both the ports are open/direct/lines

ideas?

Cheers, malte

>Note the 'foreach:
>foreach [port job] port-block
>There's a job after each port value. Try:
>dispatch [port1 Port1Handler port2 Port2Handler]
>and have:
>Port1Handler: func [...
>etc.
>
>I hope that helps!
>
>Andrew Martin
>ICQ: 26227169
>http://members.ncbi.com/AndrewMartin/
>http://members.xoom.com/AndrewMartin/
>-><-
>
>


-- 
Get your firstname@lastname email for FREE at http://NamePlanet.com/?su




[REBOL] Re: BUG - Stray word in Rebol

2000-09-18 Thread carl

Amiga View 0.10.31 gives...

>> help val
VAL is a word of value: with

No help available about "with" though.




[REBOL] A couple of things regarding ports Re:(3)

2000-09-18 Thread Al . Bri

malte wrote:
> Im also making a multi-connection app, and had the same problems, however,
I don't get things to work with dispatch either..
> perhaps Im not using it properly.. syntax, anyone? :)
>
> right now I go like
> port: dispatch [port1 port2]
>
> wrong?

Yes. That's wrong. Have a look at the source for 'dispatch:

>> source dispatch
dispatch: func [
{Wait for a block of ports. As events happen, dispatch port handler
blocks.}
port-block [block!] {Block of port handler pairs (port can be timeout
too).}
/local ports awake timeblk result
][
ports: copy []
foreach [port job] port-block: reduce port-block [
if any [number? port time? port] [if none? timeblk [timeblk: :job]]
append ports port
]
forever [
either awake: wait/all ports [
if foreach item awake [
set/any 'result do select port-block item item
if all [value? 'result 'break = :result] [break/return true]
] [break]
] [do :timeblk]
]
]


Note the 'foreach:
foreach [port job] port-block
There's a job after each port value. Try:
dispatch [port1 Port1Handler port2 Port2Handler]
and have:
Port1Handler: func [...
etc.

I hope that helps!

Andrew Martin
ICQ: 26227169
http://members.ncbi.com/AndrewMartin/
http://members.xoom.com/AndrewMartin/
-><-




[REBOL] A couple of things regarding ports Re:(2)

2000-09-18 Thread multimalte


Im also making a multi-connection app, and had the same problems,
however, I don't get things to work with dispatch either..
perhaps Im not using it properly.. syntax, anyone? :)

right now I go like
port: dispatch [port1 port2]

wrong?

Cheers, malte

-- 
Get your firstname@lastname email for FREE at http://NamePlanet.com/?su




[REBOL] Re: A bug in sorting on dates/times? Re:(2)

2000-09-18 Thread carl

Thanks for the response.  I guess it's pretty general across platforms
then.  Hopefully it only affects date sorting, as a work-around
should be easy enough to do then.

On 18-Sep-00, [EMAIL PROTECTED] wrote:

> I've just reported this same bug in REBOL/Core 2.3.0.3.1
> the version for The Official Guide.

> Russell [EMAIL PROTECTED]
> - Original Message - 
> From: <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Sunday, September 17, 2000 2:03 PM
> Subject: [REBOL] A bug in sorting on dates/times? Re:

>> Hi Carl

>> Yup, I get the same thing.

>> REBOL/View 0.10.33.3.1 10-Sep-2000
>> Copyright 2000 REBOL Technologies.  All rights reserved.
>> Type DEMO to run demo if it is disabled
 dates: [10-Sep-2000/18:24:13-5:00 10-Sep-2000/18:24:02-5:00]
>> == [10-Sep-2000/18:24:13-5:00 10-Sep-2000/18:24:02-5:00]
 sort dates
>> == [10-Sep-2000/23:24:02-5:00 10-Sep-2000/23:24:13-5:00]
 dates
>> == [10-Sep-2000/23:24:02-5:00 10-Sep-2000/23:24:13-5:00]
 
>> Also the same with latest experimental builds of Core and Command.

>> -Larry




[REBOL] Associative Data Store

2000-09-18 Thread Al . Bri

Here's an implementation for an Associative Data Store (ADS) that uses only
two functions, doesn't require an object per ADS and can use any Rebol value
as a key. Comment invited. Thanks to Gabriele for showing how to shorten the
'Associate? function.

[
Rebol [
Title: "Associate"
Name: 'Associate
File: %Associate.r
Author: "Andrew Martin"
Email: [EMAIL PROTECTED]
Date: 18/September/2000
]

Associate: function [Block [block!] Key Value] [Index] [
Index: find Block Key
either none? Value [
if found? Index [
remove/part Index 2
]
][
either found? Index [
change/only next Index reduce [Value]
][
append Block reduce [Key reduce [Value]]
]
]
Block
]

Associate?: function [Block [block!] Key] [Value] [
all [
Value: select Block Key
first Value
]
]
]

Andrew Martin
ICQ: 26227169
http://members.ncbi.com/AndrewMartin/
http://members.xoom.com/AndrewMartin/
-><-



[
Rebol [
	Title: "Associate"
	Name: 'Associate
	File: %Associate.r
	Author: "Andrew Martin"
	Email: [EMAIL PROTECTED]
	Date: 18/September/2000
	]

Associate: function [Block [block!] Key Value] [Index] [
	Index: find Block Key
	either none? Value [
		if found? Index [
			remove/part Index 2
			]
		][
		either found? Index [
			change/only next Index reduce [Value]
			][
			append Block reduce [Key reduce [Value]]
			]
		]
	Block
	]

Associate?: function [Block [block!] Key] [Value] [
	all [
		Value: select Block Key
		first Value
		]
	]

]



[REBOL] BUG - Stray word in Rebol

2000-09-18 Thread Al . Bri

Bug - Stray word in Rebol.

REBOL/View 0.10.33.3.1 10-Sep-2000
Copyright 2000 REBOL Technologies.  All rights reserved.
>> help val
VAL is a tuple of value: 0.0.0

Allen K has discovered that:

> Val also has a value in a fresh console

> REBOL/View 0.10.33.3.1 10-Sep-2000
> Copyright 2000 REBOL Technologies.  All rights reserved.
> Type DEMO to run demo if it is disabled
> >> ? val
> VAL is a string of value: "imanXwin kludge"
> >>

Andrew Martin
ICQ: 26227169
http://members.ncbi.com/AndrewMartin/
http://members.xoom.com/AndrewMartin/
-><-







[REBOL] Bug - Stray word in Rebol Re:(2)

2000-09-18 Thread rryost

'val  is not in REBOL/Core 2.3.0.3.1
Here's console session:

>> ? val
Found these words:
 value? (native)
>>

End console session.

 The two lines starting with "Found" were output by REBOL.  They signify
that the only predefined word containing "val" is 'value?
which is a native word.

Russell [EMAIL PROTECTED]
- Original Message -
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, September 17, 2000 11:40 PM
Subject: [REBOL] Bug - Stray word in Rebol Re:


> Hi Andrew,
>
> Val also has a value in a fresh console
>
> REBOL/View 0.10.33.3.1 10-Sep-2000
> Copyright 2000 REBOL Technologies.  All rights reserved.
> Type DEMO to run demo if it is disabled
> >> ? val
> VAL is a string of value: "imanXwin kludge"
> >>
>
> Cheers,
>
> Allen K
>
> - Original Message -
> From: <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Cc: <[EMAIL PROTECTED]>
> Sent: Monday, September 18, 2000 2:45 PM
> Subject: [REBOL] Bug - Stray word in Rebol
>
>
> > Bug - Stray word in Rebol.
> >
> > REBOL/View 0.10.33.3.1 10-Sep-2000
> > Copyright 2000 REBOL Technologies.  All rights reserved.
> > >> change-dir %"/c/windows/desktop/"
> > == %/c/windows/desktop/
> > >> help val
> > VAL is a tuple of value: 0.0.0
> >
> > Anyone know what 'VAL is for? I suspect it's not meant to be there.
> >
> > Andrew Martin
> > ICQ: 26227169
> > http://members.ncbi.com/AndrewMartin/
> > http://members.xoom.com/AndrewMartin/
> > -><-
> >
> >
> >
>




[REBOL] CGI setup Re:

2000-09-18 Thread stefan . falk

I've managed to do it. But unfortunately I'm at the wrong 'puter atm. You
should add a registry key to map .r cgi's to Rebol though. ;)

/regards Stefan

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: den 18 september 2000 07:44
To: [EMAIL PROTECTED]
Subject: [REBOL] CGI setup


does anyone know how to setup MS PWS with rebol for cgi in windows95/98
i have n idea.

aden.