2011-05-27 15 views
6

पर कनवर्ट करना आप क्लोजर स्रोत फ़ाइल को YAML में कैसे परिवर्तित करेंगे? मैं clj-yaml पुस्तकालय का इस्तेमाल किया है इंटरैक्टिव आरईपीएल में यह करने के लिए है, लेकिन मैं यह स्वचालित करना चाहते हैं, तो मैं कोई इनपुट फ़ाइल में गुजरती हैं और एक आउटपुट निर्दिष्ट कर सकते हैं, यानी:क्लोजर: क्लोजर फ़ाइल को YAML

clj2yaml input.clj > output.yml 
+0

'lein-exec' प्लगइन देखें; इस https://github.com/kumarshantanu/lein-exec – zach

उत्तर

2

आप पहले से ही जानते हैं कि कैसे करने के लिए एक क्लोजर कनवर्टर कोड करें, अब आपको इसे एक स्टैंडअलोन एप्लिकेशन के रूप में पैकेज करने की आवश्यकता है, और संभवतः एक शॉर्ट स्क्रिप्ट बनाएं जो आपकी कक्षा को आमंत्रित करे।

एक विकल्प के रूप में, यहाँ एक neat way to do it है, यदि आप एक * nix पर्यावरण पर कर रहे हैं:

#^:shebang '[ 
exec java -cp "$HOME/src/clj/clojure/clojure.jar" clojure.lang.Script "$0" -- "[email protected]" 
] 
(your code here) 
+0

के लिए यह सही है कि मुझे यह जोड़ना चाहिए कि जब मैं अनिवार्य रूप से अपनी स्ट्रिंग को चिपकाता हूं तो मैं इसे इंटरैक्टिव आरईपीएल में परिवर्तित कर सकता हूं। क्लोजर ज्ञान की मेरी कमी इस बात से सीमित है कि मैं वास्तव में कैसे क्लोजर के साथ परिवर्तित डेटा को पढ़ें, रूपांतरित करें और लिखें। आपके उत्तर के लिए धन्यवाद –

4

के रूप में मैं इसे समझते हैं कि आप पढ़ सकते हैं और फ़ाइलें लिखने में मदद की जरूरत है ?! slurp और spit देखें। एक YAML कॉन्फ़िगरेशन फ़ाइल पढ़ने और इसे clj-yaml के साथ पार्स करने के वास्तविक उदाहरण के लिए, pswincom.gateway.config देखें।

(ns sample 
    (:require [clj-yaml.core :as yaml])) 

(->> (slurp (nth *command-line-args* 0)) 
    read-string ; converts the file content to a clojure datastructure 
    yaml/generate-string 
    (spit (nth *command-line-args* 1))) 

(Windows पर) मैं इसे उपयोग करने के लिए आसान बनाने के लिए एक बैच clj2yaml.bat बुलाया फ़ाइल बना सकते हैं:

और यहाँ एक सरल clojure उपकरण के एक कार्यान्वयन रूपांतरण करना है। यह मानता है कि आवश्यक जार-फाइलें वर्तमान निर्देशिका में स्थित हैं। मैं तो बस एक नौसिखिया हूँ जब यह निष्पादन के इस प्रकार की बात आती है, तो एक बेहतर स्क्रिप्ट काफी संभावना संभव है, लेकिन यहाँ यह है:

java.exe -cp .\clojure-1.2.0.jar;.\clojure-contrib-1.2.0.jar;.\clj-yaml-0.3.0-20101010.033133-1.jar;.\snakeyaml-1.5.jar clojure.main sample.clj %* 

मैं अब clj2yaml foo.clj foo.yaml निष्पादित YAML फ़ाइल बनाने के लिए कर सकते हैं।