Rebol可以这样做吗?

时间:2011-04-28 15:39:12

标签: regex http parsing rebol ports

我正在努力在Rebol中重写一个C#应用程序,亲眼看到可实现的产品水平。

我很想知道在我先跳头之前是否:

  • 解析功能可以完成Regex所能做的所有事情

  • 可以使用端口模拟HTTP(实际上是HTTPS)会话! (这里的任何例子都很好,因为我似乎找不到任何例子)

  • 有任何方言可用于解析平面文件
    (包括CSV,TSV,固定长度文件)

  • 有从HTML文件生成PDF的功能
    (或只填充现有的PDF表格)

谢谢!

修改

问题#2,请允许我改写一下,我实际上希望能够在HTTP请求之间维护cookie(实际上,POST [将凭据发布到登录页面],然后是许多重新发送POST后收到的cookie的GET )。

我猜使用curl的等价物是:

curl [url] -d [data] -c [file] 
curl [url] -b [file]

我想我的问题是我只是不知道如何完全使用HTTP方案(阅读http://www.rebol.net/docs/prot-http.html)我在成功发布后看到一个cookie:

p: open http://localhost/test.php
write p "name=foo"
probe p/state/info/headers

但接下来呢?如何重新发送此cookie以及下一个请求。

1 个答案:

答案 0 :(得分:3)

解析功能可以执行RegEx可以执行的所有操作吗?

Rebol的PARSE属于“自上而下的解析语言(TDPL)”系列。它应该比RegEx或LL解析器更强大。有关可能/不可能的细分,请参阅我对问题的回答"Can you create PARSE rules for CSS2/CSS3 in Rebol"(答:是)

是否可以使用端口模仿HTTP(实际上是HTTPS)会话!

您可以在Rebol中编写完整的Web服务器 - 如Cheyenne所示......您可以browse its source code online。如果您想要一个更简单的示例,请查看Tiny Web Server Sample

关于"session management"通过cookie的具体问题,如何做到这一点并没有很好的记录......无论好坏,我都不使用Rebol 2.我认为这是其中之一您必须感受到版本之间变化的区域。

FWIW,这段代码在我用Rebol 3写的一个使用cookies的小脚本中为我工作:

    system/schemes/http/spec/headers: compose [
        cookie: (session_cookie)
        referer: (to-string urlForEdit)
        content-type: {application/x-www-form-urlencoded}
        user-agent: {Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3}
        cache-control: {no-cache}
    ]

    either true [
        system/schemes/http/spec/method: 'post
        system/schemes/http/spec/content: payloadString
        htmlResponse: to-string read postUrl
    ] [
        # this seems to be equivalent to the other branch... 
        # if the target of your WRITE is of type URL! then it
        # automatically sets spec/method and http/spec/content

        htmlResponse: to-string write postUrl payloadString
    ]

是否有可用于解析平面文件的方言?

我不知道PARSE以外的任何已发布的方言,它通常用于get things like CSV into Rebol formats。然后程序将数据作为Rebol运行。一个不幸的事是PARSE doesn't run on PORT!所以如果你的文件很大,你可能必须实现自己的缓冲解决方案。

是否有从HTML文件生成PDF的功能?

从HTML生成PDF或填写表单听起来像是一种交钥匙的东西,你可能想要调用外部维护的工具。但是Gabriele Santilli有一个项目,它使用Rebol PDF方言生成合法的PDF文件:

http://web.tiscalinet.it/rebol/pdf-maker.r

使用库本身创建的库is a PDF file的文档很有趣。如果您想查看用于创建它的方言代码,您可以将其与生成的结果并排查看!

http://web.tiscalinet.it/rebol/pdf-maker-doc.r