Desiderata
+Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
Desiderata
Social media features which users want which [Mastodon](https://en.wikipedia.org/wiki/Mastodon_(social_network)) does not provide, or provides poorly.
- User-specified inbox-ordering algorithms; diff --git a/docs/codox/Using_ActivityPub.html b/docs/codox/Using_ActivityPub.html index 5cc36d6..2d7035c 100644 --- a/docs/codox/Using_ActivityPub.html +++ b/docs/codox/Using_ActivityPub.html @@ -1,6 +1,6 @@ -
:info
not actually a fault, but an issue noted during validation;
diff --git a/docs/codox/dog-and-duck.quack.picky.control-variables.html b/docs/codox/dog-and-duck.quack.picky.control-variables.html
index 9e4a6d2..93114ad 100644
--- a/docs/codox/dog-and-duck.quack.picky.control-variables.html
+++ b/docs/codox/dog-and-duck.quack.picky.control-variables.html
@@ -1,6 +1,6 @@
-- a fully fleshed out object, or diff --git a/docs/codox/dog-and-duck.quack.picky.fault-messages.html b/docs/codox/dog-and-duck.quack.picky.fault-messages.html index 22afc52..3a593cf 100644 --- a/docs/codox/dog-and-duck.quack.picky.fault-messages.html +++ b/docs/codox/dog-and-duck.quack.picky.fault-messages.html @@ -1,3 +1,3 @@ -
nil
if no faults were found;
@@ -15,16 +15,10 @@
:narrative
whose value shall be a natural language description of the fault type.- an object of
expected-type
;
- - a URI referencing an object of
expected-type
; or
- - a link object referencing an object of
expected-type
- - an object of
expected-type
;
+ - a URI referencing an object of
expected-type
; or
+ - a link object referencing an object of
expected-type
+ - accept-required-properties
- activity-faults
- activity-required-properties
- activity-type-faults
- actor-faults
- base-activity-required-properties
- coll-object-reference-or-fault
- intransitive-activity-required-properties
- link-faults
- object-faults
- object-reference-or-faults
- persistent-object-faults
- string-or-fault
- uri-or-fault
- actor-type?
- any-or-faults
- coll-object-reference-or-fault
- concat-non-empty
- cond-make-fault-object
- context?
- filter-severity
- has-activity-type?
- has-actor-type?
- has-context?
- has-type-or-fault
- has-type?
- link-or-uri?
- make-fault-object
- nil-if-empty
- object-faults
- object-or-uri?
- object-reference-or-faults
- string-or-fault
- truthy?
- verb-type?
Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
Using ActivityPub
+Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
Using ActivityPub
Introduction
I do not know what I am doing; I am learning, and playing. Nothing in this document should be treated as good advice; it simply relates to the current state of my knowledge.
What happens when you post a new item to an ActivityPub server
diff --git a/docs/codox/Validation_Faults.html b/docs/codox/Validation_Faults.html index 6fe1b95..f6ae4bd 100644 --- a/docs/codox/Validation_Faults.html +++ b/docs/codox/Validation_Faults.html @@ -1,6 +1,6 @@ -Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
Validation Faults in ActivityPub documents
+Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
Validation Faults in ActivityPub documents
Motivation
This document is intended to provide an extension vocabulary for ActivityStreams documents, which provides vocabulary for categorising and describing faults in ActivityPub documents.
The motivation is to be able to serialise a validation report on an ActivityPub document as an ActivityStreams document.
diff --git a/docs/codox/dog-and-duck.quack.picky.collections.html b/docs/codox/dog-and-duck.quack.picky.collections.html index 8beb00f..9b3f142 100644 --- a/docs/codox/dog-and-duck.quack.picky.collections.html +++ b/docs/codox/dog-and-duck.quack.picky.collections.html @@ -1,3 +1,3 @@ -Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.picky.collections
TODO: write docs
paged-collection-faults
(paged-collection-faults x type)
Return a list of faults found in x
considered as a paged collection object of this sub-type
, or nil
if none are found.
simple-collection-faults
(simple-collection-faults x type)
Return a list of faults found in x
considered as a non-paged collection object of this sub-type
, or nil
if none are found.
Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.picky.collections
TODO: write docs
paged-collection-faults
(paged-collection-faults x type)
Return a list of faults found in x
considered as a paged collection object of this sub-type
, or nil
if none are found.
simple-collection-faults
(simple-collection-faults x type)
Return a list of faults found in x
considered as a non-paged collection object of this sub-type
, or nil
if none are found.
Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.picky.constants
Constants supporting the picky validator.
activitystreams-context-uri
The URI of the context of an ActivityStreams object is expected to be this literal string.
actor-types
The set of types we will accept as actors.
+Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.picky.constants
Constants supporting the picky validator.
activitystreams-context-uri
The URI of the context of an ActivityStreams object is expected to be this literal string.
actor-types
The set of types we will accept as actors.
There’s an explicit set of allowed actor types.
context-key
The Clojure reader barfs on :@context
, although it is in principle a valid keyword. So we’ll make it once, here, to make the code more performant and easier to read.
severity
Severity of faults found, as follows:
Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.picky.control-variables
Control variables for the picky validator.
*reify-refs*
dynamic
If true
, references to objects in fields will be reified and validated. If false
, they won’t, but an :info
level fault report will be generated.
Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.picky.control-variables
Control variables for the picky validator.
*reify-refs*
dynamic
If true
, references to objects in fields will be reified and validated. If false
, they won’t, but an :info
level fault report will be generated.
There are several things in the spec which, in a document, may correctly be either
Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.picky.fault-messages
Narrative values for fault reports of specific types, used by the picky validator.
Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.picky.fault-messages
Narrative values for fault reports of specific types, used by the picky validator.
Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.picky
Fault-finder for ActivityPub documents.
+Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.picky
Fault-finder for ActivityPub documents.
Generally, each -faults
function will return:
Note that the reason for the :fault
property is to be able to have a well known place, linked to from the @context URL, which allows narratives for each fault type to be served in as many natural languages as possible.
The idea further is that it should ultimately be possible to serialise a fault report as a document which in its own right conforms to the ActivityStreams spec.
accept-required-properties
As base-activity-required-properties, except that the type of the object is restricted.
activity-required-properties
Properties activities should have, keyed by activity type. Values are maps of the format of base-activity-required-properties
, q.v.
activity-type-faults
(activity-type-faults x)
(activity-type-faults x type)
Return a list of faults found in the activity x
; if type
is also specified, it should be a string naming a specific activity type for which checks should be performed.
Some specific activity types have specific requirements which are not requirements.
actor-faults
(actor-faults x)
Return a list of faults found in actor x
, or nil
if none are.
base-activity-required-properties
Properties most activities should have. Values are validating functions, each.
-See https://www.w3.org/TR/activitystreams-vocabulary/#dfn-activity
coll-object-reference-or-fault
(coll-object-reference-or-fault value expected-type severity token)
As object-reference-or-fault, except value
argument may also be a list of objects and/or object references.
intransitive-activity-required-properties
Properties intransitive activities should have.
-See https://www.w3.org/TR/activitystreams-vocabulary/#dfn-intransitiveactivity
link-faults
(link-faults x)
A link object is required to have an href
property. It may have all of rel
| mediaType
| name
| hreflang
| height
| width
| preview
but I think they’re all optional.
object-faults
(object-faults x)
(object-faults x expected-type)
Return a list of faults found in object x
, or nil
if none are.
If expected-type
is also passed, verify that x
has expected-type
. expected-type
may be passed as a string or as a set of strings.
object-reference-or-faults
(object-reference-or-faults value expected-type severity token)
If this value
is either
-
-
and no faults are returned from validating the linked object, then return nil
; else return a sequence comprising a fault object with this severity
and token
, prepended to the faults returned.
As with has-type-or-fault
(q.v.), expected-type
may be passed as a string or as a set of strings.
NOTE THAT if *reify-refs*
is false
, referenced objects will not actually be checked.
persistent-object-faults
(persistent-object-faults x)
(persistent-object-faults x types severity token)
Return a list of faults found in persistent object x
, or nil
if none are.
string-or-fault
(string-or-fault value severity token)
(string-or-fault value severity token pattern)
If this value
is not a string, return a fault object with this severity
and token
, else nil
. If pattern
is also passed, it is expected to be a Regex, and the fault object will be returned unless value
matches the pattern
.
uri-or-fault
(uri-or-fault u severity if-missing-token)
(uri-or-fault u severity if-missing-token if-invalid-token)
If u
is not a valid URI, return a fault object with this severity
and if-invalid-token
. If it’s nil
, return a fault object with this severity
and if-missing-token
. Otherwise return nil.
The idea further is that it should ultimately be possible to serialise a fault report as a document which in its own right conforms to the ActivityStreams spec.
accept-required-properties
As base-activity-required-properties, except that the type of the object is restricted.
activity-required-properties
Properties activities should have, keyed by activity type. Values are maps of the format of base-activity-required-properties
, q.v.
activity-type-faults
(activity-type-faults x)
(activity-type-faults x type)
Return a list of faults found in the activity x
; if type
is also specified, it should be a string naming a specific activity type for which checks should be performed.
Some specific activity types have specific requirements which are not requirements.
actor-faults
(actor-faults x)
Return a list of faults found in actor x
, or nil
if none are.
base-activity-required-properties
Properties most activities should have. Values are validating functions, each.
+See https://www.w3.org/TR/activitystreams-vocabulary/#dfn-activity
collection-faults
(collection-faults x)
(collection-faults x type)
Return a list of faults found in the collection x
; if type
is also specified, it should be a string naming a specific collection type for which checks should be performed.
Every collection should(?) have a totalItems
field (an integer).
Beyond that, collections are either ‘just collections’ (in which case they should have an items
field (a sequence)), or else they’re paged collections, in which case they must(?) have a first
field which is a collection page or a URI pointing to a collection page, and should have a last
field which is similar.
The pages of collections should be collection pages; the pages of ordered collections should be ordered collection pages.
intransitive-activity-required-properties
Properties intransitive activities should have.
+See https://www.w3.org/TR/activitystreams-vocabulary/#dfn-intransitiveactivity
link-faults
(link-faults x)
A link object is required to have an href
property. It may have all of rel
| mediaType
| name
| hreflang
| height
| width
| preview
but I think they’re all optional.
persistent-object-faults
(persistent-object-faults x)
(persistent-object-faults x types severity token)
Return a list of faults found in persistent object x
, or nil
if none are.
uri-or-fault
(uri-or-fault u severity if-missing-token)
(uri-or-fault u severity if-missing-token if-invalid-token)
If u
is not a valid URI, return a fault object with this severity
and if-invalid-token
. If it’s nil
, return a fault object with this severity
and if-missing-token
. Otherwise return nil.
Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.picky.required-properties
TODO: write docs
Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.picky.required-properties
TODO: write docs
Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.picky.utils
Utility functions supporting the picky validator
concat-non-empty
(concat-non-empty & lists)
Quick function to replace the pattern (nil-if-empty (remove nil? (concat …))) which I’m using a lot!
context?
(context? x)
Returns true
iff x
quacks like an ActivityStreams context, else false.
A context is either 1. the URI (actually an IRI) activitystreams-context-uri
, or 2. a collection comprising that URI and a map.
filter-severity
(filter-severity reports severity)
Return a list of reports taken from these reports
where the severity of the report is greater than this or equal to this severity
.
has-activity-type?
(has-activity-type? x)
Return true
if the object x
has a type which is an activity type, else false
.
has-actor-type?
(has-actor-type? x)
Return true
if the object x
has a type which is an actor type, else false
.
has-context?
macro
(has-context? x)
True if x
is an ActivityStreams object with a valid context, else false
.
has-type-or-fault
(has-type-or-fault x acceptable severity token)
If object x
has a :type
value which is acceptable
, return nil
; else return a fault object with this severity
and token
.
acceptable
may be passed as either nil, a string, or a set of strings. If acceptable
is nil
, no type specific tests will be performed.
has-type?
(has-type? x type)
Return true
if object x
has type type
, else false
.
The values of type
fields of ActivityStreams objects may be lists; they are considered to have a type if the type token is a member of the list.
make-fault-object
(make-fault-object severity fault)
Return a fault object with these severity
, fault
and narrative
values.
An ActivityPub object MUST have a globally unique ID. Whether this is meaningful depends on whether we persist fault report objects and serve them, which at present I have no plans to do.
verb-type?
(verb-type? x)
true
if x
, a string, represents a recognised ActivityStreams activity type.
Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.picky.utils
Utility functions supporting the picky validator
any-or-faults
(any-or-faults options severity-if-none token)
Return nil
if validating one of these options returns nil
; otherwise return a list comprising a fault report object with this severity-if-none
and this token followed by all the fault reports from validating each option.
There are several places - but especially in validating collections - where there are several different valid configurations, but few or no properties are always required.
coll-object-reference-or-fault
(coll-object-reference-or-fault value expected-type severity token)
As object-reference-or-fault, except value
argument may also be a list of objects and/or object references.
concat-non-empty
(concat-non-empty & lists)
Quick function to replace the pattern (nil-if-empty (remove nil? (concat …))) which I’m using a lot!
cond-make-fault-object
macro
(cond-make-fault-object v severity token)
If v
is false
or nil
, return a fault object with this severity
and token
, else return nil.
context?
(context? x)
Returns true
iff x
quacks like an ActivityStreams context, else false.
A context is either 1. the URI (actually an IRI) activitystreams-context-uri
, or 2. a collection comprising that URI and a map.
filter-severity
(filter-severity reports severity)
Return a list of reports taken from these reports
where the severity of the report is greater than this or equal to this severity
.
has-activity-type?
(has-activity-type? x)
Return true
if the object x
has a type which is an activity type, else false
.
has-actor-type?
(has-actor-type? x)
Return true
if the object x
has a type which is an actor type, else false
.
has-context?
macro
(has-context? x)
True if x
is an ActivityStreams object with a valid context, else false
.
has-type-or-fault
(has-type-or-fault x acceptable severity token)
If object x
has a :type
value which is acceptable
, return nil
; else return a fault object with this severity
and token
.
acceptable
may be passed as either nil, a string, or a set of strings. If acceptable
is nil
, no type specific tests will be performed.
has-type?
(has-type? x type)
Return true
if object x
has type type
, else false
.
The values of type
fields of ActivityStreams objects may be lists; they are considered to have a type if the type token is a member of the list.
link-or-uri?
macro
(link-or-uri? x)
Very basic check that x
is either a link object or a URI.
make-fault-object
(make-fault-object severity fault)
Return a fault object with these severity
, fault
and narrative
values.
An ActivityPub object MUST have a globally unique ID. Whether this is meaningful depends on whether we persist fault report objects and serve them, which at present I have no plans to do.
object-faults
(object-faults x)
(object-faults x expected-type)
Return a list of faults found in object x
, or nil
if none are.
If expected-type
is also passed, verify that x
has expected-type
. expected-type
may be passed as a string or as a set of strings. Detailed verification of the particular features of types is not done here.
object-reference-or-faults
(object-reference-or-faults value expected-type severity token)
If this value
is either
-
+
and no faults are returned from validating the linked object, then return nil
; else return a sequence comprising a fault object with this severity
and token
, prepended to the faults returned.
As with has-type-or-fault
(q.v.), expected-type
may be passed as a string, as a set of strings, or nil
(indicating the type of the referenced object should not be checked).
NOTE THAT if *reify-refs*
is false
, referenced objects will not actually be checked.
string-or-fault
(string-or-fault value severity token)
(string-or-fault value severity token pattern)
If this value
is not a string, return a fault object with this severity
and token
, else nil
. If pattern
is also passed, it is expected to be a Regex, and the fault object will be returned unless value
matches the pattern
.
truthy?
(truthy? x)
Return true
if x
is truthy, else false
. There must be some more idiomatic way to do this?
verb-type?
(verb-type? x)
true
if x
, a string, represents a recognised ActivityStreams activity type.
Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.quack
Validator for ActivityPub objects: if it walks like a duck, and it quacks like a duck…
+Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.quack.quack
Validator for ActivityPub objects: if it walks like a duck, and it quacks like a duck…
**NOTE THAT the ActivityPub spec says
Servers SHOULD validate the content they receive to avoid content spoofing attacks
diff --git a/docs/codox/dog-and-duck.scratch.core.html b/docs/codox/dog-and-duck.scratch.core.html index a2efd05..cafbe36 100644 --- a/docs/codox/dog-and-duck.scratch.core.html +++ b/docs/codox/dog-and-duck.scratch.core.html @@ -1,3 +1,3 @@ -dog-and-duck.scratch.core documentation \ No newline at end of file +Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.scratch.core documentation \ No newline at end of file diff --git a/docs/codox/dog-and-duck.scratch.parser.html b/docs/codox/dog-and-duck.scratch.parser.html index 45adf0f..1d60fba 100644 --- a/docs/codox/dog-and-duck.scratch.parser.html +++ b/docs/codox/dog-and-duck.scratch.parser.html @@ -1,3 +1,3 @@ -Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.scratch.parser documentation Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
\ No newline at end of file +dog-and-duck.scratch.parser
TODO: write docs
clean
(clean json)
Take this
json
input, and return a sequence of ActivityPub objects represented by it.dog-and-duck.scratch.parser documentation Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
\ No newline at end of file diff --git a/docs/codox/dog-and-duck.scratch.scratch.html b/docs/codox/dog-and-duck.scratch.scratch.html index 4f6f75d..45ff4af 100644 --- a/docs/codox/dog-and-duck.scratch.scratch.html +++ b/docs/codox/dog-and-duck.scratch.scratch.html @@ -1,3 +1,3 @@ -dog-and-duck.scratch.parser
TODO: write docs
clean
(clean json)
Take this
json
input, and return a sequence of ActivityPub objects represented by it.dog-and-duck.scratch.scratch documentation Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
\ No newline at end of file +dog-and-duck.scratch.scratch
Scratchpad where I try to understand how to do this stuff.
dog-and-duck.scratch.scratch documentation Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
\ No newline at end of file diff --git a/docs/codox/dog-and-duck.utils.process.html b/docs/codox/dog-and-duck.utils.process.html index c8b747f..4e8ae03 100644 --- a/docs/codox/dog-and-duck.utils.process.html +++ b/docs/codox/dog-and-duck.utils.process.html @@ -1,5 +1,5 @@ -dog-and-duck.scratch.scratch
Scratchpad where I try to understand how to do this stuff.
dog-and-duck.utils.process documentation Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
dog-and-duck.utils.process
TODO: write docs
get-hostname
return the hostname of the current host.
+dog-and-duck.utils.process documentation Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
\ No newline at end of file diff --git a/docs/codox/index.html b/docs/codox/index.html index 4b802af..5c9c887 100644 --- a/docs/codox/index.html +++ b/docs/codox/index.html @@ -1,3 +1,3 @@ -dog-and-duck.utils.process
TODO: write docs
get-hostname
return the hostname of the current host.
Java’s methods for getting the hostname are quite startlingly slow, we do not want todo this repeatedly!
get-pid
Get the process id of the current process.
OK, this is hacky as fuck, but I hope it works. The problem is that the way to get the process id has changed several times during the history of Java development, and the code for one version of Java won’t even compile in a different version.
Dog-and-duck 0.1.0-SNAPSHOT Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
\ No newline at end of file +Dog-and-duck 0.1.0-SNAPSHOT
Released under the GPL-2.0-or-later
A playground for hacking ActivityPub stuff.
Installation
To install, add the following dependency to your project or build file:
[dog-and-duck "0.1.0-SNAPSHOT"]Topics
Namespaces
dog-and-duck.quack.picky
Fault-finder for ActivityPub documents.
Public variables and functions:
dog-and-duck.quack.picky.constants
Constants supporting the picky validator.
Public variables and functions:
dog-and-duck.quack.picky.control-variables
Control variables for the picky validator.
Public variables and functions:
dog-and-duck.quack.picky.fault-messages
Narrative values for fault reports of specific types, used by the picky validator.
Public variables and functions:
dog-and-duck.quack.picky.utils
Utility functions supporting the picky validator
Public variables and functions:
dog-and-duck.quack.quack
Validator for ActivityPub objects: if it walks like a duck, and it quacks like a duck…
Public variables and functions:
dog-and-duck.scratch.scratch
Scratchpad where I try to understand how to do this stuff.
Public variables and functions:
Dog-and-duck 0.1.0-SNAPSHOT Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
\ No newline at end of file diff --git a/docs/codox/intro.html b/docs/codox/intro.html index 36e87f4..b19fbd1 100644 --- a/docs/codox/intro.html +++ b/docs/codox/intro.html @@ -1,6 +1,6 @@ -Dog-and-duck 0.1.0-SNAPSHOT
Released under the GPL-2.0-or-later
A playground for hacking ActivityPub stuff.
Installation
To install, add the following dependency to your project or build file:
[dog-and-duck "0.1.0-SNAPSHOT"]Topics
Namespaces
dog-and-duck.quack.picky
Fault-finder for ActivityPub documents.
dog-and-duck.quack.picky.constants
Constants supporting the picky validator.
Public variables and functions:
dog-and-duck.quack.picky.control-variables
Control variables for the picky validator.
Public variables and functions:
dog-and-duck.quack.picky.fault-messages
Narrative values for fault reports of specific types, used by the picky validator.
Public variables and functions:
dog-and-duck.quack.picky.utils
Utility functions supporting the picky validator
Public variables and functions:
dog-and-duck.quack.quack
Validator for ActivityPub objects: if it walks like a duck, and it quacks like a duck…
Public variables and functions:
dog-and-duck.scratch.scratch
Scratchpad where I try to understand how to do this stuff.
Public variables and functions:
Introduction Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
Introduction
+Introduction Generated by Codox
Dog-and-duck 0.1.0-SNAPSHOT
Introduction
The Old Dog and Duck
A Clojure library designed to implement the ActivityPub protocol, obviously.
diff --git a/src/dog_and_duck/quack/picky/collections.clj b/src/dog_and_duck/quack/picky/collections.clj index d87df6f..3159e42 100644 --- a/src/dog_and_duck/quack/picky/collections.clj +++ b/src/dog_and_duck/quack/picky/collections.clj @@ -45,6 +45,8 @@ (map #(object-reference-or-faults % nil :must :not-object-reference) (:items x))))) (defn collection-page-faults + "Return a list of faults found in `x` considered as a collection page + object of this sub-`type`, or `nil` if none are found." [x type] (concat-non-empty (simple-collection-faults x type) diff --git a/src/dog_and_duck/scratch/scratch.clj b/src/dog_and_duck/scratch/scratch.clj index f1795ed..305bceb 100644 --- a/src/dog_and_duck/scratch/scratch.clj +++ b/src/dog_and_duck/scratch/scratch.clj @@ -44,11 +44,11 @@ ;; ;;; examine what you got back! (:inbox account) -(-> account - :inbox - slurp - json/read-str - pprint) ;; => 80 +;; (-> account +;; :inbox +;; slurp +;; json/read-str +;; pprint) ;; => 80 ;; (def rsa (pgp-gen/rsa-keypair-generator 2048)) ;; (def kp (pgp-gen/generate-keypair rsa :rsa-general))