vothane/aceshigh

View on GitHub
lib/aceshigh/clojruby/clj-map.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Clojure
  RT = Java::clojure::lang::RT
  Map = Java::clojure::lang::IPersistentMap

  def self.var(name, ns = "clojure.core")
    RT.var(ns, name)
  end

  module Map

    def self.new(hash)
      clojure = ClojureBridge.new
      hash.inject(Java::clojure::lang::PersistentArrayMap::EMPTY) do |map, pair|
        pair[0] = clojure.keyword(pair[0].to_s)
        map.assoc(*pair)
      end
    end

    def self.clojure_map_to_ruby_array(clojure_map, arr=[])
      clojure_map.inject(arr) do |arr, hit|
        pair = hit.first
        arr << {pair[0].name => pair[1]}
      end 
      arr
    end

  end
end