Может ли это сделать Ребол? - PullRequest
2 голосов
/ 28 апреля 2011

Я пытаюсь переписать приложение на C # в Rebol, чтобы воочию увидеть достижимые уровни продуктивности.

Мне было любопытно узнать, прежде чем прыгнуть в голову первым:

  • Функция синтаксического анализа может делать все, что Regex может

  • Можно имитировать сеанс HTTP (фактически, HTTPS), используя порт!
    (любые примеры здесь будутприятно, что я не могу их найти)

  • Существуют любые диалекты для анализа плоских файлов
    (включая CSV, TSV, файлы фиксированной длины)

  • Существуют функции для создания PDF из файла HTML
    (или просто заполнение существующей формы PDF)

Спасибо!

РЕДАКТИРОВАТЬ:

На вопрос № 2, позвольте мне перефразировать, я на самом деле хочу иметь возможность сохранять куки между HTTP-запросами (фактически, POST [отправка учетных данных на страницу входа в систему),сопровождаемый многочисленными GET, которые повторно отправляют куки, полученные после POSTing).

Я полагаю, что эквивалент с использованием curl будет:

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

Думаю, моя проблема в том, что я просто пока не знаю, как полностью использовать схему HTTP (чтение * 1038)* Я вижу файл cookie после успешного сообщения, когда я делаю это:

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

Но что дальше? Как отправить этот файл cookie вместе со следующим запросом.

1 Ответ

3 голосов
/ 28 апреля 2011

Может ли функция синтаксического анализа делать все, что может RegEx?

PARSE Rebol входит в семейство "Языки синтаксического анализа сверху вниз (TDPL)".Он должен быть строго более мощным, чем парсеры RegEx или LL.Подробное описание того, что возможно / невозможно, см. В моем ответе на вопрос «Можете ли вы создать правила PARSE для CSS2 / CSS3 в Rebol» (A: Да)

Возможно ли этоимитировать сеанс HTTP (фактически HTTPS) с использованием порта!

Вы можете создавать полноценные веб-серверы в Rebol - как продемонстрировал Шайенн ... и вы можете просматривать его исходный код в Интернете.Если вы хотите гораздо более простой пример, ознакомьтесь с примером Tiny Web Server .

Что касается конкретной проблемы "управление сеансом" с помощью файлов cookie, это не очень страшнохорошо документировано, как это сделать ... и, к лучшему или худшему, я не использую Rebol 2. Я считаю, что это одна из областей, где вам придется почувствовать изменения между версиями.

FWIWэтот код работал для меня в небольшом скрипте, который я написал в Rebol 3, который использовал куки:

    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, который обычно используется для преобразования таких вещей, как CSV, в форматы Rebol .Затем программа оперирует данными как Rebol.К сожалению, PARSE не работает на PORT! , поэтому, если ваш файл большой, вам, возможно, придется реализовать собственное решение для буферизации.

Существуют ли функции для создания PDF-файла из файла HTML?

Создание PDF-файла из HTML или заполнение форм звучит как нечто готовое, что вам может понадобитьсяпризвать к внешнему инструменту для.Но есть проект Габриэле Сантилли, который генерирует легальные PDF-файлы из диалекта Rebol PDF:

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

Интересно, что документация для библиотеки - это PDFфайл , созданный с использованием самой библиотеки.Если вы хотите увидеть выбранный код, использованный для его создания, вы можете посмотреть на него рядом с сгенерированным результатом!

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

...