Skip to content

Commit 496efd3

Browse files
committed
move over 2.0.0 stuff to maybe do side-by-side
1 parent f045cdb commit 496efd3

File tree

8 files changed

+2598
-1
lines changed

8 files changed

+2598
-1
lines changed

src/xapi_schema/spec_2_0_0.cljc

Lines changed: 1390 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
(ns xapi-schema.spec-2-0-0.regex)
2+
3+
(defn- base-timestamp []
4+
(let [;; Date
5+
year "(\\d{4})"
6+
month "(0[1-9]|1[0-2])"
7+
day "(0[1-9]|[12]\\d|3[01])" ; ignore month/leap year constraints
8+
;; Time
9+
hour "([01]\\d|2[0-3])"
10+
min "([0-5]\\d)"
11+
sec "([0-5]\\d|60)" ; leap seconds
12+
sec-frac "(\\.\\d+)"
13+
;; Time
14+
time (str "(?:" hour ":" min ":" sec sec-frac "?" ")")
15+
date (str "(?:" year "-" month "-" day ")")]
16+
(str date "[T\\s]" time)))
17+
18+
(def TimestampRegEx ; RFC 3339
19+
(let [;; Time
20+
hour "(?:[01]\\d|2[0-3])"
21+
min "(?:[0-5]\\d)"
22+
;; Offset
23+
lookahead "(?!-00:00)"
24+
num-offset (str "(?:[+-]" hour ":" min ")")
25+
time-offset (str "(Z|" lookahead num-offset ")")]
26+
(re-pattern (str "^" (base-timestamp) time-offset "$"))))
27+
28+
(def DurationRegEx ; ISO 8601 Durations
29+
(let [dy "(?:\\d+Y|\\d+\\.\\d+Y$)"
30+
dm "(?:\\d+M|\\d+\\.\\d+M$)"
31+
dw "(?:\\d+W|\\d+\\.\\d+W$)"
32+
dd "(?:\\d+D|\\d+\\.\\d+D$)"
33+
dh "(?:\\d+H|\\d+\\.\\d+H$)"
34+
ds "(?:\\d+S|\\d+\\.\\d+S$)"
35+
dur-date (str "(?:" dd "|" dm dd "?" "|" dy dm "?" dd "?" ")")
36+
dur-time (str "(?:" ds "|" dm ds "?" "|" dh dm "?" ds "?" ")")
37+
dur-week (str "(?:" dw ")")
38+
duration (str "(?:" dur-date "(?:T" dur-time ")?" ")" "|"
39+
"(?:T" dur-time ")" "|"
40+
dur-week)]
41+
(re-pattern (str "^P(?:" duration ")|P(?:" (base-timestamp) ")$"))))
42+
43+
;; Based on http://www.regexr.com/39s32
44+
(def xAPIVersionRegEx
45+
(let [suf-part "[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*"
46+
suffix (str "(\\.[0-9]+(?:-" suf-part ")?(?:\\+" suf-part ")?)?")
47+
ver-str (str "^(1\\.0" suffix ")|(2\\.0\\.0)$")]
48+
(re-pattern ver-str)))

0 commit comments

Comments
 (0)