[REBOL] Re: Stuck on Parse - Need Help
From: Tom::Conlin::gmail::com at: 5-Aug-2008 10:39
Carlos Lorenz wrote:
> Hi list,
>
> I would appreciate some help on this parse matter.
>
> I have the following string:
>
> corpo: {
>
> Evento: Boxe - Preliminares
> In=EDcio: 09/08/2008 02:30
> Fim: 09/08/2008 05:45
> Sinopse: Acompanhe ao vivo as preliminares do boxe, categoria m=E9dio (at=E9
> 75kg), direto do Gin=E1sio dos Trabalhadores.
>
> Evento: Handebol Masculino
> In=EDcio: 09/08/2008 22:00
> Fim: 09/08/2008 23:00
> Sinopse: Acompanhe ao vivo a estr=E9ia de Cro=E1cia x Espanha no torneio
> masculino, em jogo v=E1lido pelo Grupo A, direto do Gin=E1sio do Centro
> Ol=EDmpico.
>
> Evento: V=F4lei de Praia - Masc.
> In=EDcio: 09/08/2008 23:00
> Fim: 10/08/2008 00:00
> Sinopse: Xu e Wu, da China, Gosch e Horst, da =C1ustria, disputam, nas areias
> da Arena de V=F4lei de Praia, o jogo v=E1lido pela 1=AA rodada do Grupo A.
> }
>
> And I need to have some data out of the string written on a file like this:
>
> ------
> Boxe - Preliminares
> 09/08/2008 02:30
> 09/08/2008 05:45
> ------
> Handebol Masculino
> 09/08/2008 22:00
> 09/08/2008 23:00
> ------
> V=F4lei de Praia - Masc.
> 09/08/2008 23:00
> 10/08/2008 00:00
>
> Here is the code I am trying to run with no success:
>
> REBOL[]
>
> corpo: {
>
> Evento: Boxe - Preliminares
> In=EDcio: 09/08/2008 02:30
> Fim: 09/08/2008 05:45
> Sinopse: Acompanhe ao vivo as preliminares do boxe, categoria m=E9dio (at=E9
> 75kg), direto do Gin=E1sio dos Trabalhadores.
>
> Evento: Handebol Masculino
> In=EDcio: 09/08/2008 22:00
> Fim: 09/08/2008 23:00
> Sinopse: Acompanhe ao vivo a estr=E9ia de Cro=E1cia x Espanha no torneio
> masculino, em jogo v=E1lido pelo Grupo A, direto do Gin=E1sio do Centro
> Ol=EDmpico.
>
> Evento: V=F4lei de Praia - Masc.
> In=EDcio: 09/08/2008 23:00
> Fim: 10/08/2008 00:00
> Sinopse: Xu e Wu, da China, Gosch e Horst, da =C1ustria, disputam, nas areias
> da Arena de V=F4lei de Praia, o jogo v=E1lido pela 1=AA rodada do Grupo A.
> }
>
> out-file: to-file "arq.txt"
>
> parse corpo [
>
> any
>
> [
>
> thru "Evento:" copy evt to newline (write/append
> out-file rejoin ["------" newline evt newline]) |
> thru "In=EDcio:" copy ini to newline (write/append
> out-file rejoin [ini newline]) |
> thru "Fim:" copy fim to newline (write/append
> out-file rejoin [fim newline]) |
>
> ]
>
> to end
>
> ]
>
> Thanks for any help
>
rebol[]
corpo: {
Evento: Boxe - Preliminares
In=EDcio: 09/08/2008 02:30
Fim: 09/08/2008 05:45
Sinopse: Acompanhe ao vivo as preliminares do boxe, categoria m=E9dio
(at=E975kg), direto do Gin=E1sio dos Trabalhadores.
Evento: Handebol Masculino
In=EDcio: 09/08/2008 22:00
Fim: 09/08/2008 23:00
Sinopse: Acompanhe ao vivo a estr=E9ia de Cro=E1cia x Espanha no torneio
masculino, em jogo v=E1lido pelo Grupo A, direto do Gin=E1sio do Centro
Ol=EDmpico.
Evento: V=F4lei de Praia - Masc.
In=EDcio: 09/08/2008 23:00
Fim: 10/08/2008 00:00
Sinopse: Xu e Wu, da China, Gosch e Horst, da =C1ustria, disputam, nas areias
da Arena de V=F4lei de Praia, o jogo v=E1lido pela 1=AA rodada do Grupo A.
}
out-file: to-file "arq.txt"
write out-file ""
parse/all corpo [
any[
thru "Evento:" copy evt thru newline
(write/append out-file rejoin ["------" newline evt])
thru "In=EDcio:" copy ini thru newline
(write/append out-file ini)
thru "Fim:" copy fim thru newline
(write/append out-file fim)
]
]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
------
Boxe - Preliminares
09/08/2008 02:30
09/08/2008 05:45
------
Handebol Masculino
09/08/2008 22:00
09/08/2008 23:00
------
V=F4lei de Praia - Masc.
09/08/2008 23:00
10/08/2008 00:00
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
use parse/all with blocks of rules more often than not
your order is fixed so alteration is not needed
to end is only needed to get parse to return true bailing out early
good morning and I think I will go have my cup of tea.