Guest User

Untitled

a guest
Mar 23rd, 2016
96
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;; Root Query
  2. (defui Root
  3.   static om/IQuery
  4.   (query [this]
  5.     [;{:faces/list (om/get-query Face)}
  6.      ;{:colors/list (om/get-query Color)}
  7.      ;{:code-chunks/list (om/get-query CodeChunk)}
  8.      {:data [{:colors/list (om/get-query Color)}
  9.              {:faces/list (om/get-query Face)}
  10.              {:code-chunks/list (om/get-query CodeChunk)}]}
  11.      {:widgets (om/get-query Widgets)}])
  12.  
  13. ;; Widgets Query
  14. (defui Widgets
  15.   static om/IQuery
  16.   (query [this]
  17.     [{:sidebar (om/get-query Sidebar)}
  18.      {:code-display (om/get-query CodeDisplay)}])))
  19.  
  20. ;; Sidebar query
  21. (defui Sidebar
  22.   static om/IQuery
  23.   (query [this]
  24.     [{:palette (om/get-query Palette)}
  25.      {:faces [{:faces/list (om/get-query Face)}]}])
  26.  
  27. ;; Palette Query
  28. (defui Palette
  29.   static om/IQuery
  30.   (query [this]
  31.     [{:colors/list (om/get-query Color)}])
  32.  
  33. ;; Color Query
  34. (defui Color
  35.  
  36.   static om/Ident
  37.   (ident [this {:keys [color/name]}]
  38.     [:colors/by-name name])
  39.  
  40.   static om/IQuery
  41.   (query [this]
  42.     [:db/id :color/name :color/rgb])
  43.  
  44. ;; Face Query
  45. (defui Face
  46.   static om/Ident
  47.   (ident [this {:keys [face/name]}]
  48.     [:faces/by-name name])
  49.  
  50.   static om/IQuery
  51.   (query [this]
  52.     `[:db/id
  53.       :face/name
  54.       {:face/background ~(om/get-query Color)}
  55.       {:face/foreground ~(om/get-query Color)}])
  56.  
  57. ;; Code Display Query
  58. (defui CodeDisplay
  59.   static om/IQuery
  60.   (query [this]
  61.     [{:code-chunks/list (om/get-query CodeChunk)}])
  62.  
  63. ;; Code Chunk Query
  64. (defui CodeChunk
  65.   static om/Ident
  66.   (ident [this {:keys [line-chunk]}]
  67.     ;; dirty ident but it works for our purposes
  68.     [:code-chunks/by-linechunk line-chunk])
  69.  
  70.   static om/IQuery
  71.   (query [this]
  72.     [{:code-chunk/face (om/get-query Face)}
  73.      :code-chunk/line-chunk
  74.      :code-chunk/string])
  75.  
  76.  
  77.  
  78. ;; Initial app state
  79. (def code-elisp [{:code-chunk/face [:faces/by-name :font-lock-comment-delimiter-face], :code-chunk/string ";", :code-chunk/line-chunk 1001}
  80.                  {:code-chunk/face [:faces/by-name :font-lock-comment-delimiter-face], :code-chunk/string "; ", :code-chunk/line-chunk 1002}
  81.  
  82.                  {:code-chunk/face [:faces/by-name :font-lock-comment-face], :code-chunk/string "this is a comment", :code-chunk/line-chunk 1003}
  83.                  {:code-chunk/face [:faces/by-name :font-lock-comment-face], :code-chunk/string "", :code-chunk/line-chunk 1004}
  84.                  {:code-chunk/face [:faces/by-name :default], :code-chunk/string "", :code-chunk/line-chunk 2001}
  85.                  {:code-chunk/face [:faces/by-name :default], :code-chunk/string "(", :code-chunk/line-chunk 3001}
  86.                  {:code-chunk/face [:faces/by-name :font-lock-keyword-face], :code-chunk/string "defun", :code-chunk/line-chunk 3002}
  87.                  {:code-chunk/face [:faces/by-name :default], :code-chunk/string " ", :code-chunk/line-chunk 3003}
  88.                  {:code-chunk/face [:faces/by-name :font-lock-function-name-face], :code-chunk/string "adder", :code-chunk/line-chunk 3004}
  89.                  {:code-chunk/face [:faces/by-name :default], :code-chunk/string " ", :code-chunk/line-chunk 3005}
  90.                  {:code-chunk/face [:faces/by-name :default], :code-chunk/string "(", :code-chunk/line-chunk 3006}
  91.                  {:code-chunk/face [:faces/by-name :default], :code-chunk/string "a b", :code-chunk/line-chunk 3007}
  92.                  {:code-chunk/face [:faces/by-name :default], :code-chunk/string ")", :code-chunk/line-chunk 3008}
  93.                  {:code-chunk/face [:faces/by-name :default], :code-chunk/string "", :code-chunk/line-chunk 3009}
  94.                  {:code-chunk/face [:faces/by-name :default], :code-chunk/string "  ", :code-chunk/line-chunk 4001}
  95.                  {:code-chunk/face [:faces/by-name :default], :code-chunk/string "(", :code-chunk/line-chunk 4002}
  96.                  {:code-chunk/face [:faces/by-name :default], :code-chunk/string "+ a b", :code-chunk/line-chunk 4003}
  97.                  {:code-chunk/face [:faces/by-name :default], :code-chunk/string ")", :code-chunk/line-chunk 4004}
  98.                  {:code-chunk/face [:faces/by-name :default], :code-chunk/string ")", :code-chunk/line-chunk 4005}
  99.                  {:code-chunk/face [:faces/by-name :default], :code-chunk/string "", :code-chunk/line-chunk 5001}])
  100.  
  101. (def app-state
  102.   (atom {:data {:code-chunks/list code-elisp
  103.  
  104.                 :colors/list [{:db/id 230
  105.                                :color/name "black"
  106.                                :color/rgb "#1a1a1a"}
  107.                               {:db/id 200
  108.                                :color/name "yellow"
  109.                                :color/rgb  "#Ffd700"}
  110.                               {:db/id 201
  111.                                :color/name "blue"
  112.                                :color/rgb  "#1e90ff"}
  113.                               {:db/id 202
  114.                                :color/name "red"
  115.                                :color/rgb  "#Cd0000"}
  116.                               {:db/id 203
  117.                                :color/name "green"
  118.                                :color/rgb  "#2e8b57"}]
  119.  
  120.                 :faces/list [{:db/id 100
  121.                               :face/name :default
  122.  
  123.                               :face/foreground {:db/id 201
  124.                                                 :color/name "blue"
  125.                                                 :color/rgb  "#1e90ff"}}
  126.  
  127.                              {:db/id 101
  128.                               :face/name :font-lock-comment-delimiter-face
  129.  
  130.                               :face/foreground {:db/id 202
  131.                                                 :color/name "red"
  132.                                                 :color/rgb  "#Cd0000"}}
  133.  
  134.                              {:db/id 102
  135.                               :face/name :font-lock-comment-face
  136.  
  137.                               :face/foreground {:db/id 202
  138.                                                 :color/name "red"
  139.                                                 :color/rgb  "#Cd0000"}}
  140.  
  141.                              {:db/id 103
  142.                               :face/name :font-lock-keyword-face
  143.  
  144.                               :face/foreground {:db/id 200
  145.                                                 :color/name "yellow"
  146.                                                 :color/rgb  "Ffd700"}}
  147.  
  148.                              {:db/id 105
  149.                               :face/name :font-lock-function-name-face
  150.  
  151.                               :face/foreground {:db/id 203
  152.                                                 :color/name "green"
  153.                                                 :color/rgb  "#2e8b57"}}]}}))
RAW Paste Data