redcar-groovy 0.1-java

Sign up to get free protection for your applications and to get access to all the features.
Binary file
@@ -0,0 +1,38 @@
1
+
2
+ require 'groovy/commands'
3
+ require 'groovy/repl_mirror'
4
+ require 'groovy/syntax_checker'
5
+
6
+ module Redcar
7
+ class Groovy
8
+
9
+ def self.load_dependencies
10
+ unless @loaded
11
+ require File.expand_path("../../groovy-all-1.7.4", __FILE__)
12
+ @loaded = true
13
+ end
14
+ end
15
+
16
+ def self.menus
17
+ Redcar::Menu::Builder.build do
18
+ sub_menu "Plugins" do
19
+ sub_menu "REPL" do
20
+ item "Open Groovy REPL", OpenGroovyREPL
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ def self.keymaps
27
+ osx = Keymap.build("main", :osx) do
28
+ link "Cmd+Alt+G", OpenGroovyREPL
29
+ end
30
+
31
+ linwin = Keymap.build("main", [:linux, :windows]) do
32
+ link "Ctrl+Alt+G", OpenGroovyREPL
33
+ end
34
+
35
+ [linwin, osx]
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,10 @@
1
+
2
+ module Redcar
3
+ class Groovy
4
+ class OpenGroovyREPL < Redcar::REPL::OpenREPL
5
+ def execute
6
+ open_repl(ReplMirror.new)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,85 @@
1
+
2
+ require 'java'
3
+
4
+ module Redcar
5
+ class Groovy
6
+ class ReplMirror < Redcar::REPL::ReplMirror
7
+ def title
8
+ "Groovy REPL"
9
+ end
10
+
11
+ def grammar_name
12
+ "Groovy REPL"
13
+ end
14
+
15
+ def prompt
16
+ "groovy>"
17
+ end
18
+
19
+ def evaluator
20
+ @instance ||= ReplMirror::Evaluator.new
21
+ end
22
+
23
+ def format_error(e)
24
+ backtrace = e.backtrace
25
+ "ERROR #{e.class}:\n #{e.message}\n #{backtrace.join("\n ")}"
26
+ end
27
+
28
+ def help
29
+ h = super
30
+ h << """
31
+ Note on Groovy Script Scoping:
32
+ Classes, undefined variables, and undefined closures are saved in the script
33
+ binding between statements.
34
+ Defined methods, closures, and variables are not added to the binding,
35
+ because they are considered local variables and thus are not available after
36
+ the defining statement.
37
+
38
+ Example:
39
+
40
+ def foo = 'hello! I am a local variable'
41
+ foo = 'hi! I am a binding variable'
42
+
43
+ See 'http://groovy.codehaus.org/Scoping+and+the+Semantics+of+%22def%22'
44
+ for more information.
45
+ """
46
+ end
47
+
48
+ class Evaluator
49
+ def self.load_dependencies
50
+ unless @loaded
51
+ Groovy.load_dependencies
52
+ import 'groovy.lang.GroovyShell'
53
+ import 'java.io.PrintWriter'
54
+ import 'java.io.StringWriter'
55
+ @loaded = true
56
+ end
57
+ end
58
+
59
+ def initialize
60
+ Evaluator.load_dependencies
61
+ @out = StringWriter.new
62
+ @shell = GroovyShell.new
63
+ @shell.setProperty('out',@out)
64
+ end
65
+
66
+ def inspect
67
+ "groovyREPL main"
68
+ end
69
+
70
+ def execute(cmd)
71
+ output = @shell.evaluate(cmd,"GroovyREPL").to_s
72
+ output = "null" unless output and not output.empty?
73
+ if @out and not @out.toString().empty?
74
+ console = @out.toString() + "\n"
75
+ else
76
+ console = ""
77
+ end
78
+ buf = @out.getBuffer()
79
+ buf.delete(0,buf.length()) if buf.length() > 0
80
+ console + "===> #{output}"
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,81 @@
1
+
2
+ require 'java'
3
+
4
+ module Redcar
5
+ class Groovy
6
+ class SyntaxChecker < Redcar::SyntaxCheck::Checker
7
+ supported_grammars "Groovy", "Easyb"
8
+
9
+ def self.load_dependencies
10
+ unless @loaded
11
+ Groovy.load_dependencies
12
+ import 'groovy.lang.GroovyShell'
13
+ import 'org.codehaus.groovy.control.CompilationFailedException'
14
+ import 'org.codehaus.groovy.control.CompilerConfiguration'
15
+ @loaded = true
16
+ end
17
+ end
18
+
19
+ def initialize(document)
20
+ super
21
+ SyntaxChecker.load_dependencies
22
+ end
23
+
24
+ def check(*args)
25
+ path = manifest_path(doc)
26
+ name = File.basename(path)
27
+ shell = create_shell
28
+ text = doc.get_all_text
29
+ io = java.io.File.new(path)
30
+ begin
31
+ shell.parse(io)
32
+ rescue CompilationFailedException => e
33
+ create_syntax_error(doc, e.message, name).annotate
34
+ rescue Object => e
35
+ Redcar::SyntaxCheck.message(
36
+ "An error occurred while parsing #{name}: #{e.message}",:error)
37
+ end
38
+ end
39
+
40
+ def create_syntax_error(doc, message, name)
41
+ message =~ /#{Regexp.escape(name)}: (\d+):(.*)/
42
+ line = $1.to_i - 1
43
+ message = $2
44
+ Redcar::SyntaxCheck::Error.new(doc, line, message)
45
+ end
46
+
47
+ def classpath_files(project)
48
+ project.config_files("classpath.groovy")
49
+ end
50
+
51
+ def classpath(project)
52
+ parts = []
53
+ shell = GroovyShell.new
54
+ files = classpath_files(project)
55
+ return unless files.any?
56
+ files.each do |path|
57
+ begin
58
+ file = java.io.File.new(path)
59
+ part = shell.run(file, [])
60
+ parts += part if part
61
+ rescue Object => e
62
+ Redcar::SyntaxCheck.message(
63
+ "An error occurred while loading groovy classpath file #{path}: #{e.message}",:error)
64
+ end
65
+ end
66
+ parts
67
+ end
68
+
69
+ def create_shell
70
+ config = CompilerConfiguration.new
71
+ if project = Redcar::Project::Manager.focussed_project
72
+ classpath = classpath(project)
73
+ config.setClasspathList(classpath) if classpath and classpath.any?
74
+ end
75
+ shell = GroovyShell.new(config)
76
+ shell.setProperty("out",nil)
77
+ shell
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,8 @@
1
+ Plugin.define do
2
+ name "groovy"
3
+ version "1.0"
4
+ file "lib", "groovy"
5
+ object "Redcar::Groovy"
6
+ dependencies "syntax_check", ">0",
7
+ "repl", ">0"
8
+ end
metadata ADDED
@@ -0,0 +1,63 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: redcar-groovy
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: "0.1"
6
+ platform: java
7
+ authors:
8
+ - Daniel Lucraft
9
+ - Delisa Mason
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+
14
+ date: 2011-07-24 00:00:00 +01:00
15
+ default_executable:
16
+ dependencies: []
17
+
18
+ description: ""
19
+ email:
20
+ - dan@fluentradical.com
21
+ executables: []
22
+
23
+ extensions: []
24
+
25
+ extra_rdoc_files: []
26
+
27
+ files:
28
+ - lib/groovy.rb
29
+ - lib/groovy/commands.rb
30
+ - lib/groovy/repl_mirror.rb
31
+ - lib/groovy/syntax_checker.rb
32
+ - plugin.rb
33
+ - groovy-all-1.7.4.jar
34
+ has_rdoc: true
35
+ homepage: http://github.com/danlucraft/redcar-groovy
36
+ licenses: []
37
+
38
+ post_install_message:
39
+ rdoc_options: []
40
+
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: "0"
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: "0"
55
+ requirements: []
56
+
57
+ rubyforge_project:
58
+ rubygems_version: 1.5.1
59
+ signing_key:
60
+ specification_version: 3
61
+ summary: A Redcar plugin for Groovy development
62
+ test_files: []
63
+