redcar-clojure 0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md ADDED
File without changes
data/lib/clojure.rb ADDED
@@ -0,0 +1,39 @@
1
+
2
+ require 'clojure/repl_mirror'
3
+
4
+ puts "loading the clojure plugin"
5
+
6
+ module Redcar
7
+ class Clojure
8
+
9
+ def self.menus
10
+ Menu::Builder.build do
11
+ sub_menu "Plugins" do
12
+ sub_menu "REPL" do
13
+ item "Open Clojure REPL", OpenClojureREPL
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ def self.load_dependencies
20
+ unless @loaded
21
+ require File.join(vendor_dir, "clojure-1.2beta1.jar")
22
+ require File.join(vendor_dir, "clojure-contrib-1.2beta1.jar")
23
+ require File.join(vendor_dir, "org-enclojure-repl-server.jar")
24
+ require File.join(vendor_dir, "enclojure-wrapper.jar")
25
+ @loaded = true
26
+ end
27
+ end
28
+
29
+ def self.vendor_dir
30
+ File.expand_path("../../vendor", __FILE__)
31
+ end
32
+
33
+ class OpenClojureREPL < Redcar::REPL::OpenREPL
34
+ def execute
35
+ open_repl(ReplMirror.new)
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,65 @@
1
+
2
+ module Redcar
3
+ class Clojure
4
+ class ReplMirror < Redcar::REPL::ReplMirror
5
+
6
+ def title
7
+ "Clojure REPL"
8
+ end
9
+
10
+ def grammar_name
11
+ "Clojure REPL"
12
+ end
13
+
14
+ def prompt
15
+ "user=>"
16
+ end
17
+
18
+ def evaluator
19
+ @evaluator ||= Evaluator.new(self)
20
+ end
21
+
22
+ def format_error(e)
23
+ "ERROR: #{e.message}\n\n#{e.backtrace.join("\n")}"
24
+ end
25
+
26
+ class Evaluator
27
+ attr_reader :wrapper
28
+
29
+ def self.load_dependencies
30
+ unless @loaded
31
+ Clojure.load_dependencies
32
+ import 'redcar.repl.Wrapper'
33
+ @loaded = true
34
+ end
35
+ end
36
+
37
+ def initialize(mirror)
38
+ Evaluator.load_dependencies
39
+ @mirror = mirror
40
+ @wrapper ||= begin
41
+ wrapper = Wrapper.new
42
+
43
+ @thread = Thread.new do
44
+ loop do
45
+ output = wrapper.getResult
46
+ output =~ /^(.*)\nuser=> /
47
+ @result = $1
48
+ end
49
+ end
50
+
51
+ wrapper
52
+ end
53
+ end
54
+
55
+ def execute(expr)
56
+ wrapper.sendToRepl(expr)
57
+ true until @result
58
+ str = @result
59
+ @result = nil
60
+ str
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
data/plugin.rb ADDED
@@ -0,0 +1,9 @@
1
+
2
+ Plugin.define do
3
+ name "clojure"
4
+ version "1.0"
5
+ file "lib", "clojure"
6
+ object "Redcar::Clojure"
7
+ dependencies "redcar", ">0",
8
+ "repl", ">0"
9
+ end
@@ -0,0 +1,16 @@
1
+ (ns redcar.repl.Wrapper
2
+ (:require [org.enclojure.repl.main])
3
+ (:gen-class
4
+ :state state
5
+ :init init
6
+ :methods [[getResult [] String]
7
+ [sendToRepl [String] void]]))
8
+
9
+ (defn -init []
10
+ [[] (org.enclojure.repl.main/create-clojure-repl)])
11
+
12
+ (defn -getResult [this]
13
+ ((:result-fn (.state this))))
14
+
15
+ (defn -sendToRepl [this expr]
16
+ ((:repl-fn (.state this)) expr))
Binary file
Binary file
Binary file
metadata ADDED
@@ -0,0 +1,56 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: redcar-clojure
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.2'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Daniel Lucraft
9
+ - Delisa Mason
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2011-09-10 00:00:00.000000000 +01:00
14
+ default_executable:
15
+ dependencies: []
16
+ description: ''
17
+ email:
18
+ - dan@fluentradical.com
19
+ executables: []
20
+ extensions: []
21
+ extra_rdoc_files: []
22
+ files:
23
+ - lib/clojure/repl_mirror.rb
24
+ - lib/clojure.rb
25
+ - README.md
26
+ - plugin.rb
27
+ - vendor/clojure-1.2beta1.jar
28
+ - vendor/clojure-contrib-1.2beta1.jar
29
+ - vendor/enclojure-wrapper.jar
30
+ - vendor/Wrapper.clj
31
+ has_rdoc: true
32
+ homepage: http://github.com/danlucraft/redcar-clojure
33
+ licenses: []
34
+ post_install_message:
35
+ rdoc_options: []
36
+ require_paths:
37
+ - lib
38
+ required_ruby_version: !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ required_rubygems_version: !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ requirements: []
51
+ rubyforge_project:
52
+ rubygems_version: 1.6.2
53
+ signing_key:
54
+ specification_version: 3
55
+ summary: A Redcar plugin for Clojure development
56
+ test_files: []