• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

AltME groups: search

Help · search scripts · search articles · search mailing list

results summary

worldhits
r4wp1023
r3wp10555
total:11578

results window for this page: [start: 5001 end: 5100]

world-name: r3wp

Group: All ... except covered in other channels [web-public]
[unknown: 9]:
22-Feb-2005
Exactly, I hate to have information not centralized.  It should be 
intersting to see if we can bring all three of these (to start) together 
(meaning AltME, Email, QTask).  They each do something different. 
 but they should be compatible.  And in this context "Email" realliy 
refers to a relay Server.
Pekr:
24-Feb-2005
why business policy? Do you think SafeWorlds wants to keep it under 
control? Well, bad service then? I don't believe they don't have 
at least two machines. Alme client could contain list of alternative 
look-up server - it would cover most outages imo ...
Gregg:
26-Feb-2005
In some cases I've done that Graham, I've also made a special "startup" 
EXE for a script that runs, waits a bit, the DOes the script, to 
give things a chance to shut down. I've also done it where the app 
was simple and I could just DO a module to refresh it. That gets 
trickier if you have a more complex app that maintains state and 
such.
Micha:
27-Feb-2005
how do to find address ip from this stringu ?
eFishAnt:
27-Feb-2005
not sure what you are trying to do, but the following is a better 
natural form once you get your string stuff INTO Rebol ... because 
REBOL will see it as its own datatypes, rather than as strings. [193.194.70.123 
1080 234.221.23.5 3380]
Micha:
28-Feb-2005
how do from this to read address ip ?
Ashley:
5-Mar-2005
The main stat I use is 
do I like it?"" ... mine is "time to market".
Graham:
6-Mar-2005
which core versions allow you to do 'launch or 'call ?
[unknown: 5]:
28-Mar-2005
Yeah - Carl should try to chime in sometime on some suggestions on 
how to do that.
Robert:
29-Mar-2005
Graham, right, I need to access the tape. The next problem is to 
handle things like: open-files, system state for Windows machines 
etc. IIRC Windows provides an API for backup-programs. If you want 
to do live backups of things like running DBs or Exchange etc. you 
need special APIs as well.
Volker:
2-May-2005
dialects are interpreters, which you can write in rebol. as interpreters, 
they can change everything. from rebol they inherit datatypes/syntax, 
which saves a lot work and makes things consistent. and the binding, 
which makes it easy to have variables in dialects and share them 
with rebol. the nice thing it, they keep their context. if you just 
pass strings and use regexp, you can do dialects in perl too, but 
the strings don't keep their context. which means sharing namespaces/locals 
with interpreters is less comfortable upto impossible.
ChristianE:
29-May-2005
Funny question: What's a good iconic metaphor for "Save file"? Okay, 
we're used to have a floppy-disk-icon to click on, but do all people 
now-a-days remember what floppy disks were? I can't imagine a working 
successor, though. An USB-stick pixeled on a 16x16 pixel grid?  Not 
too easily recognised, I assume ... Any suggestions?
Charles:
1-Jun-2005
Why do we have to save ?  "redo" action, you know ?  In real life, 
you don't save, you take one thing, you do something, and you stop. 
 When it can be the same in an app, it's better I think.  I have 
an app, where there is no save-button, this is very cool !
Gabriele:
8-Jun-2005
petr: how much do you save if you use bsdiff from 1.2.1 to 1.2.223?
Gabriele:
8-Jun-2005
you don't need bsdiff to do that :)
MichaelB:
9-Jun-2005
Robert: What do you understand under a sync interface. Easiest way 
and most compatible way would probably be to support syncML, as at 
least symbian supports it, but this would mean that IOS has to become 
a syncML server, that's not so easy - I think.
Pekr:
9-Jun-2005
I have friends who run large cell phone shop here and they do both 
- export cell phone contacts, as well as backup all phone info, becase 
there are sometimes problems with new sw, which refuses to import 
setttings backed-up by older sw version and similar mess, and I talk 
about Nokias only ...
Pekr:
9-Jun-2005
but those guys could know how to actually do it :-) The question 
is, if they would be willing to share experience ...
[unknown: 5]:
13-Jun-2005
Anyone know how to do simple arithmetic operations on tuples such 
as ip addresses?
[unknown: 5]:
13-Jun-2005
I'm curious about how try errors in tuple conversions - For example 
if I do a try [error? error:  to-tuple "abcd"] it doesn't evaluate 
correctly
JaimeVargas:
13-Jun-2005
So if you want if you want to increase a tuple but one, don't do 
the math in tuples. Do in integer space that is this line. (to-integer 
to-binary ip) + 1.
Pekr:
3-Nov-2005
Hi, 


I would like to ask about how to implement best the auto-upgrade 
facility in rebol. Now the question is, how to aproach it best way. 
IIRC, Detective does something like that. Will you help me to answer 
some of my thoughts?


- typically the mechanism can be rather easy - just go and read some 
site, check for filesize, if differs, upgrade. But that might not 
be sufficient ..


- or you can store somewhere .txt (.cfg whatver file), containing 
rebol block or object, and do some more clever stuff. Basically following 
questions come to my mind:

- do just simple version check and upgrade to higher version?

- imagine an app, developing rather fast, producing xy version in 
the beginning = update often - the list can get long to load - but 
- you have to maintain it, as some ppl can be on vacation and still 
running old version - so - split it into separate, per-version file? 
I mean - making reverse aproach - provide updating config file for 
each version available. example - you have version 1.0, there were 
two other releases, 1.1 and 1.2 - you check 1.0 upgrade cfg and it 
tells you, you can go directly to 1.2 version ... or not, and you 
go to 1.1 first, then to 1.2 .... the reason is, that some version 
might require to rebuild data structures etc etc., so it is not always 
only about switching .exe

Or am I complicating it in unnecessary way? any ideas?
Pekr:
3-Nov-2005
I hope you can place .exe itself in such a directory. It is imo necessary, 
that in such a case, update-date.r is being run by new .exe already. 
Imagine you want to rebuild database, and that there is View 1.4, 
which uses RIF, rebcode. You can't do it using old .exe, which uses 
older kernel incarnation ...
RobertDumond:
1-Dec-2005
hallo, alls... I am not sure where to post this, so I figured I'd 
do it here...  I am trying to replace the default icon's for an encapped 
app using Resource Hacker... but if I replace the icons, the app 
crashes with an Out of Memory error... here's the actual output:** 
Script Error: Not enough memory
** Near: script: decapsulate
if none? script
** Press enter to quit...
Pekr:
31-Dec-2005
Let me state - few weeks ago (actually two months), I started to 
write one document in make-doc format, but did not finish it. It 
was kind of brainstorming about current situation:

- simply put - what to do to promote Rebol?


I started with the fact, that e.g. OSNews.com reports every little 
bit of new version of xy-language related product, while my news 
item about View 1.3 did not get it to their news. New info is, that 
I contacted Tom Holwerda and he told me OSNews does not have any 
problem with Rebol news, and that it is upon us to submit the news. 
I thought that at least for main product releases as View 1.3.x we 
could do it. Of course it would REALLY help, if RT would be a bit 
more sharing about the schedule, because simply sometimes a bit of 
hype does not hurt, so we could attract ppl to new Rebcode, to hopefully 
coming rich-text, faster blitting etc., not to mention Rebservices 
as a separate article. But although rebservices were released, I 
sadly feel about it much worse than I feel about old Rugby! It just 
feels like RT would drop the ball to the community and nothing is 
happening in this field anymore. So actually, what is RT working 
on right now? There should be some communication channel, so that 
us - rebollers would be informed enough to participate in chats following 
the news articles. We have QA channel here, but most often news are 
- "we plan", "soon", and that is not simply acceptable to feel informed. 
So it is from devcon's time, that we "soon" will know, what is the 
plan for VID, not to menthion real implementation schedule - that 
does not work!
Pekr:
31-Dec-2005
Now - I know our point of views can vary, but that is simply how 
I feel about it. As I said in the beginning - we have nice info about 
REBOL already, I am just not sure, that beginner is able to easily 
find all good sources. Rebol sites ring? Dunno. Any suggestions about 
what to do about it?
Pekr:
31-Dec-2005
oh, and I forgot one aspect - View based apps! Two weeks ago I suggeste 
rebol word browser plus Roam to be put into Docs section of ViewTop 
section. Too good apps to be missed by those looking for good source 
of info. Look at rebol word browser - nice apps, superior to web. 
Now imagine it running as a plug-in somewhere on RT's site. That 
is how live docs look, it would allow for examples to be executed 
and you could even allow area with script source, so users could 
do small changes and see how they are reflected in the result. Just 
not sure about security :-)
[unknown: 9]:
31-Dec-2005
The Gripe:


Go here www.Rebol.org, then go here: http://www.ruby-lang.org/en/, 
then here: http://java.sun.com/, hell even go here, http://msdn.microsoft.com/vbasic/, 
now go back to www.Rebol.com


Even if you don't know what the language is or does, do you want 
to go to Rebol.org?  The main page looks like the last page in the 
basement of a website.  Almost like an "error page"

O There is no single location for all Rebol information.

O Rebol.net, Rebol.com, and Rebol.org are spread out and run by RT. 
O There is no pizzas!
O I don't "feel" community when I visit these sites.


I know I'm not talking to my audience when I say; "think of this 
like a night club" but this is what this is all about.  People want 
to "be where the fun is happening."  Even programmers.

My Suggestion:

O We need a site controlled by the developers.

O We need a forum where people can bitch and meet each other, and 
feel welcome.

O The site needs to have a consistent dynamic attractive template.

O The site needs to be a clearing house for all other sites.  Teach 
and directing people to all the resources.

O The site needs to paint a picture as opposed to describe everything 
with a thousand words.

What is entailed:


O Start a new site, I would propose "RebolCentral.com"  I'm willing 
to pay for it, but I don't want to be in charge of it, I suggest 
we make it a committee.


O The main page should cover every topic and reason anyone would 
come to the site.  This means we support every country and other 
site.  The idea here is a clearing house of centralized information. 


O News: The site needs to gather news worthy information and post 
that at the top.  The site is not alive unless people have a way 
to post their information.  This means that there needs to be at 
least one editor, if not several that share the task.  Every time 
a product is updated, the new features are mentioned.  When Carl 
updates his blog, it gets a single sentence directing people there, 
unless it is news of a release of something.  Etc.


O Product Reviews:   This is key.  Products need to be rated, reviewed, 
categorized, voted on.

O Video Archive: All the videos of all the talks ever given   


O Tutorials:  there are a lot of tutorials out there, but which are 
best?  We need to review the tutorials, rate them by Beginner, Intermediate, 
Advanced.  


O Forum: Start with major topics, and then break it down.  The forum 
needs to direct people to other countries, or support the other countries 
right in the forum.  Great simple forum: http://discussion.treocentral.com/index.php?styleid=1


O Respect the real estate.  The #1 mistake people make is treating 
their websites like just pages.  This is just like real estate, location 
location location.  We need to place the content based on where people 
are going.  So you build the basic site, watch it for a couple of 
weeks, then shift things around based on where people are actually 
going. 


O More art, more photos, more community.   It needs to feel inviting: 
http://msdn.microsoft.com/events/pdc/

Stone soup:


I will pay for, host, and supply a fast linux system (w/archive). 
 

I will help design the templates, and provide (and buy if needed) 
great art for the site.

I will not run the site, nor control the content, but I expect there 
to be in place all the items outlined above, set up in a manner that 
it a) runs itself, b) puts the power in the hands of the developers.
[unknown: 9]:
31-Dec-2005
I don't know what they can do better, my only point is, don't let 
our inability to find a Rebol solution to a problem stop us from 
finding a solution to the problem.

IOS is great as long as it is an "Open" IOS servers.  Meaning EVERYONE 
is welcome.  I want to see an end to any form of elitism in the Rebol 
community.  It hurts everyone.

Yes, I'm clear on what Rebol.org is, still looks like it was designed 
by the Incarceration committee for the Federal government.


Other languages, SURE.  That only drives traffic.  Although it would 
probably end up being just in the forums.
Volker:
31-Dec-2005
I see IOS more like a quick meeting-place. Want to do something, 
set up new server. Together with web-publishing. Say we have a few 
licenses for some projects.
[unknown: 9]:
3-Jan-2006
They may have lot more to do with the fact that hackers don't target 
OSX.
Graham:
7-Jan-2006
Is it not true though that you are limited in what you can do with 
rebol.org ?  I.e.  there are some restrictions whereas if you had 
your own box, the library team could do more?  If this is the case, 
why not let the library team take over the new box and migrate the 
content from rebol.org to there?
[unknown: 9]:
13-Jan-2006
A CHAT WITH NAUGHTY DOG ABOUT NEXT-GEN!


We chatted with Stephen White, co-president and programming manager 
of Santa Monica, CA-based videogame developer Naughty Dog about creating 
games for the next-generation consoles … and he offered some suggestions 
for dealing with next-gen hurdles.


Q. Naughty Dog is known for the “Crash Bandicoot” and “Jak and Daxter” 
franchises which have sold over 35 million units combined. What have 
been the fundamental keys to the success of your titles and how do 
you plan to apply those to your next-generation game development?


A. One of the biggest factors in the making of a successful game 
is hiring very talented people who are motivated and can get the 
job done without the need for extensive management and finely detailed 
schedules.
Gabriele:
11-Mar-2006
Carl: "I would really like to have a DB built-into REBOL 3.0


The trick is, it cannot just be any DB... it has to align perfectly 
with REBOL. Specifically, we want the DB to be able to store all 
REBOL datatypes efficiently. But, we also want the DB code to be 
very small. I will not allow REBOL to bloat for it. And, finally, 
the code must be free, like SQLite is (at least, I think).


Note that the DB does not need to have every feature in the book. 
 I'm not asking for SQL (that is, we will use REBOL or a dialect 
to access the DB, no need for another language).


I would really like to get the help of the community in this effort, 
but I do not have time to even organize a decent search.  If someone 
else wants to head it up, it would very much improve R3.0. If not, 
then we will do RIF, which gets us a lot of DB, and is super efficient 
compared to any other DB. But, it is only an index system, not a 
RDB."
Pekr:
12-Mar-2006
I have also suspicion, that some of you guys, e.g. Gabriele (I mean 
it in a friendly non complaining mode :-), don't mind having everything 
in one .exe. Neither do I in fact, View is still small in today's 
terms - but - if we talk small devices - it is not. Go and try to 
download it via GPRS I use with my cell phone - it does not look 
like a small app to upgrade in any way :-)
Sunanda:
13-Mar-2006
An SQL type database is one where the basic unit of storage is an 
atomic data item, though packaged into rows / tuples.   Getting rid 
of 1NF data (recurring groups) is the first thing you are taught 
to do.

In a list type database the basic unit of storage is a list (think 
REBOL block). That's far from being 1NF, especially as a list can 
contain other lists.
Gabriele:
2-May-2006
well the hard thing to do with parse is longest match.
BrianH:
2-May-2006
Parse has this problem in particular for its temporary variables 
- they aren't very recursion safe. You can do some hacks to make 
up for missing parse keywords using code blocks, but usually those 
need some temporaries.
Group: Parse ... Discussion of PARSE dialect [web-public]
Robert:
1-Sep-2007
Paul, do a search & replace upfront. Much simpler than to create 
complex parse rules.
Robert:
1-Sep-2007
I often use this pattern. Do some basic action on the parse input, 
parse the first round, again do some other processing than using 
parse again. Much simpler and faster to get where you want to go.
btiffin:
2-Sep-2007
Your example still doesn't seem to jive with the documentation.  
Reading the docs, I would expected two strings in the output block. 
 "my string" and the rest, in braces.  It has something to do with 
a double quote starting a parse sequence.   {"abc"def} parses as 
["abc" "def"]  { "abc"def"} parses as a single string as expected 
[{ "abc"def}]
PatrickP61:
5-Sep-2007
Wow, I never realized how incredibly extensive RTF is.


The ONLY thing I need is to identify the character position and length 
of Regular, Italic, Bold, Underline, or Strikeout and the text, so 
in my above example, maybe the parser could return this:  Note: birsu 
stands for Bold, Italic, Regular, Strikeout, Underline.
Line	Pos	Len	birsu	Text
1	1	24	..r..	"Default Arial font 10 * " 
1	25	(n)	..r..	"Regular Courier New font 11 * "
1	(..)	(..)	.i...	"Italic * "		

1	(..)	(..)	b....	"Bold"(newline)			<-- note \i0 turns off itialic

2	1	14	bi...	"Bold Italic * "			<-- note \b is still in effect from 
a previous setting

2	15	(..)	..r.u	"Regular Underline * "		<-- note \i\b is turned off.
2	(..)	(..)	..rs.	"Regular Strikeout"(newline)
3	1	(..)	..rsu	"Regular Underline Strikeout"(newline)
4	1	(..)	bi.su	"Bold Italic Underline Strikeout"(newline)

Ideas on how to do this as a start?
PatrickP61:
10-Sep-2007
Hey Gregg -- That is just what I've been doing.  I have identified 
the following:

1. That all printable \ { and } will show up in RTF as backslash 
along with the special character like \\   \{  or \}  any remaining 
\, {, or } will be RTF commands.

2.  {  }  and ; identify groupings with the open brace and terminating 
the group with close brace within the RTF.  The semicolon is used 
to terminate sub parameters for a particular command.

3.  \xxx  will always identify a particular command with an optional 
number appended to it.  Example: \b  means bold while \b0 meand bold 
off.


What I am toying with is to define simple rules to break apart a 
string of the RTF commands and embedded text into two parts, the 
command part and a parameter part.  (some parameters may be a block 
of multiple values).


I'm studying the Parse command to see what I can do simply and progress 
from there.
Sunanda:
16-Nov-2007
That rings a bell --- I vaguely remember having to do stuff like 
replacing 
   " or }
with
    to-char 0
before doing some parses, and then changing back afterwards.
That works if you have no to-char 0 in your strings
Chris:
22-Nov-2007
Or, instead of parse, do -- select decode-cgi find/tail string "?" 
to-set-word 'area
BrianH:
22-Nov-2007
If you require that the argument value that is not url-encoded be 
the last, you can just do a to end or whatever the string terminator 
is.
Geomol:
4-Feb-2008
I'm not really sure. First I do a general 6502 assembler and emulator, 
but I only have an emulator of the BBC homecomputer to test up against, 
so I probably have to deal with some Operating System stuff too. 
I operate with a 64k address space, and on the BBC writing to some 
certain addresses made something special for that platform happen. 
But let's see, what we can do.
Henrik:
8-Feb-2008
I'm a little stuck here with a simple problem:

a: func [v] [

  parse v [
 
    any [
      'a (prin "a")

      | 'b (prin "b")
      | 'c (prin "c")

      (prin "-")

    ]
 
  ]

]

>> 

a [a b c c a]
abc-c-a


I want to print the dash after every letter. Do I have to include 
it after each word?
PatrickP61:
23-Feb-2008
Now that I think of it, I would not even use a parse to do that. 
 But what could I do if I wanted only a subset of characters to show 
up without defining them all
BrianH:
23-Feb-2008
You have to remember to structure your rules using LL style. Do you 
notice that I checked for one word first, then looped over the subsequent 
words? That was to avoid putting the "-" after the last word as well. 
Parse uses right recursion - not like yacc, which uses left recursion.
[unknown: 5]:
4-Mar-2008
I see I can do a reduce on the blk when passed to parse and get it 
true but not sure that is safe for my situation.
Henrik:
5-Mar-2008
well, how do you want it to automatically recognize the input as 
datatypes? the only other way around it is to keep them as words 
and make a datatype rule to detect words that look like a datatype.
[unknown: 5]:
5-Mar-2008
Yes, I understand that but it defeats Carl's famous philosophy which 
is that simple things should be simple to do.
[unknown: 5]:
5-Mar-2008
Currently, I do something similiar to this:

user passes dynamic data captures in a block:
data: ["fname" string! "age" integer!]

Then I do the following:
        data: next data

        forskip data 2 [poke data 1 load mold/all attempt [to-datatype data/1]]
Henrik:
5-Mar-2008
well, if that's all you do, you don't even have to convert it to 
a datatype, IMHO. it's enough to collect a list of rebol's datatypes 
as words, so they be used to trigger on the input word which looks 
like a datatype. I can see you are going for correctness, i.e. wanting 
the input to be a real datatype, but if you only use that input as 
a trigger to do something, you don't need to convert it to a real 
datatype. just operate using words.
[unknown: 5]:
5-Mar-2008
So setting types to all of those is not very efficient.  At this 
point using parse to do this is as Gregg said not "simple..
Gregg:
6-Mar-2008
So setting types to all of those is not very efficient.

 -- Do you mean in the parsing, or in the time it takes to set up 
 the rule(s)?
BrianH:
6-Mar-2008
This assumes that you aren't taking advantage of REBOL's type system 
to do SQLite-style manifest typing.
BrianH:
6-Mar-2008
If you are doing type specifications to validate records, the fastest 
way to do it is to generate static validation rules based on the 
specification, then just apply the generated per row. Static validation 
rules would be faster than dynamic.
JohanAR:
16-Mar-2008
I think my parse rules use lots of temporary variables.. How do you 
prefer to hide these?
BrianH:
16-Mar-2008
1: Hide them from whom, and why?

In general, if you want to hide something about your parse rules, 
you need to hide the parse rules altogether. That is not to say that 
it is a good idea; I've found that in most cases that someone wants 
to hide some code or variables in REBOL, they really want to do something 
else and the something else depends on the circumstances. What do 
you hope to accomplish?

2: You have to be careful with temporary variables.

REBOL parse rules are often recursive, and the temporary variables 
used with them are not. You have to be extra careful to not recurse 
to another trip through the same parse rule before you are done with 
the temporary variables in the first round, or put off setting the 
temps until just before they are used. It's not as hard as it sounds.
amacleod:
15-May-2008
I've got rules to find each: (some digit "." some space) etc. and 
it works. I've been able to copy the text following with (copy text 
thru end) but how do I copy the section number?
amacleod:
16-May-2008
Oldes, thanks for your suggestion. It works when I do a simple one 
line rule as you suggested but when I try to use multiple rules it 
fails.

Example of what I'm trying to do:
Example of the text document:
amacleod:
16-May-2008
This will give me a hit on any section or sub or sub sub?


I may want to do something different depending on each. does this 
allow me to ?
Geomol:
3-Jun-2008
Josh, if you do a load/markup on the whole string, you get a block 
with tags and strings. You can then pick the string from the block, 
maybe doing TRIM on them to sort out newlines and spaces. Like:

blk: load/markup your-data
foreach f blk [if all [string? f "" <> trim f] [print f]]
Geomol:
3-Jun-2008
If you wanna use PARSE, you can do something like:


parse your-data [some ["<" thru ">" | copy y to "<" (if "" <> trim 
y [print y])]]
Chris:
3-Jun-2008
I've been toying with this to obtain a very parsable "dialect" -- 
my goal being to scrape live game updates from a certain sports web 
site (for personal use, natch).  It's reliant on 'parse-xml though, 
so ymmv....

do http://www.ross-gill.com/r/scrape.r
probe load-xml some-xml
[unknown: 5]:
30-Jun-2008
Best thing to do is try it out as it really takes very little time 
to setup and try and you will know probably if it is suitable for 
you in about 10 minutes.
BrianH:
28-Sep-2008
It's usually a bad idea to use lit-words as keywords - they make 
better values. If you are comparing to a particular lit-word value, 
that is using it as a keyword. If any lit-word value would do and 
their meaning is semantic rather than syntactic, that works. In general, 
PARSE is better for determining syntactic stuff - use the DO dialect 
code in the parens for semantic stuff.
sqlab:
12-Oct-2008
rules: [some [set  ww  word! set ss string! (do reduce [to-set-word 
ww ss]) ]]
Pekr:
4-Nov-2008
Graham - what xml REBOL tool do you use? I might need to parse XML 
stuff soon. In the past I used one tool (don't remember the author), 
which made object from parsed data automatically ...
BrianH:
5-Nov-2008
That DO proposal was the first one to be rejected. It will take some 
serious problems with dialecting to get it included.
BrianH:
5-Nov-2008
That way you could do this to return the first HTML tag from data:
	[to "<" return thru ">"]
Anton:
5-Nov-2008
What would you do when you need to process the data a bit first ?

eg. You return tags from different places in a rule, and to distinguish 
them you need to also return something extra, by prepending a code 
to the beginning, for example.
BrianH:
6-Nov-2008
You might be able to do b) like this:

 parse "abcdef123" [use [a] [remove ["abc" a: "123" :a] | remove ["abcd" 
 a: "ef123" :a] to end]]
or like this:

 parse "abcdef123" [use [a] [remove ["abc" a: "123" :a | "abcd" a: 
 "ef123" :a] to end]]
BrianH:
6-Nov-2008
Now that is interesting. LOAD and TO-BLOCK do that. It would be interesting 
to write a set of rules in PARSE that read REBOL syntax and generate 
REBOL data or warnings instead of errors. For your purposes you might 
consider LOAD/NEXT in a loop inside of TRY blocks.
BrianH:
6-Nov-2008
You can't do that. TO-BLOCK is a wrapper for TO BLOCK! val and TO 
is an action! with a fixed arity. What you want is a parser for user 
data that isn't in REBOL syntax. That we can do.
Pekr:
6-Nov-2008
BrianH: how do you know how much to store in cache and whent o flush 
it?
Anton:
6-Nov-2008
Block parsing ? How are you going to do that when you can't even 
see the final ']'  in the buffer yet ?
BrianH:
6-Nov-2008
Here's an example of what you could do with the PARSE proposals:

use [r d f] [ ; External words from standard USE statement
    parse f: read d: %./ r: [
        use [d1 f p] [ ; These words override the outer words
            any [
            ; Check for directory filename

                (d1: d) ; This maintains a recursive directory stack
                p: ; Save the position

                change [ ; This rule must be matched before the change happens

                    ; Set f to the filename if it is a directory else fail
                    set f into file! [to end reverse "/" to end]
                    ; f is a directory filename, so process it
                    (

                        d: join d f ; Add the directory name to the current path

                        f: read d   ; Read the directory into a block
                    )
                    ; f is now a block of filenames.
                ] f ; The file is now the block read above
                :p  ; Go back to the saved position
                into block! r ; Now recurse into the new block
                (d: d1) ; Pop the directory stack
            ; Otherwise backtrack and skip
                | skip
            ] ; end any
        ] ; end use
    ] ; end parse
    f ; This is the expanded directory block
]
Pekr:
6-Nov-2008
Don't know why, but most of the time when parsing CSV structure I 
have to do something like:

parse/all append item ";" ";" 


Simply put, to get all columns, I need to add the last semicolon 
to the input string ...
BrianH:
7-Nov-2008
Aside from a bugfix in the last example I gave (forgot the only) 
I would say yes for now. There will be more changes when Carl gets 
back to this so that we can discuss his proposals. Everyone else's 
proposals seem to have been covered except THROW (which also need 
Carl feedback). Incorporating COLLECT and KEEP into PARSE is both 
unnecessary and doesn't help at all for building hierarchical structures. 
PARSE doesn't have anything to do with parsing REBOL's syntax, so 
Graham's problems are out-of-scope. If you have more ideas this or 
the same group in the alpha world are the places to bring them up.
Steeve:
7-Nov-2008
yes it talk to BrianH, what do u mean ?
BrianH:
8-Nov-2008
I am the editor of the PARSE proposals.


It was decided that I perform this role because Carl is focused on 
the GUI work right now and someone qualified had to do it. With Carl 
busy and Ladislav not here, I am the one left who has the most background 
in parsing and the most understanding of what can be done efficiently 
and what can't. When the PARSE REPs of old were discussed, I was 
right there in the conversation and the originator of about half 
of them, mostly based on my experience with other parsers and parser 
generators. Because of this I am well aware of the original motivation 
behind them, and have had many years to think them through. It's 
just head start, really.


I am also the author of the current implementation of COLLECT and 
KEEP, based on Gabriele's original idea, which was a really great 
idea. It is also really limited. Collecting information and building 
data structures out of it is the basic function that programming 
languages do, and something that REBOL is really good at. I am not 
in any way denigrating the importance of building data structures. 
I certainly did not mean to imply that your appreciation of that 
important task was in any way less important.


The role of an editor is not just to collect proposals, but to make 
sure they fit with the overall goal of the project. This sometimes 
means rejecting proposals, or reshaping them. This is not a role 
that I am sorry about - someone has to do it to make our tool better. 
We are not Perl, this is not anything goes, we actually try to make 
the best decisions here. I hate to seem the bad guy sometimes, but 
someone has to do it :(


PARSE is a portion of REBOL that is dedicated to a particular role. 
It recognizes patterns in data, extracts some of the data, and then 
calls out to the DO dialect to do something with the data. It doesn't 
really do anything to the data itself - everything happens in the 
DO dialect code in the parens. It is fairly simple really, and from 
carefully designed simplicity it gets a heck of a lot of power and 
speed. That is its strength.


The thing that a lot of people don't remember when making improvements 
to a dialect like PARSE is that PARSE is only one part of REBOL. 
If something doesn't go into PARSE, it can go into another part of 
REBOL. We have to consider the language as a whole when we are doing 
things like this.

Here is the overall rationale for the PARSE dialect proposals:

- All new features need to be simple to explain and use, and fast 
at runtime.
- A good feature would be one of these:

  - An extremely powerful enhancement of PARSE's language recognition.

  - A fix to a design flaw in an existing feature, or a compatibility 
  fix.

  - A serious improvement to a sufficiently common use case, or common 
  error.


The reason I didn't want to put COLLECT and KEEP into PARSE is because 
it is a small part of a much bigger problem that really needs a lot 
of flexibility. Different structure collection and building situations 
require different behavior. It just so happens that the DO dialect 
is much better suited to solving this particular problem than the 
PARSE dialect is. Remember, PARSE is a native dialect, and as such 
is rather fixed.


There are some PARSE proposals that make parse actually do something 
with the data itself: CHANGE, INSERT and REMOVE. We were very careful 
when we designed those proposals. In particular, we wanted to provide 
the bare minimum that would be necessary to handle some very common 
idioms that are usually done wrong, even by the best PARSE programmers. 
Sometimes we add stuff into REBOL that is just there to solve a commonly 
messed up problem, so that a well debugged solution would be there 
for people to choose instead of trying to solve it again themselves, 
badly. (This is why the MOVE function got added to R3 and 2.7.6, 
btw.) Even with that justification those features might not make 
it into PARSE because they change the role of PARSE from recognition 
to modification. I have high hopes, though.


Another proposal that might not make it into PARSE is RETURN. RETURN 
is another ease-of-use addition. In particular, the thing it makes 
easy is stopping the parse in the middle to return some recognized 
information. However, it changes the return characteristics of PARSE 
in ways that may have unpredictable results, and may not have enough 
benefit. The proposal that has a better chance of making it is BREAK/return, 
though I'd like to see both (we can hope, right?).


Most of the REPs from Gabriele's doc have been covered. Most of them 
have been changed because we have had time in the last several years 
to give them some thought; the only unchanged ones are NOT and FAIL, 
so far. Some have been rejected because they just weren't going to 
work at all (8 and 12). THROW and DO are still under discussion - 
the proposals won't work as is, but the ideas behind them have merit. 
The rest have been debated and changed into good proposals. Note 
that the DO proposal would be rejected outright for R2, but R3's 
changes to word binding make it possible to make it safe (as figured 
out during a conversation with Anton this evening).


There are other features that are not really changes to the PARSE 
dialect, and so are out of scope for these proposals. That doesn't 
mean that they won't be implemented, just that they are a separate 
subject. That includes delimiter parsing (sorry, Petr), tracing (sorry, 
Henrik), REBOL language syntax (sorry, Graham), and port parsing 
(sorry, Steeve, Anton, Doc, Tomc, et al). If it makes you feel better, 
while discussing the subject with Anton here I figured out a way 
to do port parsing with the R3 port model (it wouldn't work with 
the R2 port model). I will bring these all up with Carl when it comes 
to that.


I hope that this makes the situation and my position on the subject 
clearer. I'm sorry for any misunderstandings that arose during this 
process.
BrianH:
8-Nov-2008
Note that I am quite familiar with collecting data from hierarchical 
and other structures and putting that data into hierarchical and 
other data structures. I have done this with PARSE, with DO dialect 
code, and with a combination of the two. I have found that PARSE 
is good for recognition, but DO dialect code is best for the construction. 
A mix of both is usually the best strategy. You can use the existing 
COLLECT and KEEP with PARSE quite well. PARSE is not a standalone 
dialect - it is meant to be integrated with other dialects, particularly 
the DO dialect that gets executed in the parens.
BrianH:
8-Nov-2008
I am sorry if it seemed like I was taking credit for various PARSE 
proposals. It is not anyone's fault that I have been using PARSE 
long enough that 7 or more years ago I came up with almost every 
one of those proposals, or their original inspirations. That's where 
the conversations that led to the REPs came from. There weren't as 
many REBOL users back before the Official Guide and REBOL for Dummies 
:)


If other people who have had the same ideas since would like to add 
their names to the appropriate proposals I would be more than happy 
to help - consider them to be votes. I would be happier still if 
someone came up with a better way to do THROW or DO, because I am 
at a loss to figure out a way that isn't dumb :(
BrianH:
8-Nov-2008
I've wanted to change the licensing on that script to BSD for years. 
It can do more than the native version - they simplified it.
Steeve:
8-Nov-2008
2, 3 tips 
I know that Brian is great contributor but I think sometimes 
it tends to reject a bit too easily ideas of others. 
Why I am saying this, is that I am not always convinced by his 
arguments but he acts as if the issue was resolved in advance. 
(I may have a problem with that) 

About who is credited with what, I think that this is not 

important too, however it was a bit of supris seeing the name of 
Brian on 
most of the ideas, then as I said previously, this makes 

many years that these Improvements have been suggested by different 
people. 

Obviously this is not an important step, but Brian, you puting your 
name 

everywhere pretexting you collect ideas is a little ... how to say 
that ?
pretentious. 

Personally, I am a large user of parsing. 
I think this is the most important function in Rebol. 
You can do practically everything with it.
Design dialects, interfaces, and many others things. 

Parse can build programs by clearly showing the data structures your 
are dealing with. 
Thus our scripts win in readability. 


During all these years, I was very frustrated seeing some limitations. 

I thought, oh my God, if only we could do this simply, REBOL would 
be so powerful. 

My view is that parse should be extended (as far as possible) to 
gain in expressiveness.

One thing I don't like with parse, is the cumbersome process to pass 
parameters to functions. 

I give an example. 
usually we do: [copy parm my-rule (my-func parm)] 

If parse knew recognize when to call a function we could write: 
	[Myfunc my-rule] 

This would be much more compact and expressive. 

More, we could use return value of myfunc to guess if the parsing 
should continue or not. 

This development would discard most of proposals that were made because 
we could add many new commands very easily. 
(IF NOT ALL RETURN etc ...)
Graham:
8-Nov-2008
Off topic ... but one of my first chat programs used SOAP to do automatic 
translations
BrianH:
8-Nov-2008
Steeve, your latest suggestion is very similar to the RULE! type 
REP (11). Unfortunately, Graham is right that this would basically 
require rewriting PARSE from scratch as a function type. This is 
something I have wanted to do for years, and will get the chance 
to do so once R3's user-defined datatypes are available. I like the 
way you think :)
BrianH:
8-Nov-2008
The final decisions are made by Carl. He's the language director 
and he'll be implementing this stuff. If he say it can't happen, 
it can't happen. If I say that it can happen later when another feature 
is added, you can be sure that I have already figured out how to 
do so - I wouldn't say otherwise.
Graham:
8-Nov-2008
and will we be able to do things like  [ copy obj/var to something 
]
Steeve:
8-Nov-2008
but if you  do that you must limit the behaviour of INTO.
currently INTO enter in paren! path! and block!.
if think it's to versatile
BrianH:
8-Nov-2008
It occured to me (as I'm sure that it has occured to others) that 
it is possible for parse rules to do one bad thing even if you exclude 
all of the modification statements, word setting statements, and 
parens: ANY and SOME can go into infinite loops if they don't advance 
the position. I would like to propose that there be some form of 
warning or error if SOME or ANY loop again on the same position they 
did last time. This condition should be screened for with a PARSE 
refinement. If the refinement is set then when the point is reached 
where ANY or SOME would repeat at the same position, the rule would 
fail (and possibly backtrack to the next alternate).
Steeve:
8-Nov-2008
it's the responsability of sub-rules to do some skip to avoid such 
cases
[unknown: 5]:
9-Nov-2008
Anton, trying creating a word string! and a datatype! string! value 
and insert into a block.  [string! string!]  and then do your testing. 
 I remember discussing this with BrianH when I ran into the issue. 
 I don't have REBOL on the computer I'm currently working from right 
now so I can't present any test at the moment and I'm turning this 
laptop back in to the company soon.
[unknown: 5]:
9-Nov-2008
It was the fact that we didn't want to do the reduce on the third 
one.  Not a big deal Anton.  I'm the only one that wanted that functionality. 
 In fact I think I changed my storage medium to workaround the issue.
Steeve:
10-Nov-2008
i take an example:

to simulate AND we do [here: rule :here] but it can't be used in 
a recursive manner.

If we had PUSH and POP to save and restore the current Index depending 
the level of the recursion (in fact they are stack operations)
So, we could write: AND: [push rule pop]
BrianH:
11-Nov-2008
Gabriele, that would be one way to do AND (though Peta's workaround 
is probably the most efficient).
BrianH:
11-Nov-2008
Well, Peta's additions and changes have been integrated and cleaned 
up. There are more clear guidelines for the project now. Still haven't 
added Gabriele's DO operation yet, though I now know how to do so. 
Anything else?
5001 / 1157812345...4950[51] 5253...112113114115116