<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="../../../coverage.css"/> <title> dog_and_duck/quack/picky/control_variables.clj </title> </head> <body> <span class="covered" title="1 out of 1 forms covered"> 001 (ns dog-and-duck.quack.picky.control-variables </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 002 "Control variables for the picky validator.") </span><br/> <span class="blank" title="0 out of 0 forms covered"> 003 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 004 ;;; Copyright (C) Simon Brooke, 2022 </span><br/> <span class="blank" title="0 out of 0 forms covered"> 005 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 006 ;;; This program is free software; you can redistribute it and/or </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 007 ;;; modify it under the terms of the GNU General Public License </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 008 ;;; as published by the Free Software Foundation; either version 2 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 009 ;;; of the License, or (at your option) any later version. </span><br/> <span class="blank" title="0 out of 0 forms covered"> 010 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 011 ;;; This program is distributed in the hope that it will be useful, </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 012 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 013 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 014 ;;; GNU General Public License for more details. </span><br/> <span class="blank" title="0 out of 0 forms covered"> 015 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 016 ;;; You should have received a copy of the GNU General Public License </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 017 ;;; along with this program; if not, write to the Free Software </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 018 ;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. </span><br/> <span class="blank" title="0 out of 0 forms covered"> 019 </span><br/> <span class="covered" title="2 out of 2 forms covered"> 020 (def ^:dynamic *reify-refs* </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 021 "If `true`, references to objects in fields will be reified and validated. </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 022 If `false`, they won't, but an `:info` level fault report will be generated. </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 023 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 024 There are several things in the spec which, in a document, may correctly be </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 025 either </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 026 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 027 1. a fully fleshed out object, or </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 028 2. a URI pointing to such an object. </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 029 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 030 Obviously to fully validate a document we ought to reify all the refs and </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 031 check that they are themselves valid, but </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 032 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 033 a. in some of the published test documents the URIs do not reference a </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 034 valid document; </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 035 b. there will be performance costs to reifying all the refs; </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 036 c. in perverse cases, reifying refs might result in runaway recursion. </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 037 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 038 TODO: I think that in production this should default to `true`." </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 039 false) </span><br/> <span class="blank" title="0 out of 0 forms covered"> 040 </span><br/> <span class="covered" title="2 out of 2 forms covered"> 041 (def ^:dynamic *reject-severity* </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 042 "The severity at which the binary validator will return `false`. </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 043 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 044 In practice documents seen in the wild do not typically appear to be </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 045 fully valid, and this does not matter. This allows the sensitivity of </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 046 the binary validator (`dog-and-duck.quack.quack`) to be tuned. It's in </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 047 this (`dog-and-duck.quack.picky`) namespace, not that one, because this </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 048 namespace is where concerns about severity are handled." </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 049 :must) </span><br/> </body> </html>