2014-07-08 3 views
3

HTML에서 사용하기 위해 브라우저에서 ClojureScript를 실행하기 위해 색상을 16 진수로 포맷하려고합니다.goog.string.format이 포함 된 ClojureScript 형식 문자열이 대체되지 않습니다.

내 "형식"기능은 다음과 같습니다. 내가 가진 goog.string 라이브러리를 요구했습니다는 "문자열"네임 스페이스에서

(defn gen-format [& args] (apply gstring/format args)) 

:

(:require [goog.string :as gstring] [goog.string.format :as gformat]) 

하지만 자바 스크립트에서 호출 할 때 :

document.write(mypackage.strings.gen_format("#%x%x%x",0,0,0)); 

에게 그것을 반환 만 #%x%x%x

충돌이 없습니다. 하지만 goog 형식 함수가 값을 대체하지 않는 것 같습니다. 내가 여기서 잘못된 것을하고 있습니까?

답변

4

%x의 기능은 무엇입니까?

format source sorce 보면, 그것은 단지, d, f, siu을 지원

mypackage.strings.gen_format("#%d%d%d", 0, 0, 0) 

UPDATE : 이것은 나를 위해 잘 작동하는 것 같군

var formatRe = /%([0\-\ \+]*)(\d+)?(\.(\d+))?([%sfdiu])/g; 

: 문자열을 렌더링해야하는 경우 wi th 색상은 다음과 같이 표현됩니다.

(defn hex-color [& args] 
    (apply str "#" (map #(.toString % 16) args)) 

(defn hex-color [r g b] 
    (str "#" (.toString r 16) (.toString g 16) (.toString b 16)) 
+0

% x는 16 진수를 나타냅니다. Clojure 버전의 문자열 형식으로 작동합니다. Javascript에서는 지원되지 않을 수 있습니다. :-( – interstar

+0

이 경우에는 자바가 지원하는 것 같아요. (꽤 마음에 들어요.)하지만 Google Closure는 그렇지 않습니다. http://dev.clojure.org/jira/browse/CLJS-324를 참조하십시오. –