• 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: 3901 end: 4000]

world-name: r3wp

Group: Ann-Reply ... Reply to Announce group [web-public]
amacleod:
28-Dec-2009
How do I get an account to R2Beta?
BrianH:
9-Mar-2010
It appears to be a studio of programmers that do development, not 
an IDE.
Maxim:
11-Mar-2010
in Quebec, they are slowly convrerting the whole civil system into 
using Electronic records.  There are a few recorded cases where patients 
have been greviously harmed (or died) because hospitals do not share 
records.


here the records are the property of the hospitals and these are 
worth money.  Even if the medical system is public, each hospital 
and region is managed independently.  the Govt is having a hard time 
getting all the medical infrastructure to cooperate.
Maxim:
11-Mar-2010
One possible reason is that its very easy to uncover ineffeciencies 
once you can do queries and compare hospitals and individuals.
NickA:
24-Jul-2010
OK, he gets my vote - whatever we're voting on :)  What do I have 
to do to get my hands on MML - this is really useful!
Gregg:
15-Aug-2010
Chris or Graham, do you know if %json.r on json.org needs to change? 
That is, does it do the right thing given whatever scenario it is 
that required altjson to change?
Graham:
20-Aug-2010
Chris, Maarten also included switches to encrypt and decrypt files 
being stored on S3 ... do you want to tackle that as well?  :)
AdrianS:
24-Aug-2010
I get:

>> do http://www.rebol.org/download-a-script.r?script-name=windows-chrono.r
connecting to: www.rebol.org
Script: "Chrono - High-precision time measurement" (24-Aug-2010)
** Script Error: Feature not available in this REBOL
** Near: i64-struct: make struct! [
    low [integer!]
    hi [integer!]
] [0 0]
>>
Group: I'm new ... Ask any question, and a helpful person will try to answer. [web-public]
RobertS:
13-Sep-2007
so do you think that   
   to-path reduce [ my-path  'my-next-refinement]
the best that I can do?
RobertS:
13-Sep-2007
That's 3 times tonight with only 2 teeny blocks and 2 paths  and 
no do against any file and nothing added to user.r
RobertS:
13-Sep-2007
ah-ha !
Works fine in Rebol/Core  ! 

path: 't2/f
do join to-path do path 'a
RobertS:
13-Sep-2007
>> t1: [a "one"]
== [a "one"]
>> t2: [f t1]
== [f t1]
>> path: 't2/f
== t2/f
>> do join to-path do path 'a
== "one"
; thanks CHRIS
RobertS:
13-Sep-2007
; but IN the interpreter, to use join
>> do join to-path do my-path 'a-further-refinement
; is terrific and has led me to
my-path:  to-path join reduce[ my-path ] 'a-deeper-tag
RobertS:
13-Sep-2007
; this work fine for traversal
>> navpath: func [ pth [path!] 'wrd [word!] /local p42 ] [
[    p42: do pth
[    to-path reduce [p42 :wrd]]
>> pp: navpath path a
== t1/a
>> do pp
== "one"
RobertS:
14-Sep-2007
I realized there was this traversal option using a lit-path! treated 
as a series! but it did not seem to if what I already had was a path! 
 held by a word and I wanted to 'extend' that value with a word.

This arises when the embedded word becomes bound to a different block. 
 In that case an OBJECT! looks to be the only option but then the 
WORDSs in the PATH come already bound to values and so are not 'functors' 
as are 'a 'd and 'e in your example.

I  want to construct a resultant valid path! from a valid path! + 
a lit-word where that word has no value but serves only as functor.

I had hoped that the func to-lit-path would be the answer, but I 
see now that the default Rebol DO path! evaluation precludes this 
kind of 'append'.

I should be able to use a modified version of your eval-path func 
to take as args a valid path! and a word!

My path idea is more like a 'tilde' than our '/' such that I can 
have
        ; blk/key~wrd1~wrd2~wrd3 ... ~wrd-n     ; e.g.,  
    path~wrd1~wrd-i~wrd-j ~wrd-k    ; becomes
; ...
    path2~wrd-m~wrd-n  ;  i.e.,
        ; blk/key/putative-confirmed-key~wrd-m~wrd-n   
PARSE is likely part of the answer if I go that TILDE route.
Once I have a lit-path! your eval-path is the traversal.
A blk of args to a func such as

  construct_dpath: func  [ dpath [lit-path!]  functor-words-blk  [block! 
  ]  /local v1 v2] [ 

should model my case OK and that dpath can be constructed by modified 
versions of your eval-path.  Thanks
PaulB:
17-Nov-2007
I am actually writing this for use in my job. I am a network support/programmer 
and I work for Nuns. I have been connecting to their computers using 
VNC. I always have to try and tell them how to give me the address 
of their machine after I get them to start VNC. They always have 
trouble. So I thought I could write something in REBOL do they could 
just double click and read it clearly on the screen. That is why 
I mentioned the large font.
PaulB:
17-Nov-2007
Well, there are about 200 computers I would have to do that too.
Gabriele:
28-Nov-2007
hopefully, we'll find some way to do than in R3
SteveT:
12-Jan-2008
Perspectives of a newbie! By Steve Thornton (SteveT)


Hi! everyone, as someone brand new to REBOL I've been asked to log 
a journal
describing my experiences using REBOL. 


I think the first thing to get out of the way is to tell you where 
I'm coming

to REBOL from. I've programmed on and off for over twenty years starting 
with

Clipper 5 (dBaseII), Visual Basic (Access), C# (SQL Server), Java(NetBeans 
+

JavaDB). I've worked in a variety contract/freelance work. I earn 
approx half 

my income form 'Thornton Software' and I work for Iris Software Group 
- 

as a training consultant (training accountants :-\ someone has to 
do it!)


I can hear some of you saying 'Ahh! he's an IDE wimp - real men/women 
code

from scratch'. It was strange - every language I've used had an IDE 
and I

was a bit put off having to go find myself an editor. Until something 
better

find's me I'm using the freebie 'CREdit' as recommended by Sunanda. 


The easiest way to edit/test the scripts is to open an explorer window 
at

the side of the CREdit window showing my scripts folder. I can then 
drag a .r 

file onto the CEdit screen and it opens it. To run the script I double-click
it in the explorer window.


The help and documentation available is better than I have previously

experienced. Some of the components I've been wow'ed by so far is 
Henriks

List-View and RebDb from Dobeash. I've looked at RebGUI and for the 
time being 

I would prefer not to use anything on top of VID, I need to learn 
pure VID before
using anything else.


REBOL Cookbook of examples is a useful place to start. Some more 
form oriented 

examples would be cool. Example 014 - 'Open two windows'  and Example 
10 - 'Simple text
form window' are both useful


The Event Handling guide is a good resource for programmers moving 
from Visual
Studio etc..


That's more than enough to be going on with, next time I'll cover 
my experiences 
with VID, FACES and handling Events.

Bye for now.
Steve Thornton
SteveT:
12-Jan-2008
Perspectives of a newbie! By Steve Thornton (SteveT) 


In your first steps in using REBOL (If your like me) you'll go and 
have a look

at other peoples scripts - luckily the REBOL Viewtop is full of them. 


One thing that stumped me to begin with was that each developer differed

slightly in how they setup their 'Layout' or 'Views' this is because 
there is

a degree of flexibility that covers different situations. You can 
call a view 

and a layout all in one go, or you can make a layout seperately and 
then call 

it when executing the view. While I quickly understood this, I like 
to follow 

'best practice' when creating the initial framework of my application.


It would be a great help if a diagram was available showing where 
to place 

things. For example I went wrong by trying to place view options/effects 

inside the layout structure, When you look at some of the one/two 
line examples
it looks as if you can do that.

Steve
Henrik:
13-Jan-2008
I guess what LIST-VIEW can do the things it does, mostly because 
of how simple and flexible block operations are in REBOL. I've not 
worked much with C or JAVA, but arrays in PHP are a complete nightmare, 
requiring 20-30 lines of code with what you can do in REBOL in 1-2 
lines of code. My coding expertise has less to do with that, than 
the things REBOL enables you to do within that amount of code.

While it's only 110 kB of code, it's still a lot by REBOL standards. 
The entire of VID3 without the style library is smaller than this. 
The DevBase application is 50 kb. I'm sure that LIST-VIEW's successor 
can be half the current size, be faster and more flexible.
SteveT:
13-Jan-2008
Thanks, is it going to be say twelve months before I could do a commercial 
app text-list 's and all ?
SteveT:
13-Jan-2008
Ok Brock - thanks, I've setup a pretty vanilla script and I'm just 
going to add these guide like things in and see what they do.
BrianH:
17-Jan-2008
If you want to do keyword-based records, put the keywords and values 
in the same block and use
    select/skip data key 2

Put each record in its own block: with variable length records you 
will need to track the end of the record otherwise. This method will 
be slower, but take less space when at least half of the fields are 
usually missing.
Henrik:
19-Jan-2008
it's a supplement to sunanda's example. if you use newblock: copy 
[] you are correctly creating a new block, but every time you then 
append to that block, REBOL has to spend a little time allocating 
new space for the block as it grows. if you preallocate space with 
say:

newblock: make block! 10000


REBOL won't have to do that. This means that when REBOL must garbage 
collect or when you use 'recycle, it knows that there's one big block 
there that it can just remove. Easier for REBOL. Having more blocks 
inside that block makes the case a bit more complex, but since each 
block inside is only created and manipulated once, there may not 
be an issue.
Henrik:
19-Jan-2008
be careful about wording, as 'reform is a function in REBOL. :-) 
all it has to do, is allocate more space. Just imagine a cramped 
desk and you want to put some things on the desk. Which is faster? 
Is it to remove one item at a time from the desk to place a new one 
there, or just swipe the desk clean in one go in order to free all 
desk space immediately?
Henrik:
19-Jan-2008
View is a bit different, because it hogs memory quite badly. You 
can do a few limited things there to speed up display, but not much 
in terms of helping GC.
Gabriele:
19-Jan-2008
if you don't know the final size... it's usually better to let rebol 
do its magic. but, i'd suggest timing the code and deciding which 
is really going to perform better, as there are many variables involved.
SteveT:
19-Jan-2008
cool, I think I used to suffer a little because if your try to open 
a recordSet in visual studio it creates a natural bottle-neck because 
some idiots might have bound controls - and it has to handle that. 
I had to do all my processing of data on a 'SQL disconnected basis' 
 know what I mean by that?
SteveT:
21-Jan-2008
Hi Henrik, yes I know it can be done and you can create your own 
styles or extensions, but new 'Winows' programmers will be very put 
off by that. they shouldn't have to override the VID to do expected 
things liek I mentioned.
SteveT:
21-Jan-2008
I'm sorry for all these questions - It sounds like I want you to 
do my work for me! I don't maind having to figure some things out 
myself . But I was asked to present waht I found difficult from a 
newbie point of view.
Anton:
21-Jan-2008
Correct. (context = object).
So my above example could be modified to:

	append code bind [my-word] in o3 'self


which is in fact how we used to have to do it, because BIND didn't 
have object! in list of accepted types for its known-word argument.
SteveT:
21-Jan-2008
The order of execution throws me more than anytihing I would have 
had to do your code like this

code append bind(my-word etc)

I'm so used to starting with the item
SteveT:
21-Jan-2008
Rebol you say what you want to do then which object you want to do 
it to lol
BrianH:
21-Jan-2008
Gregg, your code is more complex than it needs to be. Try this:

with: func [object [any-word! object! port!] block [block!]] [
    do bind/copy block object
]


This is unnecessary in R3, where you can use DO IN instead of WITH.
SteveT:
26-Jan-2008
Hi Henrik, sure do! I've found that it's easy to step into one of 
the 'deeper' Rebol pools - say 'dialects' and thrash around not getting 
anything done in a disire to understand. This week I'm trying to 
learn just enough to do what I have on the drawing-board.
Henrik:
2-Feb-2008
it has nothing to do with appearance
SteveT:
8-Feb-2008
Jounal of a Newbie - by SteveT

Back on my travels again now (having to do paid work! ;-/  


Have learn't an awful lot about Rebol this month. Managed to get 
a good prototype reasonably functional. Have finsished my little 
licence maker app for internal use. Our client records believe it 
or not were just on Excel!! (Mrs T ) likes Excel! So i've created 
the same data in a simple client app using Henriks List-View and 
RebDB. Perfect for our internal use.


Going to try to learn more about Rebol3 (VID3) during February (Clients 
permiting !)

Steve
Rod:
20-Feb-2008
So for anyone new to REBOL or more generally to Forth (being one 
of the inspirations behind REBOL) I'd like to strongly recommend 
reading Leo Brodie's Thinking Forth - free PDF here - http://thinking-forth.sourceforge.net/


I stumbled across this group of programming books http://prog21.dadgum.com/19.html
and it reminded me I had meant to do some reading on Forth.  I'm 
now a third of the way through the Thinking Forth book kicking myself 
for not having dug into this earlier.  Just like learning about the 
functional perspective with Lisp and Erlang this reading is expanding 
my programming perspective with every chapter.  In addition to being 
valuable in the REBOL context it is simply a great book on programming 
in any context.
BrianH:
15-Mar-2008
You don't have to manually check to see if the function takes two 
arguments; this is good, because doing so is awkward. All you really 
need to do is call the function in parentheses ( ) or at the end 
of a code block, so that it can't take more than two arguments even 
if it tries. If it takes less than two arguments, who cares?
RobertS:
29-Mar-2008
ODE
so I though mebbe
;{
 which would only end at a
;}
as }; will not do ...
To take a page from Snobol

  both would have to be unindented, i.e., occupy first and second char 
  of the line

I live in curly-brace land in CURL and a missing brace becomes a 
headache even in a editor with a scroll-u-there brace-matcher
Anton:
22-Jun-2008
Well, you just pointed out that DO is inconsistent as well. As to 
how harmfully unexpected that is is another question. It obviously 
confused Will. Such things can be a problem, because there can be 
a loss of information. You get the same output from two different 
inputs, which can't be reversed.
Will:
22-Jun-2008
Thanks Anton 8-) my point was just that for a beginner in the cases 
block there is value and block to execute pairs, so it sounded logic 
 that adding /default I would also need to append a block do be "done" 
I was surprised that case for default accept any and not a block 
, not a problem for me but we needed some minutes to understand that.
PeterWood:
23-Jun-2008
From my point of view If anything is inconsistent it seems to be 
when Rebol evalutes blocks.


If you enter a block in the console, it doesn't get evaluated but 
other values do.

>> [1]

== [1]

>> a: 
1
== 1

The block [1] was not evaluted, the word a was.


Though without this possible inconsistency using blocks would be 
a real pain.
Sunanda:
16-Nov-2008
<I copied your code into rebol/view & ran it to see?>

A possibly simpler way is to copy it into the Windows clipboard, 
then this line in the View console:
     do read clipboard://
Sunanda:
16-Nov-2008
A good learning curve, David, might be to adapt the subpanels example.

Once you have sets of controls appearing in the subpanel to your 
satisfaction, you could then go on to do the set dressing:
-- styles and absolute positioning to mimic Win XP
-- default size depending on user's monitor
Then start adding the real functionality!
Gregg:
18-Nov-2008
Not sure what you mean. You can create a layout without viewing it, 
and use view/new to open more than one window. If you just do VIEW 
LAYOUT [...], that starts the event loop, and you'll want to use 
view/new to show other layouts.
DavidR:
25-Nov-2008
I'm afraid I do not understand how sub-panels work can someone give 
me a  commented simple illustration (the simpler the better please) 
of how they work, sorry to be so thick but its not working in my 
example?
DavidR:
25-Nov-2008
rebol [Title: "SOS-XP"]
  view layout [
  image center %DT.jpg 768x576 ibevel pewter 6x6
  button gray 50x30 "START" [show panel1]
  at 75x605 button gray 3x30

  at 750x610 text "00:00" rate 1 black ;effect [gradient 0x1 0.0.150 
  0.0.50]
  feel [engage: func [face act] [face/text: now/time  show face]]

]
  
panel1: view layout [
  image center %DT.jpg 768x576 ibevel pewter 6x6
  at 75x605 button gray 3x30

  at 750x610 text "00:00" rate 1 black ;effect [gradient 0x1 0.0.150 
  0.0.50]
  feel [engage: func [face act] [face/text: now/time  show face]]
  at 200x300

  area wrap font-color white {You use this program & batch files entirely 
  at your own risk,
  due to the myriad of hardware/software configurations I cannot

  without any certainty claim that you will not damage your system!

  Always Always Always make a full system backup of your partition
  before attempting to use SOS-XP & that you have tested the back

  up so your are positive in your own mind you can make a recovery!} 
  red bold 
  at 240x410 button "Agree" [show panel2]
  at 450x410 button "Disagree" [QUIT]]
  do-events

panel2: view layout [
image center %DT.jpg 768x576 ibevel pewter 6x6
  button gray 50x30 "START" [show panel3]
  at 75x605 button gray 3x30

  at 750x610 text "00:00" rate 1 black ;effect [gradient 0x1 0.0.150 
  0.0.50]
  feel [engage: func [face act] [face/text: now/time  show face]]

]755x650
btiffin:
25-Nov-2008
Yeah DavidR;  the order doesn't really matter as long as the definitions 
come before REBOL has to reduce the value.  REBOL will let you make 
and load values (simply word! at that stage), but these words have 
to have a value when evaluation (reduce, do, ... or show in this 
case) is required.

Next...

Then change the show panel1 to view panel1  after   panel1: layout 
[ ... ] is used to create the face object.
Anton:
25-Nov-2008
Looking at the code, I think you would have been confused by the 
fact that the first VIEW waits for events. You have a button in there 
that does SHOW PANEL1, but PANEL1 could not have been set yet in 
this invocation of the program. That means, if you start this program 
in a fresh console it will fail, complaining about panel1 not having 
a value, or, if you had earlier managed to do the panel1 definition 
code in an earlier version of the code (but still in the same console 
session), then you would be shown that earlier panel1 version, of 
course!
Anton:
25-Nov-2008
Here are some ways to use VIEW and DO-EVENTS.

1)
	view window

2)
	view/new window1
	view/new window2
	do-events

3)
	window: layout [
		button "open child window" [
			window2: layout [text "child window"]
			view/new window2
		]
	]
	view window
Anton:
25-Nov-2008
The thing to note is: VIEW without the /NEW refinement, waits for 
events. If you don't wait for events this way, then you have to wait 
for events yourself, using DO-EVENTS. Usually you put DO-EVENTS at 
the end of your script.
Henrik:
27-Nov-2008
Since you are new to programming:


Beginning with an existing program like this may not be optimal for 
understanding how things work, because there are tens of things going 
on in that example. It's the understanding of the underlying principles 
that allow you to build your own programs, and beginning with a big 
example like this throws all principles in your face at once. That 
can be very confusing, like being asked to fly a jumbo jet without 
training. This is why it's so difficult for you to get this example 
to work.


What I would do: Put the program away for now and start using the 
console intensively. Write single commands or a single line of code. 
The immediate feedback from the console lets you learn quickly. The 
console is not simply a service to let you run programs: It's a powerful 
tool that allows you to LEARN. I use it every time I'm in doubt over 
what a specific command will do. The console is your friend. Don't 
be afraid of it. :-)


When you've written enough VID programs in the console, you can start 
looking at the example again, or even better: Write it from scratch 
yourself. That's the best approach.
Janko:
10-Jan-2009
Steeve: I solved it by doing 3 passes , one for each character (.!?) 
. Performance is not that important here as it's a client , but if 
it's possible to do it in one pass I would certanly like to learn 
about it. I will try what you proposed, Thanks!
mhinson:
13-Apr-2009
Hi. I am struggiling to understand parsing & hoping for some pointers.

I have read everything I can find but still cant seem to use parsing 
for basic extraction of information from a number of lines (or even 
a single line).  This is what I am trying to do & would love sme 
help or links to documentation I may have missed please.


lines: {junk wanted line1 contentA rubbish
junk notNeeded line2
wanted line three content B rubbish
}
;I want to extract
;wanted line1 contentA
;wanted line three content B


;That is to say everything between "wanted" up to "rubbish" but including 
"wanted"

Thanks, /\/\
mhinson:
13-Apr-2009
Another (maybe foolish) question please.



I am trying to use this script to help me understand the use of parsing 

to extract data from files. If I paste the script into my REBOL/View 
console it pastes in the script ok, but the examples do not work.


This seems very common with a lot of the scripts in this library 
and is a problem I have been fighting with for several days.

This is what I get.
>> ini: parse-ini-file %/c/windows/win.ini
** Script Error: Out of range or past end
** Where: parse-ini-file
** Near: append last current-section parsed-line/1
append
>> 


Am I pasting the script & examples to the wrong type of console or 
something?

I feel it must be something I am doing as so few of the example scripts 
work for me.

Thanks, /\/\
mhinson:
14-Apr-2009
Thanks very much Pater & sqlab. those examples both do exactly what 
I was thinking.

I now need to try & understand how this relates to the parse-tutorial 
& hopefully I will be able to start using the principles myself.

Thanks again.
Pekr:
14-Apr-2009
Regexp is quite different beast, and there are no single rules for 
translation to REBOL's parse. However - what do you mean by the beginning 
of the line? Is it the first char right after the end-of-line?
Pekr:
14-Apr-2009
btw - do you use parse/all? I prefer to use parse with the refinement, 
because using plain 'parse ignores whitespaces, and I don't like 
when the engine messes with things instead of me :-)
mhinson:
14-Apr-2009
Hi, 
Pekr,

I appreciate that the concept for parsing is different to the use 
of regular expressions, but there are some things that do map from 
one to the other & I wondered if any table of those things existed. 
 As a noob sometimes the hardest questions to get answered are the 
ones where the answer is that there is no concept such as that sought 
by the noob. e.g. how do you grow strawberries in the sea?
 

The first match must be at the begining of the line. If it was the 
first line in the set then it would not be after a new line, but 
other cases it would be.


I will use parse/all from now, I like the extra control you describe.


here a few lines of a test input, the script I am hoping to develop 
is to parse the config files from Cisco devices in order to extract 
the layer 2 & 3 information together with the interface names & descriptions.

lines: {interface FastEthernet0
 description The connection to the printer
!
interface FastEthernet1
!
interface Vlan1
 description User vlan (only 1 vlan allowed)
 no ip address
!
interface Dialer0
 description Outside
 ip address negotiated
!
interface BVI1
 description Inside
 ip address 192.168.0.1 255.255.255.0
!
ip sla 3
 icmp-echo 217.0.0.1 source-interface Dialer0

ip route 0.0.0.0 0.0.0.0 Dialer0

interface ATM0.1 point-to-point
 no ip redirects
 no snmp trap link-status
 pvc 0/38
  pppoe-client dial-pool-number 1
 !
}


; sqlab, your change to use "thru newline" does what I wanted in 
this case which is good.

; my next step is to try & understand the "or" construct properly 
as the code below dosn't quite cut it.

wanted: copy []
interface: ["interface" [to #"^/" | to "point-to-point"]]

parse lines [any [[copy temp interface (insert tail wanted temp)] 
| thru newline ]]
foreach line  wanted [print line]

; thanks very much for your help, /\/\
sqlab:
14-Apr-2009
I am not sure that I understand your intention.

Do you want just  interface ATM0.1, then you have to switch the order 
of your interface rule, as the condition to  #"^/" (newline)  is 
already true and done, and your cursor behind  "point-to-point".
As the first part is true, the second will never be done.
mhinson:
15-Apr-2009
Hi, I have broken this down to try & understand it, but my understanding 
is still very vague, paticularly in respect of the order of things 
like the copy statement & also the number of brackets needed is confusing 
me.


lines: {junk Interface fa0
!
interface fa1}

spacer: charset " ^/"
name-char: complement spacer

parse/all lines [
    any [   [   [
                "interface " copy int-text some name-char 
                (print ["interface: " int-text]) 
                thru newline
                ] any ["!" break | skip]
            ] | skip
        ]
    ]



I need to find some way to make it only get the "interface " if it 
starts at the first position on the line.  

I thought I needed to remove the word "any" to do this, but that 
did not work.
mhinson:
16-Apr-2009
Thanks for your help. 

I am beginning to wonder if what I am trying to do is not possiable 
in Rebol. 

I am impressed at the number of responses, but I still cant find 
a way to use all the bits together to create a structure that is 
going to find the bits of data I am after.  


One of the problems seems to be that catching the the data starting 
with new line & ending at newline uses up the "newline" for the following 
line so then that line gets missed.


Is there really no symbolic way in Rebol to identify the begining 
of the line without using the newline char from the end of the previous 
line?
sqlab:
16-Apr-2009
I see just two ways to get what you desire

either you define different rules for interface at the beginning 
and interface after newline

or you do it in a two pass way:  first you separate the lines (either 
by parse or by read/lines) and then you process every line by itself.

I would go the easy way with two passes.
Pekr:
16-Apr-2009
uh, was on slow connection, so my reply got lost. Mhinson - there 
is no symbolic way to represent beginning of the line. I don't know 
any in any system. The only thing I know is end-of-line (newline). 
I know what you probably mean - you want to identify beginning of 
your lines, but even for first line (so not a rule, matching newline 
first, then next char = beginning of line). But - there is still 
various ways of how to do it. First - I think that your config files 
are chaos. Do they have any rules for some sections at all? :-) I 
also like what sqlab mentioned - sometimes it is easier to break 
stuff into 2 pass strategy. Read/lines is your friend here. You can 
try it on text files and you'll see, that the result is going to 
be a block of lines. I usually do:

data: read/lines %my-data-file.txt

;--- remove empty lines from block of lines ...
remove-each line data [empty? trim copy line]

foreach line data [do something with data ....]


Simply put - if rules for parser are out of my scope of capabilities 
(which happens easily with me :-), I try to find my other way around 
...
Henrik:
17-Apr-2009
You are in dialect territory immediately when you are defining a 
block of data and wanting to do something other than evaluating it 
with DO.
Henrik:
17-Apr-2009
But in another place, [1 2 3 4] might mean something entirely different. 
It also happens to evaluate as normal REBOL code:

>> do [1 2 3 4]
== 4

But of course it doesn't do much. :-)

Code is data and data is code.
mhinson:
17-Apr-2009
Perhaps I should go back to trying to form a program specification 
& see if the advice I get in that context is different. 
If I have
print "hello world"

that seems to follow syntax rules shown by "source print"   are you 
saying because I could have
>> hi: [print "hello world"]
== [print "hello world"]
>> do hi
hello world

I have started using a dialect?
Henrik:
17-Apr-2009
No, when using DO, it will not be a dialect, just normal REBOL code.


Before you do anything with it, the block is just a chunk of data. 
A dialect involves some kind of processor that you write or exists 
in REBOL already, which you then apply to the chunk of data, but 
is not the base scanner (the main language parser).
mhinson:
17-Apr-2009
it  sounds like a very flexiable concept, but likely to add complexity.

parse seems to be well documented in terms of how a string can be 
split apart in this manner
>> probe parse {Hello world} none
["Hello" "world"]

but much less documented when trying to do complex stuff...  I was 
in my ignorance expecting it to follow some sorts of syntax rules 
that I could read about.  Have I missed a basic concept?
Henrik:
17-Apr-2009
I know the following sounds basic, but it's _crucial_ to understanding 
how REBOL works, otherwise you will not "get" REBOL:


You must understand the concept that data is code and code is data. 
That means that anything you write, can be considered pure data. 
It's what you do with that data that becomes important.


It's like speaking a sentence, but only paying attention to the placement 
of letters. That makes the sentence pure data. If you then pay attention 
to the words objectively, they can form a sentence, so you can validate 
its syntax. If you use the sentence in a context, you can apply meaning 
to it, subjectively. If you switch the context, the sentence can 
mean something entirely different.

This is very important. Context and meaning.

For REBOL:

[I have a cat]


This is a block with 4 words. It's pure data that can be stored in 
memory, but at that level it doesn't make any sense to REBOL.


If you then apply a function to that data, you can process it. DO 
processes that data as REBOL code. It will be evaluated as REBOL 
code. Here it will produce an error, because it's not valid REBOL 
code. If you produce your own dialect, for example with PARSE, you 
can make that block make sense.


When typing in the console, REBOL evaluates it as normal REBOL code 
by using DO internally. That means:

>> now
== 17-Apr-2009/18:13:14+2:00

is the same as:

do [now]

But this block:

[now]

is just pure innocent data with no meaning.
Pekr:
17-Apr-2009
mhinson: now my explanations to some of your questions, as I think 
not everything was explained to you properly:


1) parse/all - /all refinement means, that string is parsed "as-is", 
because without the /all, white-space is skipped:

>> parse "this white dog" ["this" "white" "dog"]
== true
>> parse/all "this white dog" ["this" "white" "dog"]
== false
>> parse/all "this white dog" ["this" " " "white" " " "dog"]
== true

I prefer to always use /all refinement for string parsing ...


2) i don't understand why there is | before "some", that code will 
not work imo ...


3) "ifa:" is a marker. Think about parse in following terms ... you 
have your data, here a string. Parse is the matching engine, which 
tries to match your input string according to given rules. In parse 
context (dialect) you have no means of how to manipulate the input 
string, except the copy. So markers are usually used, when you want 
to mark some position, then do something in parens, and then get 
back the position, or simply mark start: .... then somewhere later 
end: and in the paren (copy/part start end) to copy the text between 
the two marked positions ...


4) "skips till one of the OR conditions are met" - very well understood 
...


5) Here's slight modification for append/only stuff. Type "help append" 
in the console. /only appends block value as a block. You will understand 
that, once you will need such behaviour, so far it can look kind 
of academic to you :-) I put parens there, to make more obvious, 
what parameters are consumed by what function ....

>> wanted: copy []
== []

>> append  (append wanted (copy/part "12345" 3))  interf:  copy ["abc"]
== ["123" "abc"]
>> wanted: copy []
== []

>> append/only  (append wanted (copy/part "12345" 3))  interf:  copy 
["abc"]
== ["123" ["abc"]]
Group: Announce ... Announcements only - use Ann-reply to chat [web-public]
Maxim:
31-Oct-2006
There is finally a script to demonstrate some of GLayout's current 
capabilities.

the demo script will download and save slim and glayout on its own 
(asking first), hands free, no obscure installation needed.


do http://www.rebol.org/cgi-bin/cgiwrap/rebol/download-a-script.r?script-name=glayout-demo.r
Maxim:
17-Nov-2006
GLayout demo 0.9.1 Released:
------------------

-auto-updates latest version of GLayout (as per slim requirement).

-new layout using switchpad (btw, switchpad automatically adds a 
right-click popup to select panes)
-takes advantage of new GLayout features.

-improved input field filter example, now properly reacts to caret 
offset (cursor)
-better button and field options examples
-adds center style examples.

do http://www.rebol.org/cgi-bin/cgiwrap/rebol/download-a-script.r?script-name=glayout-demo.r
Maxim:
3-Jan-2007
I thought I'd put a direct link to start the app (works in view 1.3.2 
& 2.7.x) :


do read http://www.pointillistic.com/open-REBOL/moa/steel/retools/download/regraph.r
Maxim:
21-Feb-2007
REMARK HAS NOW FINALLY BEEN RELEASED ON THE STEEL WEB SITE


REMARK is a robust web site building tool which allows you to construct 
your own custom tags using rebol values and dialecting.

The main difference of remark with other tools of its kind, is that 
the web pages do not contain code, they contain data or parameters 
to your custom tags.  Remark also persistently reparses tags until 
no more custom tags exist in the dialected tags you create. this 
means you can actually build up your pages with custom which use 
custom tags themselves... talk about leverage! 


at version 1.3.5 it support multiple site configs, ftp dumping, site 
specific configuration, and the very flexible remark engine itself. 


Creating tags is trivial and for simple templating, you don't even 
need to know how to code in rebol... just html content within stored 
files can be nested within your site's pages and will be included, 
by simply adding a tag which is called like the stored html.


Using differently named source file extensions you can even decide 
to parse the content differently, so that you can create different 
page templates or one can even decide to create a make-doc handler 
for example (its not included by default, just possible if you need 
it).


you can check-out the FULL documentation, including tutorial, example 
site, reference page and guides on adding new tags and templates. 


here: http://www.pointillistic.com/open-REBOL/moa/steel/retools/index.html
[unknown: 9]:
21-Apr-2007
I created a new project in Qtask called "IT Think Tank"
The goal is to invite people that like fiddling with Servers.

I realized that I know a lot of people that do this, and they all 
have the same issues, so they might as well share knowledge.


If you would like to be invited to this project, shoot me a private 
message.


The advantage of a group here on Qtask over - lets say - some forum 
on the web is:


-	Knowing each other, or being only one degree of separation tends 
to mean one feels more comfortable asking deeper questions.

-	Being more than a Forum, people can share files, build Qwikis of 
common issues, etc.
-	The people I know tend to be a "click above."
Chris:
28-Apr-2007
Using QM with Cheyenne -- instructions now included in the documentation:
http://www.ross-gill.com/QM/introduction.html


All mod-QM should do is intercept 404s and redirect the request to 
QM.  I don't think this affects existing setups (please tell me if 
I'm wrong).  QM 404s by default are handled in files://system/views/errors/notfound.rsp
Terry:
15-May-2007
After much consideration, we've decided provide a dual license for 
Redwerks technologies similar to MySQL's licensing policy..  

If you are developing and distributing open source applications under 
the GPL License, then you are free to use Redwerks Inc. software 
under the GPL License


For OEMs, ISVs, and VARs who distribute Redwerks with their products, 
and do not license and distribute their source code under the GPL, 
Redwerks Inc. provides a flexible OEM Commercial License.


The dual - license will apply to the following Redwerks Inc.  technologies

Eco  - Our Semantic Network DBMS
Framewerks- our website creation middleware built on Eco
LFReD - our natual language intelligent agent


For more information on this, and how it relates to Rebol, check 
out the Redwerks group.
Geomol:
31-May-2007
Hokus Pokus!

This is a little fun script, I'm working on, that actually may be 
useful for someone. It can change something into something else. 
First version could transform bitset! back to it's original string!, 
then I added conversion between issue! and tuple!. Now it can also 
translate between many human languages, like in this example:

>> do http://www.fys.ku.dk/~niclasen/rebol/hokus-pokus.r
>> hokus-pokus/translate "Hello, how are you?" "en2es"
== "ÀHola, c—mo eres?"


Using the /translate refinement, and the extra argument can be any 
of:
ar2en

, "zh2en", "zh-CN2zh-TW", "zh-TW2zh-CN", "en2ar", "en2zh-CN", "en2zh-TW", 
"en2fr", "en2de", "en2it", "en2ja", "en2ko", "en2pt", "en2ru", "en2es", 
"fr2en", "fr2de", "de2en", "de2fr", "it2en", "ja2en", "ko2en", "pt2en", 
"ru2en", "es2en"

translating between languages like Arabic, English, Chinese, French, 
German, Italian, Japanese, Korean, Portuguese, Russian and Spanish. 
 Yeah, it's a real Transmogrifier. Have fun!

(It may be hard to type in many of these languages with current REBOL, 
I don't know! :-))
Geomol:
13-Feb-2008
I'm confident, we talk weeks, not months. The first part of the code 
probably in days. From experience, I know, time estimates on software 
projects are very hard to do, but in this case, all the old code 
is there, I would just like to review it, test and optimize a little 
before release.
GiuseppeC:
12-Mar-2008
Oldes, what about uploading your colorizer to rebol.org ? If you 
don't have the time I could do this for you this round.
Geomol:
25-Apr-2008
GLServer for Win32 is released. There also is a Mac version, Linux 
is still missing.
See group OpenGL.
It makes it possible to do 3D graphics from REBOL using OpenGL.
BrettH:
20-Jul-2008
I note with interest the efforts to translate the latest REBOL book 
 from French to English to be published via LuLu. Do you realize 
that LuLu are unable/unwilling to deliver to international P.O. Box 
addresses !!?!! -- they gave me some Bull Dust story about how The 
Australian Postal Service wont deliver to a P.O Box !!  Strange how 
AMAZON seems happy to deliver to a P.O. Box. and have done so for 
many years.  So getting the book might prove difficult for some people.
Janko:
9-Apr-2009
aha, I was totally crazy when I came home from first child.. had 
no idea what to do.. I am not sure how it will be with second :)
Ladislav:
31-May-2009
Identity, Bindology and Parse versus RE articles


the above articles have been revamped and moved to: http://www.rebol.net/wiki/Identity
, http://www.rebol.net/wiki/Bindology, http://www.rebol.net/wiki/Parse_versus_RE
. When checking, do not forget to read and comment the http://www.rebol.net/wiki/Decimals-64#Rounding
section in DevBase.
Gregg:
13-Jun-2009
INCLUDE is very nice. What I think it still missing from the wiki 
are cons about the lower level alternatives with regard to higher 
level "standards". e.g. with LOAD and custom scripts you can do anything, 
sure, but there is no standard model, so each system is ad hoc.
xavier:
25-Jun-2009
i d like to do some 'real' programms in rebol 3
Oldes:
5-Aug-2009
Hi... we are going to finish with the Machinarium game I'm working 
on using my Rebol/Flash dialect. Last level left to do, adding sounds 
and of course some bug fixing and optimizations must be done now.
Here is the newest trailer (contains a few game spoilers!):
http://www.amanita-design.net/blog/2009/08/05/new-trailer/
Pekr:
1-Sep-2009
I asked Cyphre to add some examples, he will do it as time permits. 
This new released version should be more stable and should work both 
with VID and RebGUI ....
amacleod:
4-Sep-2009
I've finally released my App for Beta testing..over a years work 
and much more to go before all the features are implemented that 
will make it a sellable product.


I wanted to take a moment to thank this community as I would not 
have been able to get this far without the Rebol language and even 
more so the Rebol Community. Thank you all for your patient guidance, 
and helpful hints and example code.


I would like to thank some personally as they have been super helpful 
(I hope I do not leave anyone out)
In no special order:
Dockimbel
Graham
Pekr
Henrik
Gabriele
Sunanda
oldes
Paul
Maxim
btiffin
Nick
Reichart
I'm sure I missed a few that helped considerably…sorry if I did.
Robert:
2-Nov-2009
Max, is the C source code available? As a reference how to do extensions 
etc.
Carl:
28-Dec-2009
We need to update R2, however, I do not want to make this a complicated, 
time consuming release... because I do not have extra time (between 
R3 and Website changes.)


The top goals are to remove the restrictions on the special features 
in View, and also to add SSL, if at all possible in a short period 
of time.


The goal IS NOT to fix every little bug... because that would delay 
the release for a year... or more.
Chris:
18-Mar-2010
R3 version: http://ross-gill.com/r/r3metadb.r


Only caveat is that you are limited to writing strings, blocks and 
binary, so you can do the following in R2 but not R3:

	write meta/Chris/home http://www.ross-gill.com/
Robert:
10-Jun-2010
The DLL is only  a demonstrator as I wrote to show how to do it. 
Nothing more.
Chris:
6-Sep-2010
'tweet function for posting to Twitter: http://www.ross-gill.com/r/tweet.html

Usage:


 do/args http://www.ross-gill.com/r/tweet.r[... keys/secrets per 
 settings ...]
	tweet "Status Update"


You can either do/args, or download the script and modify the header. 
 Caveat: you'll need the Application Key/Secret (obtained from the 
Twitter Dev Site) and the User Key/Secret (you'd have to do the handshake 
to get these, see my %twitter.r page: http://www.ross-gill.com/page/Twitter_API_and_REBOL).


Use at your own risk, you would not want to share any of the keys/secrets.
Maxim:
17-Sep-2010
particle generator online.


built for fun and as a reference for anyone to implement his own 
.... its on rebol.org.  have fun hacking/improving it.

pictures: 

http://www.rebol.org/view-script-images.r?script-name=fire-smoke-particle-generator.r


run script:

 do http://www.rebol.org/download-a-script.r?script-name=fire-smoke-particle-generator.r
Fork:
23-Sep-2010
I still feel it's possible to do much better in terms of an interactive 
deployment for Rebol tutoring... but the work on telling an open 
source story for Rebol is even more important than that quibble.
ChristianE:
29-Sep-2010
The R3 ODBC Extension allows easy access to databases and data sources 
supporting ODBC. 


The extension supports SQL statements SELECT and INSERT, UPDATE and 
DELETE as well as catalog functions for tables, columns and types. 
It supports statement parameters and is Unicode aware. It supports 
direct and prepared execution of statements.


If you're used to the commercial REBOL/Command (or the nowadays freely 
available REBOL/View) ODBC database access methods, you should have 
no problems using the ODBC API presented here. There's next to no 
differences in functionality, it differs mostly in that the extension 
isn't used with ports, but with "ordinary" functions OPEN-DB, OPEN-SQL, 
DO-SQL, CLOSE-SQL and CLOSE-DB. This may change when it's possible 
to provide the extension as an asynchronous R3 device, since the 
ODBC functions may be blocking.  


For now, the API is implemented as an embedded host-kit extension 
(it should easily be possible to provide it as an external dll) and 
is available for the Windows platform. So far it has been tested 
with MySQL, PostgreSQL and Intersystems Caché as well as the Microsoft 
Text Driver. Of course it's supposed to work with any ODBC data source.
3901 / 1157812345...3839[40] 4142...112113114115116