Welcome to Scribd. Sign in or start your free trial to enjoy unlimited e-books, audiobooks & documents.Find out more
Standard view
Full view
of .
Look up keyword
Like this
0 of .
Results for:
No results containing your search query
P. 1
Rebol Examples ( 7-21-10)

Rebol Examples ( 7-21-10)

Ratings: (0)|Views: 1,416|Likes:
Published by angerangel2575
Hundreds of Rebol example, to learn this amazing programming language
Hundreds of Rebol example, to learn this amazing programming language

More info:

Published by: angerangel2575 on Dec 09, 2011
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less





INSTRUCTIONS:Download REBOL/View from http://www.rebol.com/download-view.html (.6 MB)Run REBOL, click the "Console" icon, and paste in any of these examples.*** THAT'S EVERYTHING YOU NEED TO GET STARTED WITH THIS TEXT ***To make REBOL automatically open to the console every time it starts,click the "User" link, and then uncheck "Open desktop at startup".To use REBOL's built in text editor, type "editor none" at the console.Press the F5 key while in the editor to save and run any edited code.Be sure to type the header "REBOL []" at the top of any edited scripts.If you install REBOL, any file saved with a ".r" extension will runwhen its file icon is clicked (.r code files run just like .exe files).Type "desktop" to reopen REBOL's default graphic desktop. See thousandsof additional code examples by clicking the "REBOL" and "Public" icons.See http://re-bol.com for a complete REBOL tutorial with line-by-lineexplanations of all the code in these examples. See the last examplein this document for a useful quick reference manual. Metapad (http://liquidninja.com/metapad/download.html) is a great editorfor REBOL. Click Options -> Settings -> Primary External Viewer, and setyour REBOL path (usually C:\Program Files\rebol\view\rebol.exe).
DEMO APPLICATION (10 apps in 2890 characters):REBOL[title:"Demo"]p: :append kk: :pick r: :random y: :layout q: 'imagez: :if gg: :to-image v: :length? g: :view k: :center-face ts: :to-stringtu: :to-url sh: :show al: :alert rr: :request-date co: :copy g y[style h btn 150 h"Paint"[g/new k y[s: area black 650x350 feel[engage: func[f a e][z a = 'over[p pk: s/effect/draw e/offset sh s]z a = 'up[p pk 'line]]]effect[draw[line]]b: btn"Save"[save/png %a.png gg s al"Saved 'a.png'"]btn"Clear"[s/effect/draw: co[line]sh s]]]h"Game"[u: :reduce x: does[al join{SCORE: }[v b]unview]s: gg y/tight[btn red 10x10]o: gg y/tight[btn tan10x10]d: 0x10 w: 0 r/seed now b: u[q o(((r 19x19)* 10)+ 50x50)q s(((r19x19)* 10)+ 50x50)]g/new k y/tight[c: area 305x305 effect[draw b]rate 15feel[engage: func[f a e][z a = 'key[d: select u['up 0x-10 'down 0x10 'left-10x0 'right 10x0]e/key]z a = 'time[z any[b/6/1 < 0 b/6/2 < 0 b/6/1 > 290 b/6/2 > 290][x]z find(at b 7)b/6[x]z within? b/6 b/3 10x10[p b u[q s(last b)]w: 1 b/3:((r 29x29)* 10)]n: co/part b 5 p n(b/6 + d)for i 7(v b)1[either(type?(kk b i)= pair!)[p n kk b(i - 3)][p n kk b i]]z w = 1[clear( back tail n)p n(last b)w: 0]b: co n sh c]]]do[focus c]]]h"Puzzle"[al{ Arrange tiles alphabetically:}g/new k y[origin 0x0 space 0x0 across style p button 60x60[z not find[0x60 60x0 0x-60 -60x0]face/offset - x/offset[exit]tp: face/offset face/offset: x/offset x/offset: tp]p"O"p"N"p"M"p"L"return p"K"p"J"p"I"p"H"return p"G"p"F"p"E"p"D"return p"C"p"B"p"A"x: pwhite edge[size: 0]]]h"Calendar"[do bx:[z not(exists? %s)[write %s ""]rq:rr g/new k y[h5 ts rq aa: area ts select to-block(find/last(to-block read %s)rq)rq btn"Save"[write/append %s rejoin[rq" {"aa/text"} "]unview do bx]]]]h"Video"[wl: tu request-text/title/default"URL:"join"http://tinyurl.com""/m54ltm"g/new k y[image load wl 640x480 rate 0 feel[engage: func[f a e][z a = 'time[f/image: load wl show f]]]]]h"IPs"[parse read tu join"http://""guitarz.org/ip.cgi"[thru<title>copy my to</title>]i: last parse my noneal ts rejoin["WAN: "i" -- LAN: "read join dns:// read dns://]]h"Email"[g/new k y[mp: field"pop://user:pass@site.com"btn"Read"[ma: co[]foreach iread tu mp/text[p ma join i"^/^/^/^/^/^/"editor ma]]]]h"Days"[g/new k y[ btn"Start"[sd: rr]btn"End"[ed: rr db/text: ts(ed - sd)show db]text{DaysBetween:}db: field]]h"Sounds"[ps: func[sl][wait 0 rg: load sl wf: 1 sp:open sound:// insert sp rg wait sp close sp wf: 0]wf: 0 change-dir%/c/Windows/media do wl:[wv: co[]foreach i read %.[z %.wav = suffix? i[pwv i]]]g/new k y[ft: text-list data wv[z wf <> 1[z error? try[ps value][al"Error"close sp wf: 0]]]btn"Dir"[change-dir request-dir do wl ft/data: wv sh ft]]]h{FTP}[g/new k y[px: field"ftp://user:pass@site.com/folder/"[either dir? tu va: value[f/data: sort read tu va sh f][editor tu va]]f:text-list[editor tu join px/text value]btn"?"[al{Type a URL path to browse(nonexistent files are created). Click files to edit.}]]]]Paste the code above into the REBOL interpreter to see how much computingcan be accomplished with just a small amount of REBOL code.
LANGUAGE BASICS: print "Hello world"alert "Alert is a FUNCTION. This text is its PARAMETER (or ARGUMENT)."alert ("Parentheses can enclose parameters, but they aren't required.")editor "This text is a parameter of the 'editor' function ... edit it." browse http://rebol.com ; this function is 'browse' the parameter is a URLrequest "Functions perform ACTIONS. Parameters are DATA. Make sense?"; this is a comment{This is a multi line comment.Comments don't do anything in a program.They just remind the programmer what's happening in the code.}request-text ; These requester functions don't require any parameters,request-date ; but like most functions, they RETURN a useful value.request-colorrequest-filerequest-dirrequest-passalert request-text ; In all these examples, the 1st function uses a valueeditor request-date ; RETURNED by the 2nd function, as its parameter. To print request-file ; complete the 1st function, user response is needed.editor request request-text ; Here, return values are CASCADED.alert "First function on this line" alert "Second function, same line"alert "No" alert "line" alert "endings" alert "are" alert "required"alert "functions are" editor "automatically grouped with their parameters"request-text/default "Text" ; many functions have "refinements" (options)request-text/title "The /title refinement sets this header text"request-text/title/default "Name:" "John Smith" ; 2 options togetherrequest-text/title/offset "/offset repositions the requester" 10x100request-pass/offset/title 10x100 "title" alert "Processing" ; 2 functionsrequest-file/file %temp.txt ; default file namerequest-file/filter ["*.txt" "*.r"] ; only show .txt and .r filesrequest-file/only ; limit selection to a single filerequest-file/save ; save dialog (instead of open dialog)request-file/save/file/filter %temp.txt ["*.txt" "*.r"] print 10 + 12 / 2 ; 22 / 2 = 11 Math is ALWAYS evaluated left to print (10 + 12) / 2 ; 22 / 2 = 11 right. The only exception: print 10 + (12 / 2) ; 10 + 6 = 16 Parentheses are evaluated first. print "This is a string of text." print {Curly braces are used formulti line text strings(instead of quotes).}alert {To use "quotes" in a text string, put them inside curly braces.}alert "You can use {curly braces} inside quotes."alert "'Single quotes' can go inside double quotes..."alert {'...or inside curly braces'}alert {"ANY quote symbol" {can actually be used within} 'curly braces'}alert "In many cases" alert {curly braces and quotes are interchangable.}rejoin ["Hello " "World"] ; "rejoin" CONCATENATES (joins together) valuesrejoin [{Concatenate } {as } {many items } {as } {you } {want.}]rejoin [request-date { } request-color { } now/time { } $29.99]alert rejoin ["You chose: " request "Choose one:"] ; CASCADE return valuesjoin {"Join" only concatenates TWO items } {("rejoin" is more powerful).} print rejoin ["This text is followed by a carriage return." newline]

Activity (5)

You've already reviewed this. Edit your review.
1 hundred reads
1 thousand reads
Nick Antonaccio added this note
This text is by Nick Antonaccio, from the tutorial at http://re-bol.com
Lars Wirfelt liked this
medxx100 liked this

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->