2013-10-01 41 views
0

我正在CoffeeScript中寫我的第一個小書籤,但我很難得到任何不平凡的工作。寫第一個咖啡書籤小編

這是我所希望的劇本,我想用從網頁與選定的片段,以更新的組織模式文件:

fs = require 'fs' 

appendfile = fs.createWriteStream('webjournals.org', 
    flags: "a" 
) 
appendfile.write("\n") 
appendfile.write("* ") 
appendfile.write(document.title) 
appendfile.write("\n") 
appendfile.end(window.getSelection().toString()) 

這編譯爲JS(並通過bookmarklet-izer運行, 。不起作用事實上,即使沒有這個工程:

(function() { 
    var fs; 

    fs = require('fs'); 

    alert(document.title); 

}).call(this); 

這工作,但:

(function() { 
    var fs; 

    alert(document.title); 

}).call(this); 

我手動檢查了代碼,直到Coffee解釋器中的瀏覽器相關函數,並且它可以工作 - 我可以看到組織文件中的更改。我錯過了什麼?

+1

'require'和fs是node.js的特性。 Firefox等瀏覽器沒有實現它們 – guillaume

+0

JS中是否有文件處理函數? –

+0

幫我來幫助你:粘貼選擇後你想用文件做什麼? – guillaume

回答

1

由於是node.js API,因此不能直接在瀏覽器中使用fs模塊。

我能拿出的最簡單的解決方案是爲你create a web server與CoffeeScript中(比如在localhost:1234),並有書籤提交一個片段到你的服務器(與jQuery.post),這反過來將寫入到本地文件。

在說明性的方式,一個片段會從左至右:

網頁 - >書籤 - >本地HTTP服務器 - >組織模式文件 - > Emacs的

另一個解決方案是讓您製作一個Firefox插件,它可以訪問您的本地文件系統(但API似乎不允許附加到文件)。

有一些新的API,例如Filesystem API,但它們似乎是一個死衚衕,因爲你無法訪問完整的文件系統,而是一個沙盒,你不能從emacs訪問。

+0

它看起來像舊的mozilla API允許文件追加,但我會嘗試給node.js本地服務器選項,看看它是多麼緊湊的設置。 –

1

如果您使用的是本地Web服務器來運行的node.js允許腳本來運行和訪問你的文件系統(如紀堯姆的答案的建議),你也應該考慮使用Org-Protocol和使用久經考驗的方法考慮寫給組織文件(Org-Capture)。

Org協議教程提供了設置連接(Windows的註冊表項,配置Mac的Emacs.app和Gnome和KDE的方法)的適當信息,以及允許小書籤執行的JavaScript工作。

然後,您只需創建一個適當的Capture模板來包含您檢索的信息並根據需要進行格式化即可。

+0

感謝您的詳細信息!爲了學習,我會用node.js嘗試一下,然後回到合理的emacs東西。 –