From 928950e9b22e51d84878b76a9d072905946f5074 Mon Sep 17 00:00:00 2001 From: jem Date: Fri, 7 Feb 2020 13:49:49 +0100 Subject: [PATCH] refactor type -> this --- doc/classpath_able_io_dependencies.png | Bin 0 -> 32164 bytes src/cryogen_core/classpath_able_io.clj | 30 +++++++++++------- src/cryogen_core/classpath_able_io/fs.clj | 2 +- src/cryogen_core/classpath_able_io/jar.clj | 10 +++--- .../classpath_able_io/{type.clj => this.clj} | 12 +++++-- 5 files changed, 34 insertions(+), 20 deletions(-) create mode 100755 doc/classpath_able_io_dependencies.png rename src/cryogen_core/classpath_able_io/{type.clj => this.clj} (81%) diff --git a/doc/classpath_able_io_dependencies.png b/doc/classpath_able_io_dependencies.png new file mode 100755 index 0000000000000000000000000000000000000000..625cc8cfa2583676b7f6812fe779c6c324815a88 GIT binary patch literal 32164 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 literal 0 HcmV?d00001 diff --git a/src/cryogen_core/classpath_able_io.clj b/src/cryogen_core/classpath_able_io.clj index 00071cc..8489412 100644 --- a/src/cryogen_core/classpath_able_io.clj +++ b/src/cryogen_core/classpath_able_io.clj @@ -11,16 +11,24 @@ [clojure.string :as st] [cryogen-core.classpath-able-io.fs :as fs] [cryogen-core.classpath-able-io.jar :as jar] - [cryogen-core.classpath-able-io.type :as type] + [cryogen-core.classpath-able-io.this :as this] [schema.core :as s]) (:import [java.net URI] [java.util.jar JarFile JarEntry] [java.nio.file FileSystems Paths Files LinkOption StandardCopyOption] [java.nio.file.attribute FileAttribute])) -(s/defn create-fs-resource :- type/Resource - ([virtual-path :- type/VirtualPath - java-path :- type/JavaPath] +(def SourceType this/SourceType) +(def ResourceType this/ResourceType) +(def Prefix this/Prefix) +(def JavaUri this/JavaUri) ; java.net.URI +(def VirtualPath this/VirtualPath) +(def JavaPath this/JavaPath) ; java.nio.Path +(def Resource this/Resource) + +(s/defn create-fs-resource :- this/Resource + ([virtual-path :- this/VirtualPath + java-path :- this/JavaPath] {:virtual-path virtual-path :java-uri (.toUri java-path) :java-path java-path @@ -31,9 +39,9 @@ :else :unknown)})) -(s/defn create-cp-resource :- type/Resource - ([virtual-path :- type/VirtualPath - java-path :- type/JavaPath] +(s/defn create-cp-resource :- this/Resource + ([virtual-path :- this/VirtualPath + java-path :- this/JavaPath] (let [java-uri (.toUri java-path)] {:virtual-path virtual-path :java-uri java-uri @@ -63,7 +71,7 @@ ; contains either a jar or a file (s/defn path-from-cp ;:- JavaPath - [resource-path :- type/VirtualPath] + [resource-path :- this/VirtualPath] (try (let [resource-uri (.toURI (io/resource resource-path))] (when (jar/is-from-classpath-jar? resource-uri) @@ -74,7 +82,7 @@ nil))) (s/defn path-from-fs ;:- JavaPath - [full-path :- type/VirtualPath] + [full-path :- this/VirtualPath] (let [path-from-fs (Paths/get (URI. (str "file://" full-path)))] ;fragile (try (when (Files/exists path-from-fs fs/no-link-option) @@ -133,7 +141,7 @@ (s/defn list-entries-for-dir ;:- [VirtualPath] - [resource :- type/Resource] + [resource :- this/Resource] (if (= :java-classpath-jar (:source-type resource)) (filter-and-remove-for-dir (:virtual-path resource) @@ -167,7 +175,7 @@ ; (println (:java-path resource-to-work-with)) (cond (nil? resource-to-work-with) [] - (type/is-file? resource-to-work-with) + (this/is-file? resource-to-work-with) (recur (drop 1 paths) result) :else (recur (into (drop 1 paths) diff --git a/src/cryogen_core/classpath_able_io/fs.clj b/src/cryogen_core/classpath_able_io/fs.clj index 108f88b..deb61ff 100644 --- a/src/cryogen_core/classpath_able_io/fs.clj +++ b/src/cryogen_core/classpath_able_io/fs.clj @@ -7,7 +7,7 @@ ; You must not remove this notice, or any other, from this software. (ns cryogen-core.classpath-able-io.fs - (:require [cryogen-core.classpath-able-io.type :as type]) + (:require [cryogen-core.classpath-able-io.this :as type]) (:import [java.net URI] [java.nio.file Paths Files LinkOption])) diff --git a/src/cryogen_core/classpath_able_io/jar.clj b/src/cryogen_core/classpath_able_io/jar.clj index 4443cd7..4f5eb33 100644 --- a/src/cryogen_core/classpath_able_io/jar.clj +++ b/src/cryogen_core/classpath_able_io/jar.clj @@ -9,7 +9,7 @@ (ns cryogen-core.classpath-able-io.jar (:require [clojure.java.io :as io] [clojure.string :as st] - [cryogen-core.classpath-able-io.type :as type] + [cryogen-core.classpath-able-io.this :as this] [cryogen-core.classpath-able-io.fs :as fs]) (:import [java.net URI] [java.util.jar JarFile JarEntry] @@ -61,10 +61,10 @@ (filter #(not (empty? %)) path-elements))))] (when (is-from-classpath-jar? resource-uri) - (init-file-system resource-uri)) - ;; TODO: hier steckt auch eine "from-fs-cp" funktionalität drinne - (when (Files/exists (Paths/get resource-uri) fs/no-link-option) - (Paths/get resource-uri))) + (do + (init-file-system resource-uri) + (when (Files/exists (Paths/get resource-uri) fs/no-link-option) + (Paths/get resource-uri))))) (catch Exception e nil))) diff --git a/src/cryogen_core/classpath_able_io/type.clj b/src/cryogen_core/classpath_able_io/this.clj similarity index 81% rename from src/cryogen_core/classpath_able_io/type.clj rename to src/cryogen_core/classpath_able_io/this.clj index 602711a..1a08fb4 100644 --- a/src/cryogen_core/classpath_able_io/type.clj +++ b/src/cryogen_core/classpath_able_io/this.clj @@ -6,12 +6,11 @@ ; the terms of this license. ; You must not remove this notice, or any other, from this software. -(ns cryogen-core.classpath-able-io.type +(ns cryogen-core.classpath-able-io.this (:require [clojure.java.io :as io] [clojure.string :as st] [schema.core :as s])) -; -------------------- Domain Definition ------------------------------ (def SourceType (s/enum :java-classpath-filesystem :java-classpath-jar :filesystem)) (def ResourceType (s/enum :file :dir :unknown)) (def Prefix s/Str) @@ -31,4 +30,11 @@ (s/defn is-dir? :- s/Bool [resource :- Resource] - (= :dir (:resource-type resource))) \ No newline at end of file + (= :dir (:resource-type resource))) + +(s/defn virtual-path-from-elements :- VirtualPath + [& path-elements ;:- VirtualPath + ] + (st/join "/" + (filter #(not (empty? %)) + path-elements)))