redcar 0.3.4.3 → 0.3.5
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/CHANGES +45 -0
- data/README.md +2 -1
- data/ROADMAP.md +0 -1
- data/Rakefile +10 -4
- data/bin/redcar +2 -2
- data/lib/openssl/build.properties +7 -0
- data/lib/plugin_manager/lib/plugin_manager.rb +10 -0
- data/lib/plugin_manager/lib/plugin_manager/plugin_definition.rb +1 -13
- data/lib/redcar.rb +12 -8
- data/lib/redcar/installer.rb +16 -15
- data/lib/redcar/ruby_extensions.rb +146 -1
- data/lib/redcar/runner.rb +16 -7
- data/lib/redcar/usage.rb +4 -7
- data/lib/redcar_quick_start.rb +5 -5
- data/lib/regex_replace.rb +0 -7
- data/plugins/application/features/step_definitions/command_steps.rb +5 -0
- data/plugins/application/features/step_definitions/dialog_steps.rb +5 -0
- data/plugins/application/features/step_definitions/filter_list_dialog_steps.rb +38 -0
- data/plugins/application/features/step_definitions/window_steps.rb +1 -1
- data/plugins/application/features/support/env.rb +44 -8
- data/plugins/application/lib/application.rb +32 -33
- data/plugins/application/lib/application/command.rb +32 -2
- data/plugins/application/lib/application/command/executor.rb +2 -12
- data/plugins/application/lib/application/dialog.rb +14 -14
- data/plugins/application/lib/application/event_spewer.rb +32 -0
- data/plugins/application/lib/application/menu.rb +5 -5
- data/plugins/application/lib/application/menu/builder.rb +5 -0
- data/plugins/application/lib/application/menu/lazy_menu.rb +24 -0
- data/plugins/application/lib/application/notebook.rb +4 -3
- data/plugins/application/lib/application/tab.rb +6 -2
- data/plugins/application/lib/application/window.rb +8 -4
- data/plugins/application/spec/application/menu/builder_spec.rb +17 -1
- data/plugins/application/spec/application/notebook_spec.rb +1 -1
- data/plugins/application_swt/build.xml +74 -0
- data/plugins/application_swt/lib/application_swt.rb +79 -0
- data/plugins/application_swt/lib/application_swt/cucumber_patches.rb +6 -1
- data/plugins/application_swt/lib/application_swt/dialog_adapter.rb +25 -17
- data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +50 -12
- data/plugins/application_swt/lib/application_swt/html_tab.rb +20 -0
- data/plugins/application_swt/lib/application_swt/menu.rb +26 -2
- data/plugins/application_swt/lib/application_swt/notebook.rb +10 -12
- data/plugins/application_swt/lib/application_swt/window.rb +11 -11
- data/plugins/application_swt/src/com/redcareditor/application_swt/CocoaUIEnhancer.java +313 -0
- data/plugins/auto_completer/lib/auto_completer.rb +74 -67
- data/plugins/auto_completer/lib/auto_completer/current_document_completion_source.rb +19 -0
- data/plugins/auto_completer/lib/auto_completer/document_controller.rb +2 -2
- data/plugins/auto_completer/lib/auto_completer/word_list.rb +8 -1
- data/plugins/auto_indenter/features/ruby_style_indentation.feature +24 -0
- data/plugins/auto_indenter/features/step_definitions/indentation_steps.rb +6 -0
- data/plugins/auto_indenter/features/support/env.rb +2 -0
- data/plugins/auto_indenter/lib/auto_indenter.rb +86 -0
- data/plugins/auto_indenter/lib/auto_indenter/analyzer.rb +91 -0
- data/plugins/auto_indenter/lib/auto_indenter/commands.rb +34 -0
- data/plugins/auto_indenter/lib/auto_indenter/document_controller.rb +67 -12
- data/plugins/auto_indenter/lib/auto_indenter/rules.rb +41 -0
- data/plugins/auto_indenter/spec/auto_indenter/analyzer_spec.rb +151 -0
- data/plugins/auto_indenter/spec/spec_helper.rb +5 -0
- data/plugins/auto_pairer/lib/auto_pairer.rb +1 -0
- data/plugins/auto_pairer/lib/auto_pairer/document_controller.rb +43 -42
- data/plugins/auto_pairer/lib/auto_pairer/pairs_for_scope.rb +1 -5
- data/plugins/core/lib/core.rb +12 -1
- data/plugins/core/lib/core/observable.rb +7 -7
- data/plugins/core/lib/core/persistent_cache.rb +14 -2
- data/plugins/core/lib/core/plugin.rb +7 -0
- data/plugins/core/lib/core/resource.rb +78 -0
- data/plugins/core/lib/core/task.rb +62 -0
- data/plugins/core/lib/core/task_queue.rb +72 -0
- data/plugins/core/spec/core/resource_spec.rb +124 -0
- data/plugins/core/spec/core/task_queue_spec.rb +202 -0
- data/plugins/core/spec/spec_helper.rb +23 -1
- data/plugins/declarations/TODO +3 -0
- data/plugins/declarations/lib/declarations.rb +144 -0
- data/plugins/declarations/lib/declarations/completion_source.rb +22 -0
- data/plugins/declarations/lib/declarations/file.rb +68 -0
- data/plugins/declarations/lib/declarations/parser.rb +94 -0
- data/plugins/declarations/lib/declarations/select_tag_dialog.rb +44 -0
- data/plugins/declarations/plugin.rb +7 -0
- data/plugins/declarations/spec/declarations/file_spec.rb +62 -0
- data/plugins/declarations/spec/fixtures/federalist.rb +15 -0
- data/plugins/declarations/spec/spec_helper.rb +4 -0
- data/plugins/edit_view/features/indentation_commands.feature +40 -0
- data/plugins/edit_view/features/line_delimiter.feature +40 -0
- data/plugins/edit_view/features/step_definitions/editing_steps.rb +16 -4
- data/plugins/edit_view/features/step_definitions/notebook_steps.rb +1 -1
- data/plugins/edit_view/features/step_definitions/tab_steps.rb +1 -1
- data/plugins/edit_view/features/step_definitions/window_steps.rb +5 -1
- data/plugins/edit_view/features/support/env.rb +3 -5
- data/plugins/edit_view/features/undo_and_redo.feature +21 -0
- data/plugins/edit_view/lib/edit_view.rb +57 -4
- data/plugins/edit_view/lib/edit_view/actions/arrow_keys.rb +19 -3
- data/plugins/edit_view/lib/edit_view/document.rb +46 -11
- data/plugins/edit_view/lib/edit_view/document/indentation.rb +35 -0
- data/plugins/edit_view/lib/edit_view/modified_tabs_checker.rb +35 -0
- data/plugins/edit_view/lib/edit_view/tab_settings.rb +13 -3
- data/plugins/edit_view/spec/edit_view/document/indentation_spec.rb +112 -0
- data/plugins/edit_view/spec/edit_view/document_spec.rb +22 -0
- data/plugins/edit_view/spec/spec_helper.rb +1 -0
- data/plugins/edit_view_swt/lib/edit_view_swt.rb +59 -7
- data/plugins/edit_view_swt/lib/edit_view_swt/document.rb +3 -3
- data/plugins/edit_view_swt/lib/edit_view_swt/word_movement.rb +2 -2
- data/plugins/edit_view_swt/vendor/java-mateview.rb +3 -2
- data/plugins/encryption/encryption.rb +13 -6
- data/plugins/execute_current_tab/lib/execute_current_tab.rb +25 -15
- data/plugins/html_view/assets/redcar.css +32 -1
- data/plugins/html_view/lib/html_view.rb +23 -3
- data/plugins/html_view/lib/html_view/html_tab.rb +4 -0
- data/plugins/my_plugin/lib/my_plugin.rb +4 -12
- data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +1 -0
- data/plugins/plugin_manager_ui/views/index.html.erb +30 -37
- data/plugins/project/features/find_file.feature +75 -0
- data/plugins/project/features/open_and_save_files.feature +7 -7
- data/plugins/project/features/open_directory_tree.feature +11 -3
- data/plugins/project/features/refresh_directory_tree.feature +7 -1
- data/plugins/project/features/step_definitions/directory_steps.rb +11 -1
- data/plugins/project/features/step_definitions/file_steps.rb +10 -0
- data/plugins/project/features/support/env.rb +6 -1
- data/plugins/project/features/watch_for_modified_files.feature +79 -0
- data/plugins/project/lib/project.rb +72 -306
- data/plugins/project/lib/project/commands.rb +128 -0
- data/plugins/project/lib/project/dir_mirror.rb +5 -1
- data/plugins/project/lib/project/drb_service.rb +21 -31
- data/plugins/project/lib/project/file_list.rb +76 -0
- data/plugins/project/lib/project/file_mirror.rb +13 -1
- data/plugins/project/lib/project/find_file_dialog.rb +22 -52
- data/plugins/project/lib/project/manager.rb +210 -0
- data/plugins/project/lib/project/recent_directories.rb +16 -3
- data/plugins/project/plugin.rb +1 -1
- data/plugins/project/spec/fixtures/myproject/README +2 -0
- data/plugins/project/spec/fixtures/myproject/lib/foo_lib.rb +1 -0
- data/plugins/project/spec/fixtures/myproject/spec/foo_spec.rb +1 -0
- data/plugins/project/{features → spec}/fixtures/winter.txt +0 -0
- data/plugins/project/spec/project/dir_mirror_spec.rb +1 -12
- data/plugins/project/spec/project/file_list_spec.rb +140 -0
- data/plugins/project/spec/spec_helper.rb +20 -0
- data/plugins/redcar/plugin.rb +1 -0
- data/plugins/redcar/redcar.rb +254 -84
- data/plugins/redcar_debug/lib/redcar_debug.rb +58 -11
- data/plugins/redcar_debug/vendor/jruby-prof/README +46 -0
- data/plugins/redcar_debug/vendor/jruby-prof/Rakefile +36 -0
- data/plugins/redcar_debug/vendor/jruby-prof/build.xml +31 -0
- data/plugins/redcar_debug/vendor/jruby-prof/example/call_tree.html +22677 -0
- data/plugins/redcar_debug/vendor/jruby-prof/example/call_tree.txt +589 -0
- data/plugins/redcar_debug/vendor/jruby-prof/example/flat.txt +28 -0
- data/plugins/redcar_debug/vendor/jruby-prof/example/graph.html +1670 -0
- data/plugins/redcar_debug/vendor/jruby-prof/example/graph.txt +125 -0
- data/plugins/redcar_debug/vendor/jruby-prof/example/pidigits.rb +92 -0
- data/plugins/redcar_debug/vendor/jruby-prof/example/test.rb +28 -0
- data/plugins/redcar_debug/vendor/jruby-prof/example/test2.rb +29 -0
- data/plugins/redcar_debug/vendor/jruby-prof/example/test_exception.rb +28 -0
- data/plugins/redcar_debug/vendor/jruby-prof/example/test_overhead.rb +43 -0
- data/plugins/redcar_debug/vendor/jruby-prof/lib/jruby-prof.rb +66 -0
- data/plugins/redcar_debug/vendor/jruby-prof/lib/jruby-prof/abstract_printer.rb +21 -0
- data/plugins/redcar_debug/vendor/jruby-prof/lib/jruby-prof/flat_text_printer.rb +35 -0
- data/plugins/redcar_debug/vendor/jruby-prof/lib/jruby-prof/graph_html_printer.rb +123 -0
- data/plugins/redcar_debug/vendor/jruby-prof/lib/jruby-prof/graph_text_printer.rb +45 -0
- data/plugins/redcar_debug/vendor/jruby-prof/lib/jruby-prof/invocation_set.rb +34 -0
- data/plugins/redcar_debug/vendor/jruby-prof/lib/jruby-prof/method.rb +107 -0
- data/plugins/redcar_debug/vendor/jruby-prof/lib/jruby-prof/profile_invocation.rb +43 -0
- data/plugins/redcar_debug/vendor/jruby-prof/lib/jruby-prof/simple_tree_printer.rb +27 -0
- data/plugins/redcar_debug/vendor/jruby-prof/lib/jruby-prof/tree_html_printer.rb +144 -0
- data/plugins/redcar_debug/vendor/jruby-prof/src/org/jruby/prof/Invocation.java +14 -0
- data/plugins/redcar_debug/vendor/jruby-prof/src/org/jruby/prof/JRubyProf.java +94 -0
- data/plugins/redcar_debug/vendor/jruby-prof/src/org/jruby/prof/ProfEventHook.java +49 -0
- data/plugins/redcar_debug/vendor/jruby-prof/templates/graph_row.html.erb +18 -0
- data/plugins/redcar_debug/vendor/jruby-prof/test/basic_test.rb +291 -0
- data/plugins/redcar_debug/views/history.html.erb +33 -0
- data/plugins/redcar_debug/views/index.html.erb +33 -0
- data/plugins/repl/lib/repl/internal_mirror.rb +3 -15
- data/plugins/repl/spec/repl/internal_mirror_spec.rb +2 -2
- data/plugins/snippets/lib/snippets.rb +0 -1
- data/plugins/snippets/lib/snippets/document_controller.rb +7 -1
- data/plugins/task_manager/lib/task_manager.rb +28 -0
- data/plugins/task_manager/plugin.rb +11 -0
- data/plugins/task_manager/views/index.html.erb +67 -0
- data/plugins/textmate/lib/textmate.rb +17 -21
- data/plugins/textmate/lib/textmate/plist.rb +1 -2
- data/plugins/textmate/lib/textmate/preference.rb +5 -1
- data/plugins/textmate/lib/textmate/snippet.rb +6 -1
- data/plugins/tree_view_swt/lib/tree_view_swt.rb +0 -6
- data/textmate/Bundles/Cucumber.tmbundle/Preferences/Comments.tmPreferences +1 -1
- data/textmate/Bundles/Cucumber.tmbundle/Preferences/next_Cucumber_Plain_Text_Feature_Completions.tmPreferences +30 -0
- data/textmate/Bundles/Cucumber.tmbundle/Preferences/next_Symbol_list___Scenario.tmPreferences +19 -0
- data/textmate/Bundles/Cucumber.tmbundle/Syntaxes/next_Cucumber_Plain_Text_Feature.tmLanguage +221 -0
- data/textmate/Bundles/Cucumber.tmbundle/Syntaxes/next_Cucumber_Steps.tmLanguage +424 -0
- data/textmate/Bundles/Cucumber.tmbundle/Syntaxes/plaintext_template.erb +19 -77
- data/textmate/Bundles/Cucumber.tmbundle/info.plist +1 -20
- data/textmate/Bundles/Perl.tmbundle/Syntaxes/Perl.plist +1 -1
- data/textmate/Themes/Emacs Strict.tmTheme +241 -0
- data/textmate/Themes/IR_White.tmTheme +792 -0
- data/textmate/Themes/Monokai.tmTheme +291 -0
- data/textmate/Themes/WhysPoignant.tmTheme +191 -0
- metadata +92 -7
- data/plugins/application/features/main_window.feature +0 -8
- data/plugins/project/lib/project/project_command.rb +0 -5
- data/textmate/Bundles/Cucumber.tmbundle/Snippets/Scenario.tmSnippet +0 -22
- data/textmate/Bundles/Cucumber.tmbundle/Snippets/Story.tmSnippet +0 -25
data/CHANGES
CHANGED
|
@@ -1,4 +1,49 @@
|
|
|
1
1
|
|
|
2
|
+
Version 0.3.5dev (1 May 2010)
|
|
3
|
+
=============================
|
|
4
|
+
|
|
5
|
+
Enhancements:
|
|
6
|
+
|
|
7
|
+
* Jump to declaration support for Ruby and Java
|
|
8
|
+
* Double click respects word boundaries
|
|
9
|
+
* Window title reflects project name
|
|
10
|
+
* Duplicate region command
|
|
11
|
+
* Switch tab with Alt-1, Alt-2 (or Cmd-1, Cmd-2 on OSX)
|
|
12
|
+
* Prompts to save modified tabs on tab, window or application close
|
|
13
|
+
* Snippet menus show tab trigger more nicely (linux/windows)
|
|
14
|
+
* Watches to changes to open files, and prompts to revert
|
|
15
|
+
* Project view sorts directories before files (by popular request!)
|
|
16
|
+
* Shows menu bar on OSX when there are no windows open
|
|
17
|
+
* Halve startup time from 0.3.4 (warm startup)
|
|
18
|
+
* Added background Task APIs.
|
|
19
|
+
* Task Manager
|
|
20
|
+
* Added ProjectRefresh Task API
|
|
21
|
+
* No longer dumps command errors to the console
|
|
22
|
+
* Command history tab
|
|
23
|
+
* Speed up opening of first file by lazy loading embedded grammars
|
|
24
|
+
* Sped up Ruby highlighting by 17x
|
|
25
|
+
* Doesn't die on long lines (gives up after 500 characters now)
|
|
26
|
+
* Added show/hide invisible characters menu option
|
|
27
|
+
* Smart indentation as you type (based on Textmate bundle rules)
|
|
28
|
+
* Add profiling commands to the Debug menu (uses jruby-prof)
|
|
29
|
+
* Lazy menus API
|
|
30
|
+
* Commands to profile Redcar with jruby-prof.
|
|
31
|
+
|
|
32
|
+
Fixes:
|
|
33
|
+
|
|
34
|
+
* Fix delete at end of line when using "\r\n" delimiter
|
|
35
|
+
* Increase and decrease indent commands respect soft tabs and tab width settings
|
|
36
|
+
* Directory tree sorts correctly
|
|
37
|
+
* Speed up opening a project (about 1s faster)
|
|
38
|
+
|
|
39
|
+
New contributors:
|
|
40
|
+
|
|
41
|
+
* Antono Vasiljev
|
|
42
|
+
* Sergey Potapov
|
|
43
|
+
* Kirill Nikitin
|
|
44
|
+
* Juozas Gaigalas
|
|
45
|
+
* Tim Felgentreff
|
|
46
|
+
|
|
2
47
|
Version 0.3.4dev (7 Mar 2010)
|
|
3
48
|
=============================
|
|
4
49
|
|
data/README.md
CHANGED
|
@@ -13,7 +13,7 @@ A pure Ruby text editor running on JRuby.
|
|
|
13
13
|
|
|
14
14
|
You must have Java installed.
|
|
15
15
|
|
|
16
|
-
$ sudo gem install redcar
|
|
16
|
+
$ sudo gem install redcar
|
|
17
17
|
$ sudo redcar install
|
|
18
18
|
|
|
19
19
|
NB the install will take a minute or so to complete as it has to download about
|
|
@@ -29,6 +29,7 @@ for a list of options.
|
|
|
29
29
|
|
|
30
30
|
## INSTALLING FROM SOURCE
|
|
31
31
|
|
|
32
|
+
If you want to contribute to Redcar, you can install it from the source code.
|
|
32
33
|
Download from github, checkout the submodules and build JavaMateView. You will need Ant
|
|
33
34
|
installed, and RSpec and Cucumber installed as JRuby gems.
|
|
34
35
|
|
data/ROADMAP.md
CHANGED
data/Rakefile
CHANGED
|
@@ -60,9 +60,12 @@ end
|
|
|
60
60
|
|
|
61
61
|
desc "Build"
|
|
62
62
|
task :build do
|
|
63
|
-
sh
|
|
64
|
-
cp
|
|
65
|
-
cp
|
|
63
|
+
sh "ant jar -f vendor/java-mateview/build.xml"
|
|
64
|
+
cp "vendor/java-mateview/lib/java-mateview.rb", "plugins/edit_view_swt/vendor/"
|
|
65
|
+
cp "vendor/java-mateview/release/java-mateview.jar", "plugins/edit_view_swt/vendor/"
|
|
66
|
+
cd "plugins/application_swt" do
|
|
67
|
+
sh "ant"
|
|
68
|
+
end
|
|
66
69
|
end
|
|
67
70
|
|
|
68
71
|
def remove_gitignored_files(filelist)
|
|
@@ -75,7 +78,7 @@ end
|
|
|
75
78
|
|
|
76
79
|
spec = Gem::Specification.new do |s|
|
|
77
80
|
s.name = "redcar"
|
|
78
|
-
s.version = "0.3.
|
|
81
|
+
s.version = "0.3.5"
|
|
79
82
|
s.summary = "A JRuby text editor."
|
|
80
83
|
s.author = "Daniel Lucraft"
|
|
81
84
|
s.email = "dan@fluentradical.com"
|
|
@@ -117,6 +120,9 @@ to complete the installation.
|
|
|
117
120
|
|
|
118
121
|
(If you installed the gem with 'sudo', you will need to run 'sudo redcar install').
|
|
119
122
|
|
|
123
|
+
NB. This will download jars that Redcar needs to run from the internet. It will put
|
|
124
|
+
them only into the Redcar gem directory.
|
|
125
|
+
|
|
120
126
|
------------------------------------------------------------------------------------
|
|
121
127
|
|
|
122
128
|
TEXT
|
data/bin/redcar
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
3
|
$VERBOSE = true if ARGV.find{|arg| arg == '--verbose'}
|
|
4
|
+
require File.join(File.dirname(__FILE__), %w(.. lib redcar_quick_start))
|
|
4
5
|
|
|
5
6
|
if ARGV.first == "install"
|
|
6
7
|
require File.join(File.dirname(__FILE__), %w(.. lib redcar))
|
|
@@ -13,12 +14,11 @@ elsif ARGV.first == '--associate_with_any_right_click'
|
|
|
13
14
|
installer = Redcar::Installer.new
|
|
14
15
|
installer.associate_with_any_right_click
|
|
15
16
|
else
|
|
16
|
-
require File.join(File.dirname(__FILE__), %w(.. lib redcar_quick_start))
|
|
17
17
|
exit if Redcar.try_to_load_via_drb
|
|
18
18
|
require File.join(File.dirname(__FILE__), %w(.. lib redcar))
|
|
19
19
|
Redcar.spin_up
|
|
20
20
|
Redcar.environment = :user
|
|
21
21
|
Redcar.load
|
|
22
|
-
Redcar::Top.start
|
|
22
|
+
Redcar::Top.start(ARGV)
|
|
23
23
|
Redcar.pump
|
|
24
24
|
end
|
|
@@ -18,6 +18,14 @@ class PluginManager
|
|
|
18
18
|
def plugins
|
|
19
19
|
@unloaded_plugins + @loaded_plugins
|
|
20
20
|
end
|
|
21
|
+
|
|
22
|
+
def plugin_objects
|
|
23
|
+
@loaded_plugins.map {|definition| definition.object}
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def objects_implementing(method_name)
|
|
27
|
+
plugin_objects.select {|obj| obj.respond_to?(method_name) }
|
|
28
|
+
end
|
|
21
29
|
|
|
22
30
|
def add_plugin_source(directory)
|
|
23
31
|
definition_files = Dir[File.join(File.expand_path(directory), "*", "plugin.rb")]
|
|
@@ -40,6 +48,7 @@ class PluginManager
|
|
|
40
48
|
end
|
|
41
49
|
|
|
42
50
|
def load
|
|
51
|
+
start = Time.now
|
|
43
52
|
previous_length = @unloaded_plugins.length + 1
|
|
44
53
|
while previous_length > @unloaded_plugins.length
|
|
45
54
|
previous_length = @unloaded_plugins.length
|
|
@@ -57,6 +66,7 @@ class PluginManager
|
|
|
57
66
|
@unloaded_plugins.delete(plugin)
|
|
58
67
|
end
|
|
59
68
|
end
|
|
69
|
+
puts "[PluginManager] took #{Time.now - start}s to load plugins" if ENV["PLUGIN_DEBUG"]
|
|
60
70
|
end
|
|
61
71
|
|
|
62
72
|
private
|
|
@@ -21,15 +21,7 @@ class PluginManager
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def load
|
|
24
|
-
required_files.each
|
|
25
|
-
#fn = File.expand_path(file, definition_directory)
|
|
26
|
-
#p file
|
|
27
|
-
#p fn
|
|
28
|
-
#if fn.match(/^#{Regexp.escape(definition_directory)}/)
|
|
29
|
-
#p :delete
|
|
30
|
-
$".delete(file)
|
|
31
|
-
#end
|
|
32
|
-
end
|
|
24
|
+
required_files.each {|file| $".delete(file) }
|
|
33
25
|
load_file = File.expand_path(File.join(File.dirname(definition_file), file))
|
|
34
26
|
$:.unshift(File.dirname(load_file))
|
|
35
27
|
new_files = log_requires do
|
|
@@ -45,10 +37,6 @@ class PluginManager
|
|
|
45
37
|
eval(object_string)
|
|
46
38
|
end
|
|
47
39
|
|
|
48
|
-
def definition_directory
|
|
49
|
-
File.expand_path(File.dirname(@definition_file))
|
|
50
|
-
end
|
|
51
|
-
|
|
52
40
|
private
|
|
53
41
|
|
|
54
42
|
def log_requires
|
data/lib/redcar.rb
CHANGED
|
@@ -40,12 +40,14 @@ require 'yaml'
|
|
|
40
40
|
#
|
|
41
41
|
# and so on.
|
|
42
42
|
module Redcar
|
|
43
|
-
VERSION = '0.3.
|
|
43
|
+
VERSION = '0.3.5'
|
|
44
44
|
VERSION_MAJOR = 0
|
|
45
45
|
VERSION_MINOR = 3
|
|
46
|
-
VERSION_RELEASE =
|
|
46
|
+
VERSION_RELEASE = 5
|
|
47
47
|
|
|
48
48
|
ENVIRONMENTS = [:user, :debug, :test]
|
|
49
|
+
|
|
50
|
+
PROCESS_START_TIME = Time.now
|
|
49
51
|
|
|
50
52
|
def self.environment=(env)
|
|
51
53
|
unless ENVIRONMENTS.include?(env)
|
|
@@ -85,9 +87,6 @@ module Redcar
|
|
|
85
87
|
$:.push File.expand_path(File.join(File.dirname(__FILE__), "plugin_manager", "lib"))
|
|
86
88
|
require 'plugin_manager'
|
|
87
89
|
|
|
88
|
-
$:.push File.expand_path(File.join(File.dirname(__FILE__), "openssl", "lib"))
|
|
89
|
-
require 'openssl'
|
|
90
|
-
|
|
91
90
|
plugin_manager.load
|
|
92
91
|
if plugin_manager.unreadable_definitions.any?
|
|
93
92
|
puts "Couldn't read definition files: "
|
|
@@ -130,14 +129,19 @@ module Redcar
|
|
|
130
129
|
#
|
|
131
130
|
# @return [String] expanded path
|
|
132
131
|
def self.user_dir
|
|
132
|
+
dirname = {
|
|
133
|
+
:user => ".redcar",
|
|
134
|
+
:test => ".redcar_test",
|
|
135
|
+
:debug => ".redcar_debug"
|
|
136
|
+
}[Redcar.environment]
|
|
133
137
|
if platform == :windows
|
|
134
138
|
if ENV['USERPROFILE'].nil?
|
|
135
|
-
userdir = "C:/My Documents
|
|
139
|
+
userdir = "C:/My Documents/#{dirname}/"
|
|
136
140
|
else
|
|
137
|
-
userdir = File.join(ENV['USERPROFILE'],
|
|
141
|
+
userdir = File.join(ENV['USERPROFILE'], dirname)
|
|
138
142
|
end
|
|
139
143
|
else
|
|
140
|
-
userdir = File.join(ENV['HOME'],
|
|
144
|
+
userdir = File.join(ENV['HOME'], dirname) unless ENV['HOME'].nil?
|
|
141
145
|
end
|
|
142
146
|
File.expand_path(userdir)
|
|
143
147
|
end
|
data/lib/redcar/installer.rb
CHANGED
|
@@ -77,7 +77,7 @@ module Redcar
|
|
|
77
77
|
"/jruby/joni.jar"
|
|
78
78
|
]
|
|
79
79
|
|
|
80
|
-
JRUBY << "http://jruby.kenai.com/downloads/1.4.0/jruby-complete-1.4.0.jar"
|
|
80
|
+
JRUBY << "http://jruby.kenai.com/downloads/1.4.0/jruby-complete-1.4.0.jar"
|
|
81
81
|
|
|
82
82
|
JOPENSSL = {
|
|
83
83
|
"/jruby/bcmail-jdk14-139-#{Redcar::VERSION}.jar" => "lib/openssl/lib/bcmail-jdk14-139.jar",
|
|
@@ -86,7 +86,8 @@ module Redcar
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
REDCAR_JARS = {
|
|
89
|
-
"/java-mateview-#{Redcar::VERSION}.jar" => "plugins/edit_view_swt/vendor/java-mateview.jar"
|
|
89
|
+
"/java-mateview-#{Redcar::VERSION}.jar" => "plugins/edit_view_swt/vendor/java-mateview.jar",
|
|
90
|
+
"/application-swt-#{Redcar::VERSION}.jar" => "plugins/application_swt/lib/dist/application_swt.jar"
|
|
90
91
|
}
|
|
91
92
|
|
|
92
93
|
XULRUNNER_URI = "http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/1.9.2/runtimes/xulrunner-1.9.2.en-US.win32.zip"
|
|
@@ -152,19 +153,19 @@ module Redcar
|
|
|
152
153
|
|
|
153
154
|
# unzip a .zip file into the directory it is located
|
|
154
155
|
def self.unzip_file(source)
|
|
155
|
-
source = File.expand_path(source)
|
|
156
|
-
Dir.chdir(File.dirname(source)) do
|
|
157
|
-
Zip::ZipFile.open(source) do |zipfile|
|
|
158
|
-
zipfile.entries.each do |entry|
|
|
159
|
-
FileUtils.mkdir_p(File.dirname(entry.name))
|
|
160
|
-
begin
|
|
161
|
-
entry.extract
|
|
162
|
-
rescue Zip::ZipDestinationFileExistsError
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
end
|
|
166
|
-
end
|
|
167
|
-
end
|
|
156
|
+
source = File.expand_path(source)
|
|
157
|
+
Dir.chdir(File.dirname(source)) do
|
|
158
|
+
Zip::ZipFile.open(source) do |zipfile|
|
|
159
|
+
zipfile.entries.each do |entry|
|
|
160
|
+
FileUtils.mkdir_p(File.dirname(entry.name))
|
|
161
|
+
begin
|
|
162
|
+
entry.extract
|
|
163
|
+
rescue Zip::ZipDestinationFileExistsError
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
end
|
|
168
169
|
end
|
|
169
170
|
end
|
|
170
171
|
|
|
@@ -15,4 +15,149 @@ end
|
|
|
15
15
|
|
|
16
16
|
def ARGV.option(name)
|
|
17
17
|
ARGV.map {|arg| arg =~/--#{name}=(.*)$/; $1}.compact.first
|
|
18
|
-
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
module AndAnd
|
|
21
|
+
|
|
22
|
+
# This module is included in Object, so each of these methods are added
|
|
23
|
+
# to Object when you require 'andand'. Each method is an *adverb*: they are
|
|
24
|
+
# intended to be enchained with another method, such as receiver.adverb.method
|
|
25
|
+
#
|
|
26
|
+
# The purpose of an adverb is to modify what the primary method returns.
|
|
27
|
+
#
|
|
28
|
+
# Adverbs also take blocks or procs, passing the receiver as an argument to the
|
|
29
|
+
# block or proc. They retain the same semantics with a block or proc as they
|
|
30
|
+
# do with a method. This behaviour weakly resembles a monad.
|
|
31
|
+
module ObjectGoodies
|
|
32
|
+
|
|
33
|
+
# Returns nil if its receiver is nil, regardless of whether nil actually handles the
|
|
34
|
+
# actual method ot what it might return.
|
|
35
|
+
#
|
|
36
|
+
# 'foo'.andand.size => 3
|
|
37
|
+
# nil.andand.size => nil
|
|
38
|
+
# 'foo'.andand { |s| s << 'bar' } => 'foobar'
|
|
39
|
+
# nil.andand { |s| s << 'bar' } => nil
|
|
40
|
+
def andand (p = nil)
|
|
41
|
+
if self
|
|
42
|
+
if block_given?
|
|
43
|
+
yield(self)
|
|
44
|
+
elsif p
|
|
45
|
+
p.to_proc.call(self)
|
|
46
|
+
else
|
|
47
|
+
self
|
|
48
|
+
end
|
|
49
|
+
else
|
|
50
|
+
if block_given? or p
|
|
51
|
+
self
|
|
52
|
+
else
|
|
53
|
+
MockReturningMe.new(self)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Invokes the method and returns the receiver if nothing is raised. Therefore,
|
|
59
|
+
# the purpose of calling the method is strictly for side effects. In the block
|
|
60
|
+
# form, it resembles #tap from Ruby 1.9, and is useful for debugging. It also
|
|
61
|
+
# resembles #returning from Rails, with slightly different syntax.
|
|
62
|
+
#
|
|
63
|
+
# Object.new.me do |o|
|
|
64
|
+
# def o.foo
|
|
65
|
+
# 'foo'
|
|
66
|
+
# end
|
|
67
|
+
# end
|
|
68
|
+
# => your new object
|
|
69
|
+
#
|
|
70
|
+
# In the method form, it is handy for chaining methods that don't ordinarily
|
|
71
|
+
# return the receiver:
|
|
72
|
+
#
|
|
73
|
+
# [1, 2, 3, 4, 5].me.pop.reverse
|
|
74
|
+
# => [4, 3, 2, 1]
|
|
75
|
+
def me (p = nil)
|
|
76
|
+
if block_given?
|
|
77
|
+
yield(self)
|
|
78
|
+
self
|
|
79
|
+
elsif p
|
|
80
|
+
p.to_proc.call(self)
|
|
81
|
+
self
|
|
82
|
+
else
|
|
83
|
+
ProxyReturningMe.new(self)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
unless Object.instance_methods.include?('tap')
|
|
88
|
+
alias :tap :me
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Does not invoke the method or block and returns the receiver.
|
|
92
|
+
# Useful for comemnting stuff out, especially if you are using #me for
|
|
93
|
+
# debugging purposes: change the .me to .dont and the semantics of your
|
|
94
|
+
# program are unchanged.
|
|
95
|
+
#
|
|
96
|
+
# [1, 2, 3, 4, 5].me { |x| p x }
|
|
97
|
+
# => prints and returns the array
|
|
98
|
+
# [1, 2, 3, 4, 5].dont { |x| p x }
|
|
99
|
+
# => returns the array without printing it
|
|
100
|
+
def dont (p = nil)
|
|
101
|
+
if block_given?
|
|
102
|
+
self
|
|
103
|
+
elsif p
|
|
104
|
+
self
|
|
105
|
+
else
|
|
106
|
+
MockReturningMe.new(self)
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
class Object
|
|
115
|
+
include AndAnd::ObjectGoodies
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
unless Module.constants.map { |c| c.to_s }.include?('BlankSlate')
|
|
119
|
+
if Module.constants.map { |c| c.to_s }.include?('BasicObject')
|
|
120
|
+
module AndAnd
|
|
121
|
+
class BlankSlate < BasicObject
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
else
|
|
125
|
+
module AndAnd
|
|
126
|
+
class BlankSlate
|
|
127
|
+
def self.wipe
|
|
128
|
+
instance_methods.reject { |m| m =~ /^__/ }.each { |m| undef_method m }
|
|
129
|
+
end
|
|
130
|
+
def initialize
|
|
131
|
+
BlankSlate.wipe
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
module AndAnd
|
|
139
|
+
# A proxy that returns its target without invoking the method you
|
|
140
|
+
# invoke. Useful for nil.andand and #dont
|
|
141
|
+
class MockReturningMe < BlankSlate
|
|
142
|
+
def initialize(me)
|
|
143
|
+
super()
|
|
144
|
+
@me = me
|
|
145
|
+
end
|
|
146
|
+
def method_missing(*args)
|
|
147
|
+
@me
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# A proxy that returns its target after invoking the method you
|
|
152
|
+
# invoke. Useful for #me
|
|
153
|
+
class ProxyReturningMe < BlankSlate
|
|
154
|
+
def initialize(me)
|
|
155
|
+
super()
|
|
156
|
+
@me = me
|
|
157
|
+
end
|
|
158
|
+
def method_missing(sym, *args, &block)
|
|
159
|
+
@me.__send__(sym, *args, &block)
|
|
160
|
+
@me
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|