Permalink
Browse files

new post 2012-12-11-clojure-read-a-file-as-a-sequence-of-lines.markdown

  • Loading branch information...
1 parent c8e7afa commit 85ddf814817ef83ac1d754d8dedf38ede74d0732 @reniclin committed Dec 11, 2012
@@ -12,7 +12,7 @@ categories: clojure leiningen jar
前陣子在使用 seesaw 寫 desktop app,遇到想把所有 source code build 成單一執行檔的需求,
使用 leiningen,可以輕鬆把你的 source 和其它的 dependencies 包成一個可單獨執行 standalone 的 jar。
-1. 在宣告ns時要加上 (:gen-class),例如:
+* 在宣告ns時要加上 (:gen-class),例如:
{% codeblock lang:clojure %}
(ns my-namespace.core
@@ -22,7 +22,7 @@ categories: clojure leiningen jar
(:gen-class))
{% endcodeblock %}
-2. 在project.clj裡加上 :main,例如:
+* 在project.clj裡加上 :main,例如:
{% codeblock lang:clojure %}
(defproject my-project "1.0.0-SNAPSHOT"
@@ -33,11 +33,11 @@ categories: clojure leiningen jar
:main my-namespace.core)
{% endcodeblock %}
-3. 使用 leiningen 產生 jar
+* 使用 leiningen 產生 jar
$ lein uberjar
-4. 執行
+* 執行
$ java -jar my-project-1.0.0-SNAPSHOT-standalone.jar
@@ -15,51 +15,51 @@ noir是一套很好用的clojure web frameworks,紀錄一下安裝leiningen no
### lein 1.x
-1. 安裝 leiningen noir plugin
+* 安裝 leiningen noir plugin
{% codeblock lang:bash %}
$ lein plugin install lein-noir 1.2.1
{% endcodeblock %}
-2. 建立一個新的 noir 專案
+* 建立一個新的 noir 專案
{% codeblock lang:bash %}
$ lein noir new my-web
{% endcodeblock %}
-3. cd 到剛剛建出來的資料夾
+* cd 到剛剛建出來的資料夾
{% codeblock lang:bash %}
$ cd my-web
{% endcodeblock %}
-4. 試跑一下
+* 試跑一下
{% codeblock lang:bash %}
$ lein run
{% endcodeblock %}
-5. 成功跑起來之後可以用瀏覽器打開 http://localhost:8080 就可以看到歡迎畫面。
+* 成功跑起來之後可以用瀏覽器打開 http://localhost:8080 就可以看到歡迎畫面。
### lein 2.x 的步驟比較簡單,不用先裝 plugin
-1. 建立一個新的 noir 專案
+* 建立一個新的 noir 專案
{% codeblock lang:bash %}
$ lein new noir my-web
{% endcodeblock %}
-2. cd 到剛剛建出來的資料夾
+* cd 到剛剛建出來的資料夾
{% codeblock lang:bash %}
$ cd my-web
{% endcodeblock %}
-3. 試跑一下
+* 試跑一下
{% codeblock lang:bash %}
$ lein run
{% endcodeblock %}
-4. 成功跑起來之後可以用瀏覽器打開 http://localhost:8080 就可以看到歡迎畫面。
+* 成功跑起來之後可以用瀏覽器打開 http://localhost:8080 就可以看到歡迎畫面。
@@ -49,3 +49,18 @@ IE 沒測試過,不過我猜應該沒辦法跑。
#### 點選左上角的兩個圈圈可以切換白色/黑色兩種主題
{% img /images/web-todo/06_dark.png %}
+
+
+### 相關聯結:
+
+[Clojure](http://clojure.org/)
+
+[ClojureScript](https://github.com/clojure/clojurescript)
+
+[sass](http://sass-lang.com/)
+
+[Compass](http://compass-style.org/)
+
+[fancy-buttons](https://github.com/imathis/fancy-buttons)
+
+[Animate Mixin for Compass/SASS](http://thecssguru.freeiz.com/animate/)
@@ -0,0 +1,28 @@
+---
+layout: post
+title: "Clojure Read a File as a Sequence of Lines"
+date: 2012-12-11 09:04
+comments: true
+categories: clojure
+---
+## Clojure把檔案逐行讀成sequence
+
+<!-- more -->
+
+Clojure (Lisp) 常用到sequence,讀檔時也可以把檔案逐行讀成sequence:
+
+{% codeblock lang:clojure %}
+(line-seq (clojure.java.io/reader (clojure.java.io/file "file-path")))
+{% endcodeblock %}
+
+讀出來的東西類似像這樣:
+
+{% codeblock lang:clojure %}
+("line-1" "line-2" "line-3" "line-4" "line-4")
+{% endcodeblock %}
+
+讀成sequence之後就可以用doseq之類方便處裡sequence的macro來操作它,例如:
+{% codeblock lang:clojure %}
+(doseq [line (line-seq (clojure.java.io/reader (clojure.java.io/file "file-path")))]
+ (println line))
+{% endcodeblock %}

0 comments on commit 85ddf81

Please sign in to comment.