<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="../../coverage.css"/> <title> dog_and_duck/scratch/parser.clj </title> </head> <body> <span class="covered" title="1 out of 1 forms covered"> 001 (ns dog-and-duck.scratch.parser </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 002 (:require ;; [clojure.java.io :refer [file]] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 003 ;; [clojure.string :refer [ends-with?]] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 004 [clojure.walk :refer [keywordize-keys]] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 005 [clojure.data.json :as json] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 006 [dog-and-duck.quack.quack :as q])) </span><br/> <span class="blank" title="0 out of 0 forms covered"> 007 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 008 ;;; Copyright (C) Simon Brooke, 2022 </span><br/> <span class="blank" title="0 out of 0 forms covered"> 009 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 010 ;;; This program is free software; you can redistribute it and/or </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 011 ;;; modify it under the terms of the GNU General Public License </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 012 ;;; as published by the Free Software Foundation; either version 2 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 013 ;;; of the License, or (at your option) any later version. </span><br/> <span class="blank" title="0 out of 0 forms covered"> 014 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 015 ;;; 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"> 016 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 017 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 018 ;;; GNU General Public License for more details. </span><br/> <span class="blank" title="0 out of 0 forms covered"> 019 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 020 ;;; 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"> 021 ;;; along with this program; if not, write to the Free Software </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 022 ;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. </span><br/> <span class="blank" title="0 out of 0 forms covered"> 023 </span><br/> <span class="covered" title="1 out of 1 forms covered"> 024 (defn clean </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 025 "Take this `json` input, and return a sequence of ActivityPub objects </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 026 represented by it." </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 027 [json] </span><br/> <span class="covered" title="4 out of 4 forms covered"> 028 (let [feed (json/read-str json)] </span><br/> <span class="covered" title="2 out of 2 forms covered"> 029 (map </span><br/> <span class="covered" title="1 out of 1 forms covered"> 030 keywordize-keys </span><br/> <span class="covered" title="2 out of 2 forms covered"> 031 (filter </span><br/> <span class="covered" title="1 out of 1 forms covered"> 032 q/object? </span><br/> <span class="partial" title="9 out of 11 forms covered"> 033 (cond (map? feed) (list (keywordize-keys feed)) </span><br/> <span class="not-covered" title="0 out of 7 forms covered"> 034 (coll? feed) (map keywordize-keys feed)))))) </span><br/> <span class="blank" title="0 out of 0 forms covered"> 035 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 036 ;; (clean (slurp "resources/activitystreams-test-documents/core-ex1-jsonld.json")) </span><br/> <span class="blank" title="0 out of 0 forms covered"> 037 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 038 ;; (map </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 039 ;; #(when </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 040 ;; (ends-with? (str %) ".json") </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 041 ;; (let [objects (clean (slurp %))] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 042 ;; (list (str %) </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 043 ;; (count objects) </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 044 ;; (map :type objects)))) </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 045 ;; (file-seq (file "resources/activitystreams-test-documents"))) </span><br/> <span class="blank" title="0 out of 0 forms covered"> 046 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 047 ;; (-> "resources/activitystreams-test-documents/simple0020.json" slurp clean first :actor) </span><br/> </body> </html>