Skip to content

Instantly share code, notes, and snippets.

View ertugrulcetin's full-sized avatar

Ertuğrul Çetin ertugrulcetin

View GitHub Profile
@ertugrulcetin
ertugrulcetin / repo-search.clj
Last active March 15, 2021 08:28
GitHub Clojure code search with unified repository results - Clojure, Babashka
#!/usr/bin/env bb
(require '[babashka.curl :as curl])
(require '[clojure.java.io :as io])
(require '[cheshire.core :as json])
(defn- call [q page]
(-> (curl/get "https://api.github.com/search/code"
{:headers {"Accept" "application/vnd.github.previe"}
:query-params {"q" (str q " language:Clojure")
@ertugrulcetin
ertugrulcetin / hello-collision.clj
Last active January 15, 2021 12:44
jme-clj - Hello Collision Example
;; Please have a look https://github.com/ertugrulcetin/jme-clj for more.
;; Demo video used this gist: https://www.youtube.com/watch?v=IOPz9I49snM
(ns examples.beginner-tutorials.hello-collision
"Clojure version of https://wiki.jmonkeyengine.org/docs/3.3/tutorials/beginner/hello_collision.html"
(:require [jme-clj.core :refer :all])
(:import
(com.jme3.asset.plugins ZipLocator)
(com.jme3.input KeyInput)
(com.jme3.math ColorRGBA)))
@ertugrulcetin
ertugrulcetin / hello-physics.clj
Last active December 22, 2020 06:48
jme-clj - Hello Physics Example
;; Please have a look https://github.com/ertugrulcetin/jme-clj for more.
;; Demo video used this gist: https://www.youtube.com/watch?v=IOPz9I49snM
(ns examples.beginner-tutorials.hello-physics
"Clojure version of https://wiki.jmonkeyengine.org/docs/3.3/tutorials/beginner/hello_physics.html"
(:require [jme-clj.core :refer :all])
(:import
(com.jme3.input MouseInput)
(com.jme3.math Vector3f)
(com.jme3.scene.shape Sphere$TextureMode)
(com.jme3.texture Texture$WrapMode)))
@ertugrulcetin
ertugrulcetin / jmonkey-engine.clj
Last active November 30, 2020 19:05
jMonkeyEngine Clojure example with hot reload in REPL
(ns jm-clj.core
(:import (com.jme3.app SimpleApplication)
(com.jme3.scene.shape Box)
(com.jme3.scene Geometry)
(com.jme3.material Material)
(com.jme3.math ColorRGBA)))
(defn my-logic [^SimpleApplication this]
(let [b (Box. 1 1 1)
geom (Geometry. "Box" b)
(ns jm-clj.core
(:import (com.jme3.app SimpleApplication)
(com.jme3.scene.shape Box)
(com.jme3.scene Geometry)
(com.jme3.material Material)
(com.jme3.math ColorRGBA)))
;(def ^:dynamic *app-settings* (doto (AppSettings. true)
; (.setFullscreen false)
; (.setTitle "jme_clj")))
@ertugrulcetin
ertugrulcetin / nested-macro.clj
Created November 21, 2020 21:04
Clojure nested macro sample
(defmacro component
([name tag]
`(component ~name ~tag nil))
([name tag docs]
(if docs
`(defmacro ~(with-meta name {:tag tag}) ~docs
[object# k# & options#]
`(u/call! ~object# ~k# ~@options#))
`(defmacro ~(with-meta name {:tag tag})
[object# k# & options#]
@ertugrulcetin
ertugrulcetin / update-xmind.clj
Created October 16, 2020 16:39
Manipulate Xmind file in Clojure
(defn update-xmind
"Manipulates Xmind data and saves as a binary format. Usage:
This example updates all \"Report\" titles with \"HEY!\"
(update-xmind \"~/xmind-files/report.xmind\"
\"~/xmind-files/report-new.xmind\"
(fn [data]
(o/transform data
(o/and
(d/query data ?path :title ?title)
@ertugrulcetin
ertugrulcetin / reveal-bindings.clj
Last active September 30, 2020 14:46
Revealing variables final values based on substitution map by using logic programming in Clojure.
(require '[clojure.core.logic :refer [== run fresh]]
'[clojure.walk :as walk])
(defn function-call->form [form]
(walk/prewalk (fn [node]
(cond
(and (list? node)
(or (-> node first resolve nil?)
(-> node first resolve meta :special-form)
(-> node first resolve meta :macro)))
(defn wrap-some-data
[handler]
(fn [request]
(let [updated-request (assoc request :site-owner "Ertuğrul")]
;; ▼▼▼ returns response ▼▼▼
(handler updated-request))))
;; :resource-ns-path -> src/clj_web_app dizini altındaki namespace'leri tarar ve tüm `resource`'ları bulup döndürür
(def app-routes (get-routes {:resource-ns-path "clj-web-app."
(:require [patika.core :refer [resource get-routes]]
[ring.adapter.jetty :refer [run-jetty]]
;; Middlewares
[ring.middleware.reload :refer [wrap-reload]]
[ring.middleware.cookies :refer [wrap-cookies]]
[ring.middleware.gzip :refer [wrap-gzip]]
[compojure.core :as c]
[compojure.route :as r])