Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] Re: Parse problem

From: volker::nitsch::gmail::com at: 9-Oct-2005 14:29

On 10/9/05, [Patrick--Philipot--laposte--net] <[Patrick--Philipot--laposte--net]> wrote:
> Hi List, > > As I was testing my parse function, I have found an annoying problem > with to-block! is this a bug ? how to workaround it ? > > My function use teh following line > > remove-each w bs [not parse to-block w [url!]] > > And it comes that to-block do not like parens. See > > >> to-block "(right" > ** Syntax Error: Missing ) at end-of-script > ** Near: (line 1) (right > > So there is some kind of evaluation > here. On the other hand, this is ok. > > >> to-block "(right)" > == [(right)] > > This is really bothering me, when Rebol is not fun at all :(
Remember to-block needs valid rebol-code, else it is helpless. Catch the error. !> attempt[to-block "(bang"] == none !> attempt[to-block "bang"] == [bang] !> if u: attempt[to-block "(bang"] [url? first u] == none !> if u: attempt[to-block "http://yep"] [url? u/1] == true !> attempt[load "http://yep"] == http://yep !> url? attempt[load "http://yep"] == true Some other versions to do it: setup: does[ s: {Go see http://www.me.org, it is fabulous. And http://aaa.mypicture.com with my photos. ftp://aaa.mypicture.com too} emit: func[val][repend "" val] ] setup ; Simplest in this case: while[ p: find s "http://" ][ emit copy/part s p set[url s] load/next p emit [build-tag [a href (url)] url </a>] ] emit s print emit "" ; Pure parse, but which chars allowed? setup url-chars: charset [#"a" - #"z" #"0" - #"9" "/.:"] ; which chars? parse/all s[ some[ s: to http:// p: copy url any url-chars ( emit copy/part s p emit [build-tag [a href (url)] url </a>] ) ] (emit s) ] print emit "" ; Using load/next in parse is coomplex, but still: setup parse/all s [ some[ s: to http:// p: ( emit copy/part s p set[url p] load/next p emit [build-tag [a href (url)] url </a>] ) :p ] (emit s) ] print emit "" ; With a kind of multiple 'to, different fonts for http/ftp, for demonstration : setup url-chars: charset [#"a" - #"z" #"0" - #"9" "/.:"] ; which chars? parse/all s[ some[ s: "http://" any url-chars p: ( url: copy/part s p emit [build-tag [a href (url)] <b> url </b> </a>] ) | s: "ftp://" any url-chars p: ( url: copy/part s p emit [build-tag [a href (url)] <i> url </i> </a>] ) | s: skip (emit s/1) ] ] print emit ""
> Ideas and workaround appreciated. > > -- > Ciao > Patrick > > -- > To unsubscribe from the list, just send an email to > lists at rebol.com with unsubscribe as the subject. >
-- -Volker Any problem in computer science can be solved with another layer of indirection. But that usually will create another problem. David Wheeler