Skip to content

Instantly share code, notes, and snippets.

@jaen
Created February 11, 2016 23:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jaen/68c6fe78c83d5d58721f to your computer and use it in GitHub Desktop.
Save jaen/68c6fe78c83d5d58721f to your computer and use it in GitHub Desktop.
\documentclass[12pt]{book}
\usepackage{minted}
\usepackage{mdframed}
\usepackage{setspace}
%\usepackage{caption}
\RequirePackage[labelfont={sf,bf,small},textfont={sf,small},justification=RaggedRight,margin=0pt, figurewithin=section, tablewithin=section]{caption}
\onehalfspacing
\definecolor{LightGray}{RGB}{242,242,242}
\DeclareCaptionType{code}[Code listing][Table of Code Listings]
\newmintedfile{clojure}{framesep=2mm,
baselinestretch=1.2,
numbersep=16pt,
fontsize=\footnotesize,
linenos,
breaklines,
breakanywhere}
\newcommand{\clojurecode}[4]{
\label{code:#2}
\begin{mdframed}[backgroundcolor=LightGray,hidealllines=true,leftmargin=10mm]
\clojurefile{#1}
\end{mdframed}
\begin{mdframed}[hidealllines=true]
\captionof{code}[#3]
{#4}
\end{mdframed}
}
\newcommand{\clojurecodesamepage}[4]{
\label{code:#2}
\begin{samepage}
\begin{mdframed}[backgroundcolor=LightGray,hidealllines=true,leftmargin=10mm]
\clojurefile{#1}
\end{mdframed}
\captionof{code}[#3]
{#4}
\end{samepage}
}
\begin{document}
%short
\chapter{Normal}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ultrices ex egestas elit congue ultricies. Etiam tincidunt rutrum nisl, eget hendrerit magna facilisis porttitor. Duis aliquet, dui id placerat ultrices, mi nisl sagittis ex, eu commodo tellus libero in turpis. Etiam ut mollis metus. Praesent fringilla, mi nec mattis accumsan, magna libero semper tellus, at mollis tortor purus id arcu. Nullam vel suscipit massa, et suscipit mauris. Ut nulla sem, sollicitudin ac iaculis non, fermentum nec mauris. Curabitur dictum purus dapibus est condimentum rhoncus. Maecenas nec iaculis metus. Nunc luctus leo ac sapien mollis, a vehicula odio tempus. Aenean nulla dui, molestie quis quam eu, porttitor accumsan sapien. In sit amet lectus efficitur eros finibus accumsan ut quis risus. Aenean quis nunc sit amet lorem lobortis tincidunt. Nam eget ex dolor. Duis sit amet ex porttitor, ultrices lacus vehicula, consectetur erat.
\clojurecode{clojure-one.clj}{first-example}
{This is an example caption name}
{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ultrices ex egestas elit congue ultricies. Etiam tincidunt rutrum nisl, eget hendrerit magna facilisis porttitor. Duis aliquet, dui id placerat ultrices, mi nisl sagittis ex, eu commodo tellus libero in turpis. Etiam ut mollis metus. Praesent fringilla, mi nec mattis accumsan, magna libero semper tellus, at mollis tortor purus id arcu. Nullam vel suscipit massa, et suscipit mauris. Ut nulla sem, sollicitudin ac iaculis non, fermentum nec mauris. Curabitur dictum purus dapibus est condimentum rhoncus. Maecenas nec iaculis metus. Nunc luctus leo ac sapien mollis, a vehicula odio tempus. Aenean nulla dui, molestie quis quam eu, porttitor accumsan sapien. In sit amet lectus efficitur eros finibus accumsan ut quis risus. Aenean quis nunc sit amet lorem lobortis tincidunt. Nam eget ex dolor. Duis sit amet ex porttitor, ultrices lacus vehicula, consectetur erat.}
\chapter{With samepage}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ultrices ex egestas elit congue ultricies. Etiam tincidunt rutrum nisl, eget hendrerit magna facilisis porttitor. Duis aliquet, dui id placerat ultrices, mi nisl sagittis ex, eu commodo tellus libero in turpis. Etiam ut mollis metus. Praesent fringilla, mi nec mattis accumsan, magna libero semper tellus, at mollis tortor purus id arcu. Nullam vel suscipit massa, et suscipit mauris. Ut nulla sem, sollicitudin ac iaculis non, fermentum nec mauris. Curabitur dictum purus dapibus est condimentum rhoncus. Maecenas nec iaculis metus. Nunc luctus leo ac sapien mollis, a vehicula odio tempus. Aenean nulla dui, molestie quis quam eu, porttitor accumsan sapien. In sit amet lectus efficitur eros finibus accumsan ut quis risus. Aenean quis nunc sit amet lorem lobortis tincidunt. Nam eget ex dolor. Duis sit amet ex porttitor, ultrices lacus vehicula, consectetur erat.
\clojurecodesamepage{clojure-one.clj}{first-example}
{This is an example caption name}
{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ultrices ex egestas elit congue ultricies. Etiam tincidunt rutrum nisl, eget hendrerit magna facilisis porttitor. Duis aliquet, dui id placerat ultrices, mi nisl sagittis ex, eu commodo tellus libero in turpis. Etiam ut mollis metus. Praesent fringilla, mi nec mattis accumsan, magna libero semper tellus, at mollis tortor purus id arcu. Nullam vel suscipit massa, et suscipit mauris. Ut nulla sem, sollicitudin ac iaculis non, fermentum nec mauris. Curabitur dictum purus dapibus est condimentum rhoncus. Maecenas nec iaculis metus. Nunc luctus leo ac sapien mollis, a vehicula odio tempus. Aenean nulla dui, molestie quis quam eu, porttitor accumsan sapien. In sit amet lectus efficitur eros finibus accumsan ut quis risus. Aenean quis nunc sit amet lorem lobortis tincidunt. Nam eget ex dolor. Duis sit amet ex porttitor, ultrices lacus vehicula, consectetur erat.}
% longer
\chapter{Normal (longer)}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ultrices ex egestas elit congue ultricies. Etiam tincidunt rutrum nisl, eget hendrerit magna facilisis porttitor. Duis aliquet, dui id placerat ultrices, mi nisl sagittis ex, eu commodo tellus libero in turpis. Etiam ut mollis metus. Praesent fringilla, mi nec mattis accumsan, magna libero semper tellus, at mollis tortor purus id arcu. Nullam vel suscipit massa, et suscipit mauris. Ut nulla sem, sollicitudin ac iaculis non, fermentum nec mauris. Curabitur dictum purus dapibus est condimentum rhoncus. Maecenas nec iaculis metus. Nunc luctus leo ac sapien mollis, a vehicula odio tempus. Aenean nulla dui, molestie quis quam eu, porttitor accumsan sapien. In sit amet lectus efficitur eros finibus accumsan ut quis risus. Aenean quis nunc sit amet lorem lobortis tincidunt. Nam eget ex dolor. Duis sit amet ex porttitor, ultrices lacus vehicula, consectetur erat.
\clojurecode{clojure-two.clj}{first-example}
{This is an example caption name}
{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ultrices ex egestas elit congue ultricies. Etiam tincidunt rutrum nisl, eget hendrerit magna facilisis porttitor. Duis aliquet, dui id placerat ultrices, mi nisl sagittis ex, eu commodo tellus libero in turpis. Etiam ut mollis metus. Praesent fringilla, mi nec mattis accumsan, magna libero semper tellus, at mollis tortor purus id arcu. Nullam vel suscipit massa, et suscipit mauris. Ut nulla sem, sollicitudin ac iaculis non, fermentum nec mauris. Curabitur dictum purus dapibus est condimentum rhoncus. Maecenas nec iaculis metus. Nunc luctus leo ac sapien mollis, a vehicula odio tempus. Aenean nulla dui, molestie quis quam eu, porttitor accumsan sapien. In sit amet lectus efficitur eros finibus accumsan ut quis risus. Aenean quis nunc sit amet lorem lobortis tincidunt. Nam eget ex dolor. Duis sit amet ex porttitor, ultrices lacus vehicula, consectetur erat.}
\chapter{With samepage (longer)}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ultrices ex egestas elit congue ultricies. Etiam tincidunt rutrum nisl, eget hendrerit magna facilisis porttitor. Duis aliquet, dui id placerat ultrices, mi nisl sagittis ex, eu commodo tellus libero in turpis. Etiam ut mollis metus. Praesent fringilla, mi nec mattis accumsan, magna libero semper tellus, at mollis tortor purus id arcu. Nullam vel suscipit massa, et suscipit mauris. Ut nulla sem, sollicitudin ac iaculis non, fermentum nec mauris. Curabitur dictum purus dapibus est condimentum rhoncus. Maecenas nec iaculis metus. Nunc luctus leo ac sapien mollis, a vehicula odio tempus. Aenean nulla dui, molestie quis quam eu, porttitor accumsan sapien. In sit amet lectus efficitur eros finibus accumsan ut quis risus. Aenean quis nunc sit amet lorem lobortis tincidunt. Nam eget ex dolor. Duis sit amet ex porttitor, ultrices lacus vehicula, consectetur erat.
\clojurecodesamepage{clojure-two.clj}{first-example}
{This is an example caption name}
{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ultrices ex egestas elit congue ultricies. Etiam tincidunt rutrum nisl, eget hendrerit magna facilisis porttitor. Duis aliquet, dui id placerat ultrices, mi nisl sagittis ex, eu commodo tellus libero in turpis. Etiam ut mollis metus. Praesent fringilla, mi nec mattis accumsan, magna libero semper tellus, at mollis tortor purus id arcu. Nullam vel suscipit massa, et suscipit mauris. Ut nulla sem, sollicitudin ac iaculis non, fermentum nec mauris. Curabitur dictum purus dapibus est condimentum rhoncus. Maecenas nec iaculis metus. Nunc luctus leo ac sapien mollis, a vehicula odio tempus. Aenean nulla dui, molestie quis quam eu, porttitor accumsan sapien. In sit amet lectus efficitur eros finibus accumsan ut quis risus. Aenean quis nunc sit amet lorem lobortis tincidunt. Nam eget ex dolor. Duis sit amet ex porttitor, ultrices lacus vehicula, consectetur erat.}
% longest
\chapter{Normal (longest)}
\clojurecode{clojure-three.clj}{first-example}
{This is an example caption name}
{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ultrices ex egestas elit congue ultricies. Etiam tincidunt rutrum nisl, eget hendrerit magna facilisis porttitor. Duis aliquet, dui id placerat ultrices, mi nisl sagittis ex, eu commodo tellus libero in turpis. Etiam ut mollis metus. Praesent fringilla, mi nec mattis accumsan, magna libero semper tellus, at mollis tortor purus id arcu. Nullam vel suscipit massa, et suscipit mauris. Ut nulla sem, sollicitudin ac iaculis non, fermentum nec mauris. Curabitur dictum purus dapibus est condimentum rhoncus. Maecenas nec iaculis metus. Nunc luctus leo ac sapien mollis, a vehicula odio tempus. Aenean nulla dui, molestie quis quam eu, porttitor accumsan sapien. In sit amet lectus efficitur eros finibus accumsan ut quis risus. Aenean quis nunc sit amet lorem lobortis tincidunt. Nam eget ex dolor. Duis sit amet ex porttitor, ultrices lacus vehicula, consectetur erat.}
\chapter{With samepage (longest)}
% \clojurecodesamepage{clojure-three.clj}{first-example}
% {This is an example caption name}
% {Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ultrices ex egestas elit congue ultricies. Etiam tincidunt rutrum nisl, eget hendrerit magna facilisis porttitor. Duis aliquet, dui id placerat ultrices, mi nisl sagittis ex, eu commodo tellus libero in turpis. Etiam ut mollis metus. Praesent fringilla, mi nec mattis accumsan, magna libero semper tellus, at mollis tortor purus id arcu. Nullam vel suscipit massa, et suscipit mauris. Ut nulla sem, sollicitudin ac iaculis non, fermentum nec mauris. Curabitur dictum purus dapibus est condimentum rhoncus. Maecenas nec iaculis metus. Nunc luctus leo ac sapien mollis, a vehicula odio tempus. Aenean nulla dui, molestie quis quam eu, porttitor accumsan sapien. In sit amet lectus efficitur eros finibus accumsan ut quis risus. Aenean quis nunc sit amet lorem lobortis tincidunt. Nam eget ex dolor. Duis sit amet ex porttitor, ultrices lacus vehicula, consectetur erat.}
\end{document}
(ns thesis.backend.components.event-store)
(defn- compare-with-filter [filter-val to]
(cond
(map? filter-val) (every? (fn [[key subfilter]]
(compare-with-filter subfilter (get to key)))
filter-val)
(or
(fn? filter-val)
(set? filter-val)) (filter-val to)
:else (= filter-val to)))
(ns thesis.backend.components.event-store
(:require [com.stuartsierra.component :as component]
[clj-uuid :as uuid]
[clojure.core.async :as async :refer [<! >! go-loop]]
[cats.monad.either :as either]
[cats.monad.maybe :as maybe]
[clojure.java.io :as io]
[taoensso.timbre :as log]
[thesis.common.utils.transit :as transit-utils]
[thesis.backend.components.protocols :as protocols]
[cats.core :as m]))
(defn- compare-with-filter [filter-val to]
(cond
(map? filter-val) (every? (fn [[key subfilter]]
(compare-with-filter subfilter (get to key)))
filter-val)
(or
(fn? filter-val)
(set? filter-val)) (filter-val to)
:else (= filter-val to)))
(defn- make-filter [filter]
(cond
(= :event/any-event filter)
(fn [_]
true)
:else
(let [event-filter-keys (keys filter)
payload-filter-keys (keys (:aggregate/fields filter))
extract-comparison-map (fn [event]
(let [map-subset (select-keys event event-filter-keys)
payload-subset (select-keys (:event/payload event)
payload-filter-keys)]
(merge map-subset (when (seq payload-subset)
{:event/payload payload-subset}))))]
(fn [event]
(let [filter-map (clojure.set/rename-keys filter {:aggregate/fields :event/payload})
comparison-map (extract-comparison-map event)]
(compare-with-filter filter-map comparison-map))))))
(ns thesis.backend.components.event-store)
(defn- compare-with-filter [filter-val to]
(cond
(map? filter-val) (every? (fn [[key subfilter]]
(compare-with-filter subfilter (get to key)))
filter-val)
(or
(fn? filter-val)
(set? filter-val)) (filter-val to)
:else (= filter-val to)))
(defn- make-filter [filter]
(cond
(= :event/any-event filter)
(fn [_]
true)
:else
(let [event-filter-keys (keys filter)
payload-filter-keys (keys (:aggregate/fields filter))
extract-comparison-map (fn [event]
(let [map-subset (select-keys event event-filter-keys)
payload-subset (select-keys (:event/payload event)
payload-filter-keys)]
(merge map-subset (when (seq payload-subset)
{:event/payload payload-subset}))))]
(fn [event]
(let [filter-map (clojure.set/rename-keys filter {:aggregate/fields :event/payload})
comparison-map (extract-comparison-map event)]
(compare-with-filter filter-map comparison-map))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment