|
1251 | 1251 | [{:keys [target val env]}] |
1252 | 1252 | (emit-wrap env (emits "(" target " = " val ")"))) |
1253 | 1253 |
|
| 1254 | +(defn sublib-select |
| 1255 | + [sublib] |
| 1256 | + (when sublib |
| 1257 | + (let [xs (string/split sublib #"\.")] |
| 1258 | + (apply str |
| 1259 | + (map #(str "['" % "']") xs))))) |
| 1260 | + |
1254 | 1261 | (defn emit-global-export [ns-name global-exports lib] |
1255 | | - (emitln (munge ns-name) "." |
1256 | | - (ana/munge-global-export lib) |
1257 | | - " = goog.global" |
1258 | | - ;; Convert object dot access to bracket access |
1259 | | - (->> (string/split (name (or (get global-exports (symbol lib)) |
1260 | | - (get global-exports (name lib)))) |
1261 | | - #"\.") |
1262 | | - (map (fn [prop] |
1263 | | - (str "[\"" prop "\"]"))) |
1264 | | - (apply str)) |
1265 | | - ";")) |
| 1262 | + (let [[lib' sublib] (ana/lib&sublib lib)] |
| 1263 | + (emitln |
| 1264 | + (munge ns-name) "." |
| 1265 | + (ana/munge-global-export lib) |
| 1266 | + " = goog.global" |
| 1267 | + ;; Convert object dot access to bracket access |
| 1268 | + (->> (string/split (name (or (get global-exports (symbol lib')) |
| 1269 | + (get global-exports (name lib')))) |
| 1270 | + #"\.") |
| 1271 | + (map (fn [prop] |
| 1272 | + (str "[\"" prop "\"]"))) |
| 1273 | + (apply str)) |
| 1274 | + (sublib-select sublib) |
| 1275 | + ";"))) |
1266 | 1276 |
|
1267 | 1277 | (defn load-libs |
1268 | 1278 | [libs seen reloads deps ns-name] |
|
1288 | 1298 | ;; have handled it - David |
1289 | 1299 | (when (and (= :none optimizations) |
1290 | 1300 | (not (contains? options :modules))) |
1291 | | - (if nodejs-rt |
1292 | | - ;; under node.js we load foreign libs globally |
1293 | | - (let [ijs (get js-dependency-index (name lib))] |
1294 | | - (emitln "cljs.core.load_file(" |
1295 | | - (-> (io/file (util/output-directory options) |
1296 | | - (or (deps/-relative-path ijs) |
1297 | | - (util/relative-name (:url ijs)))) |
| 1301 | + (let [[lib _] (ana/lib&sublib lib)] |
| 1302 | + (if nodejs-rt |
| 1303 | + ;; under node.js we load foreign libs globally |
| 1304 | + (let [ijs (get js-dependency-index (name lib))] |
| 1305 | + (emitln "cljs.core.load_file(" |
| 1306 | + (-> (io/file (util/output-directory options) |
| 1307 | + (or (deps/-relative-path ijs) |
| 1308 | + (util/relative-name (:url ijs)))) |
1298 | 1309 | str |
1299 | 1310 | escape-string |
1300 | 1311 | wrap-in-double-quotes) |
1301 | | - ");")) |
1302 | | - (emitln "goog.require('" (munge lib) "');")))] |
| 1312 | + ");")) |
| 1313 | + (emitln "goog.require('" (munge lib) "');"))))] |
1303 | 1314 | :cljs |
1304 | 1315 | [(and (ana/foreign-dep? lib) |
1305 | 1316 | (not (keyword-identical? optimizations :none))) |
|
1317 | 1328 | (when-not (= lib 'goog) |
1318 | 1329 | (emitln "goog.require('" (munge lib) "');")))) |
1319 | 1330 | (doseq [lib node-libs] |
1320 | | - (emitln (munge ns-name) "." |
1321 | | - (ana/munge-node-lib lib) |
1322 | | - " = require('" lib "');")) |
| 1331 | + (let [[lib' sublib] (ana/lib&sublib lib)] |
| 1332 | + (emitln (munge ns-name) "." |
| 1333 | + (ana/munge-node-lib lib) |
| 1334 | + " = require('" lib' "')" (sublib-select sublib) ";"))) |
1323 | 1335 | (doseq [lib global-exports-libs] |
1324 | | - (let [{:keys [global-exports]} (get js-dependency-index (name lib))] |
| 1336 | + (let [{:keys [global-exports]} (get js-dependency-index (name (-> lib ana/lib&sublib first)))] |
1325 | 1337 | (emit-global-export ns-name global-exports lib))) |
1326 | 1338 | (when (-> libs meta :reload-all) |
1327 | 1339 | (emitln "if(!COMPILED) " loaded-libs " = cljs.core.into(" loaded-libs-temp ", " loaded-libs ");")))) |
|
0 commit comments