Skip to content

Instantly share code, notes, and snippets.

@jmercouris
Created November 15, 2017 13:16
Show Gist options
  • Save jmercouris/c3c7431fc8b6ab9388a6d7c34e437478 to your computer and use it in GitHub Desktop.
Save jmercouris/c3c7431fc8b6ab9388a6d7c34e437478 to your computer and use it in GitHub Desktop.
(defparameter *d* (digraph:make-digraph :initial-vertices '(alert
appkit-version assoc-array attributed-strings binding-utils
class-convert coder coerce-obj combo-box-source custom-app-init date
debug decimal doc-controller-hash file-directory-utils file-monitor
hist-dt install-executable interactive-app interface-packages
iu-classes kvo-slot lc-classes lisp-bundle lisp-controller
lisp-doc-controller lisp-document lisp-notification list-utils
menu-utils nib-link nib notification ns-object-utils ns-string-utils
nslog-utils objc-initialize objc-method-info open-panel opengl-utils
or-semaphore path-trans preferences quick-window save-panel
selector-utils tagged-dates ts-queue undo utility window-controller
window-utils words button constraint-layout lisp-app-pr-view
lv-classes organized-box-view radio-button scroll-view table-utils
text-views view-utils lisp-app-delegate dev-tools builder-utilities save-gui-app)))
(digraph:insert-edge *d* 'alert 'interface-packages)
(digraph:insert-edge *d* 'alert 'ns-string-utils)
(digraph:insert-edge *d* 'appkit-version 'interface-packages)
(digraph:insert-edge *d* 'quick-window 'interface-packages)
(digraph:insert-edge *d* 'quick-window 'ns-string-utils)
(digraph:insert-edge *d* 'preferences 'interface-packages)
(digraph:insert-edge *d* 'preferences 'ns-object-utils)
(digraph:insert-edge *d* 'path-trans 'iu-classes)
(digraph:insert-edge *d* 'path-trans 'nslog-utils)
(digraph:insert-edge *d* 'path-trans 'ns-string-utils)
(digraph:insert-edge *d* 'path-trans 'assoc-array)
(digraph:insert-edge *d* 'or-semaphore 'iu-classes)
(digraph:insert-edge *d* 'opengl-utils 'interface-packages)
(digraph:insert-edge *d* 'open-panel 'interface-packages)
(digraph:insert-edge *d* 'open-panel 'coerce-obj)
(digraph:insert-edge *d* 'open-panel 'ns-object-utils)
(digraph:insert-edge *d* 'objc-method-info 'interface-packages)
(digraph:insert-edge *d* 'objc-initialize 'interface-packages)
(digraph:insert-edge *d* 'objc-initialize 'coerce-obj)
(digraph:insert-edge *d* 'objc-initialize 'selector-utils)
(digraph:insert-edge *d* 'objc-initialize 'list-utils)
(digraph:insert-edge *d* 'objc-initialize 'file-directory-utils)
(digraph:insert-edge *d* 'nslog-utils 'interface-packages)
(digraph:insert-edge *d* 'nslog-utils 'ns-string-utils)
(digraph:insert-edge *d* 'ns-string-utils 'iu-classes)
(digraph:insert-edge *d* 'ns-object-utils 'iu-classes)
(digraph:insert-edge *d* 'ns-object-utils 'ns-string-utils)
(digraph:insert-edge *d* 'ns-object-utils 'binding-utils)
(digraph:insert-edge *d* 'ns-object-utils 'nslog-utils)
(digraph:insert-edge *d* 'ns-object-utils 'date)
(digraph:insert-edge *d* 'ns-object-utils 'alert)
(digraph:insert-edge *d* 'ns-object-utils 'decimal)
(digraph:insert-edge *d* 'notification 'objc-initialize)
(digraph:insert-edge *d* 'notification 'selector-utils)
(digraph:insert-edge *d* 'nib 'interface-packages)
(digraph:insert-edge *d* 'nib 'file-directory-utils)
(digraph:insert-edge *d* 'nib 'interactive-app)
(digraph:insert-edge *d* 'nib-link 'iu-classes)
(digraph:insert-edge *d* 'menu-utils 'iu-classes)
(digraph:insert-edge *d* 'menu-utils 'selector-utils)
(digraph:insert-edge *d* 'menu-utils 'ns-object-utils)
(digraph:insert-edge *d* 'menu-utils 'nib)
(digraph:insert-edge *d* 'list-utils 'interface-packages)
(digraph:insert-edge *d* 'lisp-notification 'iu-classes)
(digraph:insert-edge *d* 'lisp-document 'objc-initialize)
(digraph:insert-edge *d* 'lisp-document 'menu-utils)
(digraph:insert-edge *d* 'lisp-document 'lisp-controller)
(digraph:insert-edge *d* 'lisp-document 'lisp-app-pr-view)
(digraph:insert-edge *d* 'lisp-document 'lisp-bundle)
(digraph:insert-edge *d* 'lisp-document 'window-controller)
(digraph:insert-edge *d* 'lisp-document 'quick-window)
(digraph:insert-edge *d* 'lisp-doc-controller 'iu-classes)
(digraph:insert-edge *d* 'lisp-doc-controller 'menu-utils)
(digraph:insert-edge *d* 'lisp-doc-controller 'selector-utils)
(digraph:insert-edge *d* 'lisp-doc-controller 'nslog-utils)
(digraph:insert-edge *d* 'lisp-doc-controller 'lisp-bundle)
(digraph:insert-edge *d* 'lisp-doc-controller 'lisp-document)
(digraph:insert-edge *d* 'lisp-doc-controller 'lisp-app-delegate)
(digraph:insert-edge *d* 'lisp-doc-controller 'doc-controller-hash)
(digraph:insert-edge *d* 'lisp-doc-controller 'nib)
(digraph:insert-edge *d* 'lisp-doc-controller 'open-panel)
(digraph:insert-edge *d* 'lisp-controller 'interface-packages)
(digraph:insert-edge *d* 'lisp-controller 'lc-classes)
(digraph:insert-edge *d* 'lisp-controller 'coerce-obj)
(digraph:insert-edge *d* 'lisp-controller 'ns-string-utils)
(digraph:insert-edge *d* 'lisp-controller 'ns-object-utils)
(digraph:insert-edge *d* 'lisp-controller 'nslog-utils)
(digraph:insert-edge *d* 'lisp-controller 'undo)
(digraph:insert-edge *d* 'lisp-controller 'assoc-array)
(digraph:insert-edge *d* 'lisp-controller 'list-utils)
(digraph:insert-edge *d* 'lisp-controller 'alert)
(digraph:insert-edge *d* 'lisp-controller 'dev-tools)
(digraph:insert-edge *d* 'lisp-bundle 'iu-classes)
(digraph:insert-edge *d* 'lisp-bundle 'builder-utilities)
(digraph:insert-edge *d* 'lisp-bundle 'ns-object-utils)
(digraph:insert-edge *d* 'lisp-bundle 'ns-string-utils)
(digraph:insert-edge *d* 'lisp-bundle 'alert)
(digraph:insert-edge *d* 'lisp-bundle 'interface-packages)
(digraph:insert-edge *d* 'kvo-slot 'undo)
(digraph:insert-edge *d* 'iu-classes 'interface-packages)
(digraph:insert-edge *d* 'interactive-app 'iu-classes)
(digraph:insert-edge *d* 'interactive-app 'ns-string-utils)
(digraph:insert-edge *d* 'install-executable 'objc-initialize)
(digraph:insert-edge *d* 'install-executable 'custom-app-init)
(digraph:insert-edge *d* 'install-executable 'save-gui-app)
(digraph:insert-edge *d* 'hist-dt 'iu-classes)
(digraph:insert-edge *d* 'file-monitor 'iu-classes)
(digraph:insert-edge *d* 'file-monitor 'open-panel)
(digraph:insert-edge *d* 'file-directory-utils 'iu-classes)
(digraph:insert-edge *d* 'doc-controller-hash 'objc-initialize)
(digraph:insert-edge *d* 'decimal 'iu-classes)
(digraph:insert-edge *d* 'decimal 'ns-string-utils)
(digraph:insert-edge *d* 'debug 'ns-string-utils)
(digraph:insert-edge *d* 'debug 'selector-utils)
(digraph:insert-edge *d* 'date 'iu-classes)
(digraph:insert-edge *d* 'combo-box-source 'iu-classes)
(digraph:insert-edge *d* 'combo-box-source 'ns-string-utils)
(digraph:insert-edge *d* 'coerce-obj 'interface-packages)
(digraph:insert-edge *d* 'coerce-obj 'ns-object-utils)
(digraph:insert-edge *d* 'coder 'iu-classes)
(digraph:insert-edge *d* 'coder 'ns-string-utils)
(digraph:insert-edge *d* 'binding-utils 'iu-classes)
(digraph:insert-edge *d* 'binding-utils 'lc-classes)
(digraph:insert-edge *d* 'binding-utils 'coerce-obj)
(digraph:insert-edge *d* 'binding-utils 'nslog-utils)
(digraph:insert-edge *d* 'binding-utils 'kvo-slot)
(digraph:insert-edge *d* 'binding-utils 'selector-utils)
(digraph:insert-edge *d* 'attributed-strings 'coerce-obj)
(digraph:insert-edge *d* 'attributed-strings 'iu-classes)
(digraph:insert-edge *d* 'attributed-strings 'objc-initialize)
(digraph:insert-edge *d* 'assoc-array 'iu-classes)
(digraph:insert-edge *d* 'appkit-version 'interface-packages)
(digraph:insert-edge *d* 'view-utils 'interface-packages)
(digraph:insert-edge *d* 'view-utils 'coerce-obj)
(digraph:insert-edge *d* 'view-utils 'nslog-utils)
(digraph:insert-edge *d* 'text-views 'interface-packages)
(digraph:insert-edge *d* 'text-views 'nslog-utils)
(digraph:insert-edge *d* 'text-views 'lv-classes)
(digraph:insert-edge *d* 'text-views 'coerce-obj)
(digraph:insert-edge *d* 'text-views 'constraint-layout)
(digraph:insert-edge *d* 'text-views 'dev-tools)
(digraph:insert-edge *d* 'table-utils 'interface-packages)
(digraph:insert-edge *d* 'table-utils 'objc-initialize)
(digraph:insert-edge *d* 'scroll-view 'interface-packages)
(digraph:insert-edge *d* 'scroll-view 'lv-classes)
(digraph:insert-edge *d* 'scroll-view 'text-views)
(digraph:insert-edge *d* 'scroll-view 'attributed-strings)
(digraph:insert-edge *d* 'scroll-view 'coerce-obj)
(digraph:insert-edge *d* 'radio-button 'interface-packages)
(digraph:insert-edge *d* 'radio-button 'organized-box-view)
(digraph:insert-edge *d* 'radio-button 'button)
(digraph:insert-edge *d* 'radio-button 'coerce-obj)
(digraph:insert-edge *d* 'organized-box-view 'interface-packages)
(digraph:insert-edge *d* 'organized-box-view 'constraint-layout)
(digraph:insert-edge *d* 'organized-box-view 'coerce-obj)
(digraph:insert-edge *d* 'lv-classes 'interface-packages)
(digraph:insert-edge *d* 'lisp-app-pr-view 'lv-classes)
(digraph:insert-edge *d* 'lisp-app-pr-view 'date)
(digraph:insert-edge *d* 'lisp-app-pr-view 'nslog-utils)
(digraph:insert-edge *d* 'constraint-layout 'interface-packages)
(digraph:insert-edge *d* 'constraint-layout 'coerce-obj)
(digraph:insert-edge *d* 'constraint-layout 'view-utils)
(digraph:insert-edge *d* 'constraint-layout 'nslog-utils)
(digraph:insert-edge *d* 'button 'interface-packages)
(digraph:insert-edge *d* 'button 'organized-box-view)
(digraph:insert-edge *d* 'button 'coerce-obj)
(digraph:insert-edge *d* 'button 'selector-utils)
(digraph:insert-edge *d* 'button 'list-utils)
;; Generate a Standard Sort Order
;; (digraph:topological-sort *d*)
;; Remove anything not in a cycle
;; (loop :for l = (digraph:leafs *d*) :until (null l) :do (dolist (leaf l) (digraph:remove-vertex *d* leaf)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment