Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade Dependencies + ClojureScript support #9

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@ pom.xml.asc
*.class
/.lein-*
/.nrepl-port
tmp/

16 changes: 16 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"name": "schema_contrib",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "Eclipse Public License version 1.0",
"devDependencies": {
"karma": "^2.0.0",
"karma-chrome-launcher": "^2.2.0",
"karma-cljs-test": "^0.1.0"
}
}
22 changes: 16 additions & 6 deletions project.clj
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
(defproject schema-contrib "0.1.5"
(defproject schema-contrib "0.1.6-SNAPSHOT"
:description "Additional validators for Prismatic's Schema."
:url "https://github.com/sfx/schema-contrib"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[instaparse "1.3.0"]
[org.clojure/clojure "1.6.0"]
[org.clojure/test.check "0.5.7"]
[prismatic/schema "0.2.6"]]
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[instaparse "1.4.8"]
[org.clojure/clojure "1.9.0"]
[org.clojure/test.check "0.9.0"]
[prismatic/schema "1.1.7"]
[org.clojure/clojurescript "1.9.946"]]
:plugins [[lein-doo "0.1.8"]
[lein-cljsbuild "1.1.7" :exclusions [[org.clojure/clojure]]]]
:doo {:build "test"}
:cljsbuild
{:builds [{:id "test"
:source-paths ["src" "test"]
:compiler {:output-to "tmp/testable.js"
:main schema-contrib.test-runner
:optimizations :none}}]}
:resource-paths ["resources"])
24 changes: 13 additions & 11 deletions src/schema_contrib/core.clj → src/schema_contrib/core.cljc
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
(ns schema-contrib.core
(:import [java.util Locale])
(:require [clojure.java.io :as io]
[clojure.string :as string]
(:require [clojure.string :as string]
[instaparse.core :as instaparse]
[schema.core :as schema]))
[schema.core :as schema]
[schema-contrib.data :as data])
#?(:cljs (:require-macros [schema-contrib.resources :as load])
:clj
(:require [schema-contrib.resources :as load])))

;; Country (ISO 3166-1 alpha-2 country codes)

(def countries
(apply hash-set (Locale/getISOCountries)))
(apply hash-set data/countries))

(defn countries-contains?
[c]
Expand All @@ -18,7 +20,7 @@
(schema/pred countries-contains? 'Country))

(def countries-keywords
(->> (Locale/getISOCountries)
(->> data/countries
(map keyword)
(apply hash-set)))

Expand All @@ -38,7 +40,7 @@

(def date-parser
(instaparse/parser
(io/resource "date.abnf")
(load/load-resource "date.abnf")
:input-format :abnf))

(defn date?
Expand Down Expand Up @@ -75,7 +77,7 @@

(def email-parser
(instaparse/parser
(io/resource "email.abnf")
(load/load-resource "email.abnf")
:input-format :abnf))

(defn email?
Expand All @@ -91,7 +93,7 @@
;; Language

(def languages
(apply hash-set (Locale/getISOLanguages)))
(apply hash-set data/languages))

(defn languages-contains?
[l]
Expand All @@ -101,7 +103,7 @@
(schema/pred languages-contains? 'Language))

(def languages-keywords
(->> (Locale/getISOLanguages)
(->> data/languages
(map keyword)
(apply hash-set)))

Expand All @@ -123,7 +125,7 @@

(def uri-parser
(instaparse/parser
(io/resource "uri.abnf")
(load/load-resource "uri.abnf")
:input-format :abnf))

(defn uri?
Expand Down
7 changes: 7 additions & 0 deletions src/schema_contrib/data.cljc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
(ns schema-contrib.data
#?(:clj
(:require [schema-contrib.resources :as load])
:cljs (:require-macros [schema-contrib.resources :as load])))

(def languages (load/iso-languages))
(def countries (load/iso-countries))
20 changes: 0 additions & 20 deletions src/schema_contrib/gen.clj

This file was deleted.

20 changes: 20 additions & 0 deletions src/schema_contrib/gen.cljc
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
(ns schema-contrib.gen
(:require [clojure.string :as string]
[clojure.test.check.generators :as gen]
[schema-contrib.data :as data]))

(def country
(gen/elements data/countries))

(def country-keyword
(->> data/countries
(map keyword)
gen/elements))

(def language
(gen/elements data/languages))

(def language-keyword
(->> data/languages
(map keyword)
gen/elements))
13 changes: 13 additions & 0 deletions src/schema_contrib/resources.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
(ns schema-contrib.resources
(:require [clojure.java.io :as io])
(:import (java.util Locale)))

(defmacro load-resource [path]
(let [content (slurp (io/resource path))]
content))

(defmacro iso-countries []
(into [] (Locale/getISOCountries)))

(defmacro iso-languages []
(into [] (Locale/getISOLanguages)))
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
(ns schema-contrib.core-test
(:import (clojure.lang ExceptionInfo))
(:require [clojure.string :as string]
[clojure.test :refer :all]
[clojure.test.check.generators :as gen]
[schema.core :as schema]
[schema-contrib.core :refer :all]
[clojure.test :refer [deftest is testing]]
[schema-contrib.core :refer [Country
Country-Keyword
Date
Email
Language-Keyword
Language
ISO-Date-Time
Time
URI
URI-Reference]]
[schema-contrib.gen :as scgen]))

(defn valid
[s v]
(try
(= (schema/validate s v) v)
(catch ExceptionInfo e false)))
(= nil (schema/check s v)))

(defn invalid
[s v]
Expand Down
5 changes: 5 additions & 0 deletions test/schema_contrib/test_runner.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
(ns schema-contrib.test-runner
(:require [doo.runner :refer-macros [doo-tests]]
[schema-contrib.core-test]))

(doo-tests 'schema-contrib.core-test)