Hi Joanna,

<< Another question.. ... Has anyone made REBOL script that could parse
Slashdot news headers and view them on small window? All info (including
links to files) are on
  http://slashdot.org/code.shtml
There is no example on REBOL. IMHO it woud make an nice example how
REBOL/VIEW can be used. I looked those header files and they surely look
quite easy to parse, it would make nice and short view demo. >>

Here's a real quick, hackety-hack version that might be useful as a starting
point for something nicer. The item-rules can actually be generated
programmatically from the object spec without much difficulty as well, but
for just this small number of fields this isn't bad. Beware strange names
due to scavenged code.

Anyone think this is worth improving? If we did, it could (as Joanna said)
be a good showcase piece for the SlashDot crowd to give them a reason to
look into REBOL.

(WWW - Watch for Word Wrap)

--Gregg


REBOL [
    Title: "Slashdot Header Viewer"
    Author: "Gregg Irwin"
    Email: [EMAIL PROTECTED]
    Date: 6-Jul-2002
]

story: make object! [
    title: url: time: author: department: topic: comments: section: image:
none
]

data: read http://slashdot.org/slashdot.xml
stories: copy []
cur-story: make story []

parser: make object! [
    item-rules: [
        [thru <title> copy text to </title>] (cur-story/title: text)
        | [thru <url> copy text to </url>] (cur-story/url: to url! text)
        | [thru <time> copy text to </time>] (cur-story/time: to date! text)
        | [thru <author> copy text to </author>] (cur-story/author: text)
        | [thru <department> copy text to </department>]
(cur-story/department: text)
        | [thru <topic> copy text to </topic>] (cur-story/topic: text)
        | [thru <comments> copy text to </comments>] (cur-story/comments:
text)
        | [thru <section> copy text to </section>] (cur-story/section: text)
        | [thru <image> copy text to </image>] (cur-story/image: text)
    ]
    story-rule: [
        [thru <story> copy text to </story>] (
            parse text [some item-rules]
            append stories cur-story
            cur-story: make story []
        )
    ]

    get-stories: does [
        parse data [some story-rule to end]
    ]
]


lwide: 385
num-items-visible: 4
cnt: 0
parser/get-stories


subface: layout/offset [
    origin 0 space 0x0
    t1: h2 lwide  black snow [browse item/url]
    t2: text lwide black ivory - 32
    t3: text lwide black ivory - 32
] 0x0


view layout compose [
    space 2x2
    lst: list (as-pair 385 (subface/size/y * num-items-visible)) [
        origin 0 space 0x0
        box subface/size
    ] supply [
        count: count + cnt
        face/pane: none
        if pick stories count [
            item: pick stories count ; don't move it
            face/pane: subface
            t1/text: item/title
            t2/text: rejoin ["Posted by " item/author " on " item/time/date
" at " item/time/time]
            t3/text: rejoin ["From the " item/department " dept.  ("
item/comments " comments)"]
        ]
    ]
    return
    sld: scroller (as-pair 16 (subface/size/y * num-items-visible)) [
        c: max 0 to-integer value * subtract length? stories
num-items-visible
        if c <> cnt [cnt: c show lst]
    ]
]

-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to