module Dalton::Utility

Public Instance Methods

clojure_equal?(one, other) click to toggle source
# File lib/dalton/utility.rb, line 43
def clojure_equal?(one, other)
  run_clojure_function('clojure.core/=', one, other)
end
gensym(s) click to toggle source
# File lib/dalton/utility.rb, line 56
def gensym(s)
  run_clojure_function('clojure.core/gensym', sym(s))
end
kw(k) click to toggle source
# File lib/dalton/utility.rb, line 68
def kw(k)
  k = k.to_s if k.is_a? Symbol
  k = k[1..-1] if k.start_with? ':'
  Java::ClojureLang::Keyword.intern(k)
end
list(*items) click to toggle source
# File lib/dalton/utility.rb, line 74
def list(*items)
  Dalton::Utility.run_clojure_function("clojure.core/list*", items)
end
meta(value) click to toggle source
# File lib/dalton/utility.rb, line 82
def meta(value)
  Dalton::Utility.run_clojure_function("clojure.core/meta", value)
end
read_edn(edn) click to toggle source
# File lib/dalton/utility.rb, line 30
def read_edn(edn)
  readers = PersistentArrayMap.create({Keyword.intern('readers') => PersistentArrayMap.create({
      Java::ClojureLang::Symbol.intern('db/fn') => RT.var('datomic.function', 'construct'),
      Java::ClojureLang::Symbol.intern('db/id') => RT.var('datomic.db', 'id-literal')
  })})

  run_clojure_function("clojure.edn/read-string", readers, edn)
end
require_clojure(namespace) click to toggle source
# File lib/dalton/utility.rb, line 22
def require_clojure(namespace)
  require_function = RT.var("clojure.core", "require").fn
  require_function.invoke(Java::ClojureLang::Symbol.intern(namespace))
end
rubify_edn(edn) click to toggle source
# File lib/dalton/utility.rb, line 39
def rubify_edn(edn)
  Translation.from_clj(read_edn(edn))
end
run_clojure_function(namespaced_function, *arguments) click to toggle source
# File lib/dalton/utility.rb, line 10
def run_clojure_function(namespaced_function, *arguments)
  namespace, function_name = namespaced_function.to_s.split('/', 2)
  namespace && function_name or
    raise ArgumentError, "Namespaced function required. Got: #{namespaced_function.inspect}"
  RT.var(namespace, function_name).fn.invoke(*arguments)
end
run_database_function(db, function_ident, *arguments) click to toggle source
# File lib/dalton/utility.rb, line 17
def run_database_function(db, function_ident, *arguments)
  function_entity = db.entity(Translation.from_ruby(function_ident))
  function_entity.fn.invoke(*arguments)
end
sym(s) click to toggle source
# File lib/dalton/utility.rb, line 51
def sym(s)
  s = s.to_s if s.is_a? Symbol
  Java::ClojureLang::Symbol.intern(s)
end
tag(value, tag) click to toggle source
# File lib/dalton/utility.rb, line 86
def tag(value, tag)
  with_meta(value, Dalton::Translation.from_ruby(tag: tag))
end
tempid(partition) click to toggle source
# File lib/dalton/utility.rb, line 60
def tempid(partition)
  Peer.tempid(kw(partition))
end
to_edn(clojure_data) click to toggle source
# File lib/dalton/utility.rb, line 47
def to_edn(clojure_data)
  run_clojure_function('clojure.core/pr-str', clojure_data)
end
with_meta(value, meta) click to toggle source
# File lib/dalton/utility.rb, line 78
def with_meta(value, meta)
  Dalton::Utility.run_clojure_function("clojure.core/with-meta", value, meta)
end