понедельник, 24 июня 2013 г.

Модуль для работы с конфиг-файлом в clojure с помощью Properties

В Clojure 1.5 появилась возможность работы с конфигами в формате edn(extensible data notation), но я пока использую версию 1.4, поэтому для себя сделал модуль с использованием класса Properties. Модуль имеет вид:

(ns somens
  (:use [clojure.java.io])
  (:import (java.util Properties)
            (java.io  FileOutputStream FileInputStream)))

(defn load-properties [config-file]
  (with-open [f (java.io.FileInputStream. (file config-file))]
    (doto (Properties.)
      (.load f))))

(defn save-properties [#^Properties properties #^String config-file]
     (with-open [#^FileOutputStream f (FileOutputStream. (file config-file))]
       (.store properties f nil)))

(defn get-property [properties name]
  (.getProperty properties name ))

(defn set-property [properties name value]
  (.setProperty properties name (str value)))
Пример использования: конфигурационный файл имеет вид:

$cat conf.prop 
a=20
b="test"
Считаем данный файл и выведем параметры:

user> (def conf (load-properties "/home/home/conf.prop"))
#'user/conf                                                                                                                                
user> (get-property conf "a")
"20"                                                                                                                                                          
user> (get-property conf "b")
"test"
А теперь изменим параметры и сохраним:

user> (let [conf (load-properties "/home/home/conf.prop")]                                                                              
                              (set-property conf "a" "200")                                                                                                   
                              (set-property conf "b" "600")                                                                                                   
                              (save-properties conf "/home/home/conf.prop"))
nil       

$cat conf.prop 
#Mon Jun 23 11:18:25 UTC 2013
b=600
a=200
       

понедельник, 10 июня 2013 г.

Исходники WebClojure

Появилось время продолжить заниматься веб-редактором для clojure и я выложил исходники прототипа на BitBucket.org. Большая часть кода написана на JavaScript и так как до этого я на нем не писал, то здравая критика приветствуется. Конечно можно было попробовать ClojureScript, но я решил изначально использовать JavaScript. В ближайшее время хотелось исправить возможность сохранять файл по любому пути, а так же неудобство прокрутки textarea.