1

我的用例如下:

  • 我有一个使用 YesodWeb 的网站设置
  • 我可以将文本写入一个区域
  • Pandoc 转换我的文本,我在另一个文本框中收到转换后的文本
  • 问题:如何将我的命令绑定到 html 选择器?我需要能够根据选择器向我的 Pandoc 函数提供不同的命令。

我在 my.hs 文件中的函数:

pandocConverted :: String -> IO String 
pandocConverted input = do
    (Just hIn, Just hOut, _, _) <- createProcess (proc "pandoc" []) { std_in = CreatePipe, std_out = CreatePipe }
    hPutStr hIn input    
    converted  <- hGetContents hOut
    return converted

pandoc 命令行是这样的:

(proc "pandoc" ["-f", variable1, "-t", variable2]) 输入“-f”,例如“markup”,输出“-t”,例如“latex”

我在 chat.hamlet(html 模板)中的选择器:

<div style="float:right; margin-top:5px">
                <select id="selectorTo" onchange="getSelected(this)">
                    <option value="asciidoc">AsciiDoc</option>
                    <option value="context">ConTeXt</option>
                    <option value="docbook">DocBook</option>
                    <option value="dokuwiki">DokuWiki</option>
...

用于输出

<div style="float:left;"> 
                <p style="font-size:18px"> From: 
            <div style="float:right; margin-top:5px">
                <select id="selectorFrom" onchange="getSelected(this)">
                    <option value="docbook">DocBook
                    <option value="haddock">Haddock markup
                    <option value="html">HTML
                    <option value="latex">LaTeX
                    <option value="markdown" selected="">Markdown (pandoc)
... 

用于输入

我写了这个javascript。如何将变量返回到我的 .hs 文件?

url = url.replace("http:", "ws:").replace("https:", "wss:");
conn = new WebSocket(url);

function getSelected(e) {
    var value = e.value;
    var selector = '';

    if(e.id == "selectorFrom"){
        selector = e.id;
    }
    if(e.id == "selectorTo"){
        selector = e.id;
    }
    console.log(selector + ": " + value);
    return (selector, value);
    conn.send(e.id, e.value);
 }

conn.send(e.id, e.value)什么都不做。我将如何在服务器端接收消息?

请帮我!

4

0 回答 0