redcar 0.2.9dev
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 +64 -0
- data/LICENSE +32 -0
- data/README.md +64 -0
- data/ROADMAP.md +69 -0
- data/Rakefile +223 -0
- data/bin/redcar +6 -0
- data/config/default.yaml +15 -0
- data/ext/extconf.rb +18 -0
- data/lib/freebase2/README.txt +47 -0
- data/lib/freebase2/bin/default.yaml +15 -0
- data/lib/freebase2/bin/install.rb +42 -0
- data/lib/freebase2/bin/run.rb +48 -0
- data/lib/freebase2/lib/freebase/configuration.rb +535 -0
- data/lib/freebase2/lib/freebase/core.rb +197 -0
- data/lib/freebase2/lib/freebase/databus.rb +1128 -0
- data/lib/freebase2/lib/freebase/freebase.rb +60 -0
- data/lib/freebase2/lib/freebase/logger.rb +117 -0
- data/lib/freebase2/lib/freebase/plugin.rb +384 -0
- data/lib/freebase2/lib/freebase/properties.rb +130 -0
- data/lib/freebase2/lib/freebase/readers.rb +321 -0
- data/lib/freebase2/notes +61 -0
- data/lib/freebase2/plugins/raa_webrick/httpd.rb +125 -0
- data/lib/freebase2/plugins/raa_webrick/plugin.yaml +7 -0
- data/lib/freebase2/plugins/raa_webrick/web_root/test.html +5 -0
- data/lib/freebase2/plugins/raa_webrick/webserver.yaml +6 -0
- data/lib/freebase2/plugins/raa_xmlrpc4r/plugin.xml +8 -0
- data/lib/freebase2/plugins/raa_xmlrpc4r/rpcd.rb +54 -0
- data/lib/freebase2/regress/README +1 -0
- data/lib/little_plugger/History.txt +20 -0
- data/lib/little_plugger/Rakefile +34 -0
- data/lib/little_plugger/lib/little-plugger.rb +323 -0
- data/lib/little_plugger/spec/little-plugger_spec.rb +26 -0
- data/lib/little_plugger/spec/spec_helper.rb +16 -0
- data/lib/logging/History.txt +240 -0
- data/lib/logging/Rakefile +37 -0
- data/lib/logging/data/bad_logging_1.rb +13 -0
- data/lib/logging/data/bad_logging_2.rb +21 -0
- data/lib/logging/data/logging.rb +42 -0
- data/lib/logging/data/logging.yaml +63 -0
- data/lib/logging/data/simple_logging.rb +13 -0
- data/lib/logging/examples/appenders.rb +47 -0
- data/lib/logging/examples/classes.rb +41 -0
- data/lib/logging/examples/consolidation.rb +83 -0
- data/lib/logging/examples/formatting.rb +51 -0
- data/lib/logging/examples/hierarchies.rb +73 -0
- data/lib/logging/examples/layouts.rb +48 -0
- data/lib/logging/examples/loggers.rb +29 -0
- data/lib/logging/examples/names.rb +43 -0
- data/lib/logging/examples/simple.rb +17 -0
- data/lib/logging/lib/logging.rb +501 -0
- data/lib/logging/lib/logging/appender.rb +251 -0
- data/lib/logging/lib/logging/appenders.rb +131 -0
- data/lib/logging/lib/logging/appenders/buffering.rb +168 -0
- data/lib/logging/lib/logging/appenders/console.rb +60 -0
- data/lib/logging/lib/logging/appenders/email.rb +75 -0
- data/lib/logging/lib/logging/appenders/file.rb +58 -0
- data/lib/logging/lib/logging/appenders/growl.rb +197 -0
- data/lib/logging/lib/logging/appenders/io.rb +69 -0
- data/lib/logging/lib/logging/appenders/rolling_file.rb +293 -0
- data/lib/logging/lib/logging/appenders/string_io.rb +68 -0
- data/lib/logging/lib/logging/appenders/syslog.rb +194 -0
- data/lib/logging/lib/logging/config/configurator.rb +188 -0
- data/lib/logging/lib/logging/config/yaml_configurator.rb +191 -0
- data/lib/logging/lib/logging/layout.rb +117 -0
- data/lib/logging/lib/logging/layouts.rb +47 -0
- data/lib/logging/lib/logging/layouts/basic.rb +32 -0
- data/lib/logging/lib/logging/layouts/parseable.rb +211 -0
- data/lib/logging/lib/logging/layouts/pattern.rb +311 -0
- data/lib/logging/lib/logging/log_event.rb +45 -0
- data/lib/logging/lib/logging/logger.rb +503 -0
- data/lib/logging/lib/logging/repository.rb +232 -0
- data/lib/logging/lib/logging/root_logger.rb +61 -0
- data/lib/logging/lib/logging/stats.rb +278 -0
- data/lib/logging/lib/logging/utils.rb +153 -0
- data/lib/logging/lib/spec/logging_helper.rb +34 -0
- data/lib/logging/test/appenders/test_buffered_io.rb +176 -0
- data/lib/logging/test/appenders/test_console.rb +66 -0
- data/lib/logging/test/appenders/test_email.rb +170 -0
- data/lib/logging/test/appenders/test_file.rb +95 -0
- data/lib/logging/test/appenders/test_growl.rb +127 -0
- data/lib/logging/test/appenders/test_io.rb +129 -0
- data/lib/logging/test/appenders/test_rolling_file.rb +200 -0
- data/lib/logging/test/appenders/test_syslog.rb +194 -0
- data/lib/logging/test/benchmark.rb +86 -0
- data/lib/logging/test/config/test_configurator.rb +70 -0
- data/lib/logging/test/config/test_yaml_configurator.rb +40 -0
- data/lib/logging/test/layouts/test_basic.rb +42 -0
- data/lib/logging/test/layouts/test_json.rb +112 -0
- data/lib/logging/test/layouts/test_pattern.rb +198 -0
- data/lib/logging/test/layouts/test_yaml.rb +121 -0
- data/lib/logging/test/setup.rb +44 -0
- data/lib/logging/test/test_appender.rb +152 -0
- data/lib/logging/test/test_consolidate.rb +46 -0
- data/lib/logging/test/test_layout.rb +110 -0
- data/lib/logging/test/test_log_event.rb +80 -0
- data/lib/logging/test/test_logger.rb +699 -0
- data/lib/logging/test/test_logging.rb +267 -0
- data/lib/logging/test/test_repository.rb +158 -0
- data/lib/logging/test/test_root_logger.rb +81 -0
- data/lib/logging/test/test_stats.rb +274 -0
- data/lib/logging/test/test_utils.rb +116 -0
- data/lib/redcar.rb +12 -0
- data/lib/redcar/boot.rb +105 -0
- data/lib/redcar/install.rb +97 -0
- data/lib/redcar/plist.rb +83 -0
- data/lib/redcar/ruby_extensions.rb +14 -0
- data/lib/redcar/runner.rb +32 -0
- data/lib/redcar/usage.rb +24 -0
- data/lib/regex_replace.rb +220 -0
- data/plugins/application/features/main_menu.feature +9 -0
- data/plugins/application/features/main_window.feature +8 -0
- data/plugins/application/features/step_definitions/dialog_steps.rb +5 -0
- data/plugins/application/features/step_definitions/menu_steps.rb +21 -0
- data/plugins/application/features/step_definitions/window_steps.rb +4 -0
- data/plugins/application/features/support/env.rb +32 -0
- data/plugins/application/lib/application.rb +128 -0
- data/plugins/application/lib/application/assets/file.png +0 -0
- data/plugins/application/lib/application/command.rb +70 -0
- data/plugins/application/lib/application/command/executor.rb +46 -0
- data/plugins/application/lib/application/command/history.rb +49 -0
- data/plugins/application/lib/application/dialog.rb +15 -0
- data/plugins/application/lib/application/menu.rb +27 -0
- data/plugins/application/lib/application/menu/builder.rb +51 -0
- data/plugins/application/lib/application/menu/item.rb +26 -0
- data/plugins/application/lib/application/notebook.rb +77 -0
- data/plugins/application/lib/application/sensitive.rb +57 -0
- data/plugins/application/lib/application/sensitivity.rb +78 -0
- data/plugins/application/lib/application/tab.rb +47 -0
- data/plugins/application/lib/application/tab/command.rb +5 -0
- data/plugins/application/lib/application/window.rb +139 -0
- data/plugins/application/plugin.yaml +11 -0
- data/plugins/application/spec/application/application_spec.rb +23 -0
- data/plugins/application/spec/application/command/executor_spec.rb +67 -0
- data/plugins/application/spec/application/command/history_spec.rb +49 -0
- data/plugins/application/spec/application/command_spec.rb +59 -0
- data/plugins/application/spec/application/controllers/application_controller.rb +4 -0
- data/plugins/application/spec/application/controllers/notebook_controller.rb +4 -0
- data/plugins/application/spec/application/controllers/window_controller.rb +5 -0
- data/plugins/application/spec/application/menu/builder_spec.rb +57 -0
- data/plugins/application/spec/application/menu/menu_item_spec.rb +17 -0
- data/plugins/application/spec/application/menu_spec.rb +36 -0
- data/plugins/application/spec/application/notebook_spec.rb +26 -0
- data/plugins/application/spec/application/sensitive_spec.rb +156 -0
- data/plugins/application/spec/application/window_spec.rb +24 -0
- data/plugins/application/spec/spec_helper.rb +7 -0
- data/plugins/application_swt/lib/application_swt.rb +70 -0
- data/plugins/application_swt/lib/application_swt/cucumber_patches.rb +118 -0
- data/plugins/application_swt/lib/application_swt/cucumber_runner.rb +25 -0
- data/plugins/application_swt/lib/application_swt/dialog_adapter.rb +23 -0
- data/plugins/application_swt/lib/application_swt/event_loop.rb +27 -0
- data/plugins/application_swt/lib/application_swt/menu.rb +59 -0
- data/plugins/application_swt/lib/application_swt/menu/binding_translator.rb +39 -0
- data/plugins/application_swt/lib/application_swt/notebook.rb +129 -0
- data/plugins/application_swt/lib/application_swt/notebook/drag_and_drop_listener.rb +71 -0
- data/plugins/application_swt/lib/application_swt/swt/grid_data.rb +11 -0
- data/plugins/application_swt/lib/application_swt/swt_wrapper.rb +106 -0
- data/plugins/application_swt/lib/application_swt/tab.rb +58 -0
- data/plugins/application_swt/lib/application_swt/window.rb +142 -0
- data/plugins/application_swt/plugin.yaml +11 -0
- data/plugins/application_swt/spec/application_swt/menu/binding_translator_spec.rb +45 -0
- data/plugins/application_swt/spec/application_swt/menu_spec.rb +7 -0
- data/plugins/application_swt/spec/spec_helper.rb +18 -0
- data/plugins/application_swt/vendor/swt/linux/dummy +1 -0
- data/plugins/application_swt/vendor/swt/osx/dummy +1 -0
- data/plugins/application_swt/vendor/swt/osx64/dummy +1 -0
- data/plugins/application_swt/vendor/swt/win32/dummy +1 -0
- data/plugins/core/lib/core.rb +29 -0
- data/plugins/core/lib/core/controller.rb +5 -0
- data/plugins/core/lib/core/gui.rb +87 -0
- data/plugins/core/lib/core/logger.rb +25 -0
- data/plugins/core/lib/core/model.rb +9 -0
- data/plugins/core/lib/core/observable.rb +111 -0
- data/plugins/core/lib/core/plugin.rb +5 -0
- data/plugins/core/plugin.yaml +7 -0
- data/plugins/core/spec/core/gui_spec.rb +27 -0
- data/plugins/core/spec/core/observable_spec.rb +104 -0
- data/plugins/core/spec/spec_helper.rb +4 -0
- data/plugins/edit_view/features/multiple_notebooks.feature +77 -0
- data/plugins/edit_view/features/multiple_windows.feature +48 -0
- data/plugins/edit_view/features/new_tab.feature +12 -0
- data/plugins/edit_view/features/step_definitions/key_steps.rb +48 -0
- data/plugins/edit_view/features/step_definitions/notebook_steps.rb +60 -0
- data/plugins/edit_view/features/step_definitions/tab_steps.rb +55 -0
- data/plugins/edit_view/features/step_definitions/window_steps.rb +80 -0
- data/plugins/edit_view/features/support/env.rb +66 -0
- data/plugins/edit_view/lib/edit_view.rb +76 -0
- data/plugins/edit_view/lib/edit_view/command.rb +6 -0
- data/plugins/edit_view/lib/edit_view/document.rb +63 -0
- data/plugins/edit_view/lib/edit_view/edit_tab.rb +29 -0
- data/plugins/edit_view/lib/edit_view/mirror.rb +42 -0
- data/plugins/edit_view/plugin.yaml +14 -0
- data/plugins/edit_view/spec/edit_view/document_spec.rb +77 -0
- data/plugins/edit_view/spec/spec_helper.rb +4 -0
- data/plugins/edit_view_swt/lib/edit_view_swt.rb +170 -0
- data/plugins/edit_view_swt/lib/edit_view_swt/document.rb +31 -0
- data/plugins/edit_view_swt/lib/edit_view_swt/edit_tab.rb +33 -0
- data/plugins/edit_view_swt/plugin.yaml +14 -0
- data/plugins/edit_view_swt/vendor/dummy +1 -0
- data/plugins/edit_view_swt/vendor/java-mateview.rb +12 -0
- data/plugins/project/features/fixtures/winter.txt +1 -0
- data/plugins/project/features/open_and_save_files.feature +22 -0
- data/plugins/project/features/step_definitions/file_steps.rb +24 -0
- data/plugins/project/features/support/env.rb +15 -0
- data/plugins/project/lib/project.rb +79 -0
- data/plugins/project/lib/project/dir_mirror.rb +53 -0
- data/plugins/project/lib/project/file_mirror.rb +70 -0
- data/plugins/project/plugin.yaml +12 -0
- data/plugins/project/spec/project/dir_mirror_spec.rb +76 -0
- data/plugins/project/spec/project/file_mirror_spec.rb +78 -0
- data/plugins/project/spec/spec_helper.rb +4 -0
- data/plugins/redcar/plugin.yaml +20 -0
- data/plugins/redcar/redcar.rb +166 -0
- data/plugins/repl/lib/repl.rb +44 -0
- data/plugins/repl/lib/repl/internal_mirror.rb +98 -0
- data/plugins/repl/plugin.yaml +12 -0
- data/plugins/repl/spec/repl/internal_mirror_spec.rb +147 -0
- data/plugins/repl/spec/spec_helper.rb +4 -0
- data/plugins/tree_view/lib/tree_view.rb +7 -0
- data/plugins/tree_view/lib/tree_view/mirror.rb +74 -0
- data/plugins/tree_view/plugin.yaml +14 -0
- data/plugins/tree_view/spec/spec_helper.rb +4 -0
- data/plugins/tree_view_swt/lib/tree_view_swt.rb +5 -0
- data/plugins/tree_view_swt/plugin.yaml +14 -0
- data/textmate/Bundles/C.tmbundle/Snippets/010_main_______main__.plist +20 -0
- data/textmate/Bundles/C.tmbundle/Snippets/030_for_int_loop___fori__.plist +19 -0
- data/textmate/Bundles/C.tmbundle/Snippets/Include_header_once_only_guard.plist +28 -0
- data/textmate/Bundles/C.tmbundle/Snippets/Typedef.tmSnippet +16 -0
- data/textmate/Bundles/C.tmbundle/Snippets/__1_begin_________1_end_______beginend__.plist +16 -0
- data/textmate/Bundles/C.tmbundle/Snippets/__endif.plist +17 -0
- data/textmate/Bundles/C.tmbundle/Snippets/__ifndef__________define__________endif.tmSnippet +18 -0
- data/textmate/Bundles/C.tmbundle/Snippets/__include________inc__.plist +16 -0
- data/textmate/Bundles/C.tmbundle/Snippets/__pragma_mark___mark__.plist +21 -0
- data/textmate/Bundles/C.tmbundle/Snippets/class______class__.plist +24 -0
- data/textmate/Bundles/C.tmbundle/Snippets/do___while_loop___do__.plist +18 -0
- data/textmate/Bundles/C.tmbundle/Snippets/fprintf_______.tmSnippet +16 -0
- data/textmate/Bundles/C.tmbundle/Snippets/if______if__.plist +19 -0
- data/textmate/Bundles/C.tmbundle/Snippets/namespace______namespace__.plist +20 -0
- data/textmate/Bundles/C.tmbundle/Snippets/next___include________Inc__.plist +16 -0
- data/textmate/Bundles/C.tmbundle/Snippets/printf______printf__.plist +16 -0
- data/textmate/Bundles/C.tmbundle/Snippets/read_file___readF__.plist +23 -0
- data/textmate/Bundles/C.tmbundle/Snippets/std____map___map__.plist +16 -0
- data/textmate/Bundles/C.tmbundle/Snippets/std____vector___v__.plist +16 -0
- data/textmate/Bundles/C.tmbundle/Snippets/struct.plist +19 -0
- data/textmate/Bundles/C.tmbundle/Snippets/template___typename________template__.plist +16 -0
- data/textmate/Bundles/C.tmbundle/Syntaxes/C.plist +1084 -0
- data/textmate/Bundles/C.tmbundle/Syntaxes/C____.plist +521 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/Fixed_Position_Bottom_100___wide_IE6.tmSnippet +18 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/__important_CSS_______.plist +18 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/background____color_image_repeat_attachment_position___background__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/background__attachment___scroll__fixed___background__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/background__color____color__hex___background__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/background__color____color__name___background__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/background__color____color__rgb___background__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/background__color____transparent___background__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/background__image____none___background__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/background__image____url___background__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/background__position____position___background__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/background__repeat____r__r__x__r__y__n__r___background__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border_____size_style_color___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__bottom___size_style_color___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__bottom__color___size_style_color___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__bottom__style___size_style_color___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__bottom__width___size_style_color___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__color___color___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__left___size_style_color___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__left__color___color___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__left__style___style___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__left__width___size___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__right___size_style_color___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__right__color___color___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__right__style___style___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__right__width___size___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__style___style___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__top___size_style_color___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__top__color___color___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__top__style___style___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__top__width___size___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/border__width___width___border__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/clear___value___clear__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/color____color__hex___color__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/color____color__name___color__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/color____color__rgb___color__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/cursor___type___cursor__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/cursor___url___cursor__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/direction___ltr__rtl___direction__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/display___block___display__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/display___common__types___display__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/display___inline___display__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/display___table__types___display__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/filter___AlphaImageLoader___for_IE_PNGs_____background__.plist +19 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/float___left__right__none___float__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/font_____style_variant_weight_size__line__height_font___family___font__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/font___size_font___font__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/font__family_____family___font__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/font__size___size___font__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/font__style_____normal__italic__oblique___font__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/font__variant_____normal__small__caps___font__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/font__weight___weight___font__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/letter__spacing_____length__em___letter__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/letter__spacing_____length__px___letter__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/list__style___type_position_image___list__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/list__style__image___url___list__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/list__style__position___pos___list__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/list__style__type___asian___list__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/list__style__type___marker__list__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/list__style__type___numeric___list__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/list__style__type___other___list__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/list__style__type___roman__alpha__greek___list__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/margin___T_R_B_L___margin__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/margin___V_H___margin__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/margin_____all___margin__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/margin__bottom___length___margin__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/margin__left___length___margin__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/margin__right___length___margin__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/margin__top___length___margin__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/marker__offset___auto___marker__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/marker__offset___length___marker__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/opacity_____for_Safari___FF_and_IE_____opacity__.plist +18 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/overflow___type___overflow__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/padding_____T_R_B_L___padding__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/padding_____V_H___padding__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/padding_____all___padding__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/padding__bottom___length___margin__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/padding__left___length___margin__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/padding__right___length___margin__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/padding__top___length___margin__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/position___type___position__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/properties_______________.plist +19 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/scrollbar.tmSnippet +23 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/selection.tmSnippet +20 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/text__align___left__center__right___txt__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/text__decoration___none__underline__overline__line__through__blink___text__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/text__indent___length___text__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/text__shadow___color__hex_x_y_blur___text__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/text__shadow___color__rgb_x_y_blur___text__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/text__shadow___none___text__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/text__transform___capitalize__upper__lower___text__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/text__transform___none___text__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/vertical__align___type___vertical__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/visibility___type___visibility__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/white__space____normal__pre__nowrap___white__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/word__spacing____length___word__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/word__spacing____normal___word__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Snippets/z__index___index___z__.plist +16 -0
- data/textmate/Bundles/CSS.tmbundle/Syntaxes/CSS.plist +543 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Arrow___arrow__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Backspace___backspace__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Backtab___backtab__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Command___command__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Control___control__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Delete___delete__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/DocType_HTML_4_0_Strict.plist +18 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/DocType_XHTL_1_0_Frameset.plist +18 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/DocType_XHTML_1_0_Strict.plist +18 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/DocType_XHTML_1_0_Transitional.plist +18 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/DocType_XHTML_1_1.plist +18 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Down___down__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Embed_QT_movie___movie__.plist +26 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Emphasize.tmSnippet +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Enter___enter__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Escape___escape__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Fieldset.tmSnippet +22 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/HTML________4_0_Transitional___doctype__.plist +18 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/IE_Conditional_Comment___Internet_Explorer.tmSnippet +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/IE_Conditional_Comment___Internet_Explorer_5_0_only.tmSnippet +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/IE_Conditional_Comment___Internet_Explorer_5_5_only.tmSnippet +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/IE_Conditional_Comment___Internet_Explorer_5_x.tmSnippet +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/IE_Conditional_Comment___Internet_Explorer_6_and_below.tmSnippet +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/IE_Conditional_Comment___Internet_Explorer_6_only.tmSnippet +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/IE_Conditional_Comment___Internet_Explorer_7__.tmSnippet +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/IE_Conditional_Comment___NOT_Internet_Explorer.tmSnippet +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Input_with_Label.tmSnippet +19 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Left___left__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Option.tmSnippet +18 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Option___option__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Return___return__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Right___right__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Select_Box.tmSnippet +22 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Shift___shift__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Smart_return__indent_for_tag_pairs.plist +18 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Strong.tmSnippet +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Tab___tab__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Up___up__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Wrap_Selection_In_Tag.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/Wrap_in___________________.plist +14 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML_____input__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML_____textarea__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___a_mailto_____.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___base__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___body__.plist +18 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___br_____.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___div__.plist +18 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___form__.plist +20 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___h1__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___head__.plist +20 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___link__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___meta__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___nbsp___NonBreakingSpace.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___script__.plist +18 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___script_src_____.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___style__.plist +18 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___table__.plist +19 -0
- data/textmate/Bundles/HTML.tmbundle/Snippets/XHTML___title__.plist +16 -0
- data/textmate/Bundles/HTML.tmbundle/Syntaxes/HTML.plist +962 -0
- data/textmate/Bundles/HTML.tmbundle/Templates/HTML /342/200/223 4.0 Strict/index.html" +15 -0
- data/textmate/Bundles/HTML.tmbundle/Templates/HTML /342/200/223 4.0 Strict/info.plist" +20 -0
- data/textmate/Bundles/HTML.tmbundle/Templates/HTML /342/200/224 4.0 Transitional/index.html" +15 -0
- data/textmate/Bundles/HTML.tmbundle/Templates/HTML /342/200/224 4.0 Transitional/info.plist" +20 -0
- data/textmate/Bundles/HTML.tmbundle/Templates/XHTML /342/200/223 1.0 Frameset/index.html" +16 -0
- data/textmate/Bundles/HTML.tmbundle/Templates/XHTML /342/200/223 1.0 Frameset/info.plist" +16 -0
- data/textmate/Bundles/HTML.tmbundle/Templates/XHTML /342/200/223 1.0 Strict/index.html" +16 -0
- data/textmate/Bundles/HTML.tmbundle/Templates/XHTML /342/200/223 1.0 Strict/info.plist" +16 -0
- data/textmate/Bundles/HTML.tmbundle/Templates/XHTML /342/200/223 1.0 Transitional/index.html" +16 -0
- data/textmate/Bundles/HTML.tmbundle/Templates/XHTML /342/200/223 1.0 Transitional/info.plist" +16 -0
- data/textmate/Bundles/HTML.tmbundle/Templates/XHTML /342/200/223 1.1/index.html" +15 -0
- data/textmate/Bundles/HTML.tmbundle/Templates/XHTML /342/200/223 1.1/info.plist" +16 -0
- data/textmate/Bundles/RedcarRepl.tmbundle/Syntaxes/InternalRuby.plist +54 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/060_ruby_if_else.plist +20 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/070_ruby_if.plist +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/080_ruby_case.plist +19 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/Add_____________Marker.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/Array_new__10________i____________Arr__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/Benchmark_bmbm_______do____end.tmSnippet +19 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/Dir__________.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/Dir_glob___________do___file______end____Dir__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/File_foreach____________do___line______end____File__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/File_open________________file________.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/File_read__________.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/Hash_new______hash___key___hash__key_______________Has__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/Insert_ERb__s______________or_______________.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/Marshal_dump__obj___file______Md__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/Marshal_load__obj______Ml__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/PStore_new________.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/RDoc_documentation_block.tmSnippet +20 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/Wrap_in_Begin________Rescue________End.plist +23 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/YAML_dump_______file______Yd____.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/YAML_load__file______Yl____.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/__END__.tmSnippet +17 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/______usr__local__bin__ruby___w.plist +17 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/__yields___RDoc_comment.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/alias_method_______am__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/all________e____________all__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/any________e____________any__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/application_code_______app__.plist +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert__________as__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_equal.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_in_delta__________asid__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_instance_of__________asio__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_kind_of__________asko__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_match__________asm__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_nil__________asn__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_no_match__________asnm__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_not_equal__________asne__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_not_nil__________asnn__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_not_same__________asns__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_nothing_raised___________________asnr__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_nothing_thrown_____________asnt__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_operator__________aso__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_raise___________________asr__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_respond_to__________asrt__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_same__________ass__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_send__________ass__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/assert_throws___________________ast__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/attr_accessor_______rw__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/attr_reader_______r__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/attr_writer_______w__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/class_______DelegateClass____initialize____end____class__.plist +24 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/class_______ParentClass____initialize____end.plist +22 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/class_______Struct____initialize____end.plist +22 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/class_______Test____Unit____TestCase____end____tc__.plist +24 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/class______self____end.tmSnippet +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/class____end____cla__.plist +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/class____initialize____end.plist +22 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/class____instance_methods____undef____initialize____end____class__.plist +30 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/class_from_name________clafn__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/classify______e____________clas__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/collect______e____________col__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/deep_copy__________dee__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/def_delegator______defd__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/def_delegators______defds__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/def_end.plist +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/def_method_missing____end____mm__.plist +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/def_self____end____defs__.plist +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/def_test_____end____t__.plist +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/delete_if______e____________deli__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/detect______e____________det__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/directory____.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/do___obj______end___doo__.plist +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/downto__0________n____________dow__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/each______e____________ea__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/each_byte______byte____________eab__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/each_char______chr____________eac____.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/each_cons____________group____________eac____.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/each_index______i____________eai__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/each_key______key____________eak__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/each_line______line____________eal__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/each_pair______name___val____________eap__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/each_slice______group____________eas__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/each_value______val____________eav__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/each_with_index______e___i____________eawi__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/elsif____.tmSnippet +17 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/embed_string_variable.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/extend_Forwardable____Forw__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/fetch__name________key____________fet__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/fill__range________i____________fil__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/find______e____________fin__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/find_all______e____________fina__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/flatten_once____fla__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/flunk__________fl__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/grep____pattern__________match____________gre__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/gsub________________match____________gsu__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/hash_pair_______.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/hash_pointer.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/include_Comparable_______Comp__.plist +20 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/include_Enumerable_______Enum__.plist +20 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/inject__init________mem___var____________inj__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/lambda______args____________lam__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/loop_________.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/map______e____________map__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/map_with_index______e___i____________mapwi__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/max______a___b____________max__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/min______a___b____________min__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/module____ClassMethods____end.plist +29 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/module____end.plist +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/module____module_function____end.plist +20 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/namespace______do____end.tmSnippet +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/open____path__or__url_______w_____do___doc______end___ope__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/open_yield_block_______.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/option_parse_____________optp__.plist +43 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/partition______e____________par__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/path_from_here________.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/randomize____ran__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/reject______e____________rej__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/require___________req__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/require___tc____________ts__.plist +20 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/require_gem_______.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/results_report_______________.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/reverse_each______e____________rea__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/scan________________match____________sca__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/select______e____________sel__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/singleton_class____.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/sort______a___b____________sor__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/sort_by______e____________sorb__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/step__2________e____________ste__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/sub________________match____________sub__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/task___task_name__________dependent_____tasks___do____end.tmSnippet +19 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/times______n____________tim__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/transaction_________do____end.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/unix_filter______uni__.plist +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/unless___unless__.plist +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/until_____end.tmSnippet +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/untitled.plist +19 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/upto__1_0__0_0________n____________upt__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/usage_if________usai__.plist +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/usage_unless________usau__.plist +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/when.plist +17 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/while_____end.tmSnippet +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/xmlread______.tmSnippet +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/xpath_______________.tmSnippet +18 -0
- data/textmate/Bundles/Ruby.tmbundle/Snippets/zip__enums________row____________zip__.plist +16 -0
- data/textmate/Bundles/Ruby.tmbundle/Syntaxes/Ruby.plist +2763 -0
- data/textmate/Bundles/Source.tmbundle/Snippets/Continue_line_comment.plist +35 -0
- data/textmate/Bundles/Source.tmbundle/Snippets/Escaped_Quote_Pair_____________.plist +14 -0
- data/textmate/Bundles/Source.tmbundle/Snippets/Escaped_Single_Quote_Pair_____________.plist +14 -0
- data/textmate/Bundles/Source.tmbundle/Snippets/Frame_text.plist +16 -0
- data/textmate/Bundles/Source.tmbundle/Snippets/__n.plist +16 -0
- data/textmate/Bundles/Text.tmbundle/Snippets/010_Copyright.plist +14 -0
- data/textmate/Bundles/Text.tmbundle/Snippets/Conitnue_bullet.plist +17 -0
- data/textmate/Bundles/Text.tmbundle/Snippets/Conitnue_light_bullet.plist +17 -0
- data/textmate/Bundles/Text.tmbundle/Snippets/Conitnue_star_bullet.plist +17 -0
- data/textmate/Bundles/Text.tmbundle/Snippets/Insert_ISO_date.plist +14 -0
- data/textmate/Bundles/Text.tmbundle/Snippets/Lorem_ipsum.plist +14 -0
- data/textmate/Bundles/Text.tmbundle/Syntaxes/Plain_text.plist +83 -0
- data/textmate/Bundles/Text.tmbundle/Templates/Empty file/info.plist +14 -0
- data/textmate/Bundles/Text.tmbundle/Templates/From Clipboard/info.plist +17 -0
- data/textmate/Themes/Active4D.tmTheme +407 -0
- data/textmate/Themes/All Hallow's Eve.tmTheme +277 -0
- data/textmate/Themes/Amy.tmTheme +557 -0
- data/textmate/Themes/Blackboard.tmTheme +350 -0
- data/textmate/Themes/Brilliance Black.tmTheme +2619 -0
- data/textmate/Themes/Brilliance Dull.tmTheme +2243 -0
- data/textmate/Themes/Cobalt.tmTheme +559 -0
- data/textmate/Themes/Dawn.tmTheme +437 -0
- data/textmate/Themes/Eiffel.tmTheme +439 -0
- data/textmate/Themes/Espresso Libre.tmTheme +402 -0
- data/textmate/Themes/IDLE.tmTheme +235 -0
- data/textmate/Themes/LAZY.tmTheme +291 -0
- data/textmate/Themes/Mac Classic.tmTheme +450 -0
- data/textmate/Themes/MagicWB (Amiga).tmTheme +376 -0
- data/textmate/Themes/Pastels on Dark.tmTheme +701 -0
- data/textmate/Themes/Railscasts.tmTheme +278 -0
- data/textmate/Themes/Slush & Poppies.tmTheme +336 -0
- data/textmate/Themes/SpaceCadet.tmTheme +212 -0
- data/textmate/Themes/Sunburst.tmTheme +665 -0
- data/textmate/Themes/Twilight.tmTheme +514 -0
- data/textmate/Themes/Vibrant Ink.tmTheme +447 -0
- data/textmate/Themes/Zenburnesque.tmTheme +343 -0
- data/textmate/Themes/choco.tmTheme +542 -0
- data/textmate/Themes/iPlastic.tmTheme +286 -0
- metadata +673 -0
data/lib/freebase2/notes
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
|
|
2
|
+
FreeBASE Load Sequence
|
|
3
|
+
|
|
4
|
+
FreeBASE::Core.startup {
|
|
5
|
+
Core.new {
|
|
6
|
+
init_bus {
|
|
7
|
+
# - creates the master databus
|
|
8
|
+
# - adds /system/shutdown and /logs/
|
|
9
|
+
}
|
|
10
|
+
load_properties {
|
|
11
|
+
# - unless it already exists, create a properties file
|
|
12
|
+
# from the defaults
|
|
13
|
+
# - set up the version information
|
|
14
|
+
}
|
|
15
|
+
load_setup # - loads the setup.rb file if it exists (specified in the
|
|
16
|
+
# properties file)
|
|
17
|
+
# - gets all plugin paths from /config/plugin_path and adds
|
|
18
|
+
# them to the Ruby path
|
|
19
|
+
conf = Configuration.new {
|
|
20
|
+
YAMLConfigurationReader.new {
|
|
21
|
+
# - loads all plugin.yamls by registering with the conf obj
|
|
22
|
+
# - they are PluginConfiguration objects
|
|
23
|
+
}
|
|
24
|
+
resolve_dependencies {
|
|
25
|
+
# build forward and backward dep stars for each plugin
|
|
26
|
+
# compute_levels for each plugin
|
|
27
|
+
# build load list
|
|
28
|
+
# build start list
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
conf.load_plugins {
|
|
32
|
+
# for each plugin in load list:
|
|
33
|
+
pl = (PluginConfiguration).instance {
|
|
34
|
+
FreeBASE::Plugin.new {
|
|
35
|
+
# - create /plugin/plugin_name/ and add self as manager
|
|
36
|
+
# - create properties manager (with hard coded v "1.0" ??)
|
|
37
|
+
# - create /plugin/plugin_name/log/...
|
|
38
|
+
# - set state = UNLOADED
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
pl.load {
|
|
42
|
+
# - transition to LOADING
|
|
43
|
+
# - require the plugins load path
|
|
44
|
+
# - create the plugin module
|
|
45
|
+
# - hit module.load (this is what you can override)
|
|
46
|
+
# - cancel the transition if there was an error
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
conf.start_plugins {
|
|
50
|
+
# for each plugin in load list:
|
|
51
|
+
pl = (PluginConfiguration).instance # cached
|
|
52
|
+
pl.start
|
|
53
|
+
}
|
|
54
|
+
# - set /system/state/all_plugins_loaded to true
|
|
55
|
+
# - call /system/ui/messagepump
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
Properties
|
|
60
|
+
|
|
61
|
+
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
module FreeBASE
|
|
2
|
+
module RAA
|
|
3
|
+
##
|
|
4
|
+
# THe WEBrick_Plugin class provides an HTTP handling capability
|
|
5
|
+
# for FreeBASE-based applications. Uses the WEBrick library.
|
|
6
|
+
#
|
|
7
|
+
class WEBrick_Plugin
|
|
8
|
+
|
|
9
|
+
extend FreeBASE::StandardPlugin
|
|
10
|
+
#include WEBrick
|
|
11
|
+
|
|
12
|
+
##
|
|
13
|
+
# Try and load the webrick library, and fail plugin transition
|
|
14
|
+
# if it cannot be found. Called from FreeBASE::Plugin.
|
|
15
|
+
#
|
|
16
|
+
# plugin:: [FreeBASE::Plugin] The plugin instance
|
|
17
|
+
#
|
|
18
|
+
def self.load(plugin)
|
|
19
|
+
begin
|
|
20
|
+
require "webrick"
|
|
21
|
+
plugin.transition(FreeBASE::LOADED)
|
|
22
|
+
rescue LoadError
|
|
23
|
+
plugin.transition_failure
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
##
|
|
28
|
+
# Start the Web server. Called from FreeBASE::Plugin.
|
|
29
|
+
#
|
|
30
|
+
# plugin:: [FreeBASE::Plugin] The plugin instance
|
|
31
|
+
#
|
|
32
|
+
def self.start(plugin)
|
|
33
|
+
WEBrick_Plugin.new(plugin)
|
|
34
|
+
plugin.transition(FreeBASE::RUNNING)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
##
|
|
38
|
+
# Stop the Web server. Called from FreeBASE::Plugin.
|
|
39
|
+
#
|
|
40
|
+
# plugin:: [FreeBASE::Plugin] The plugin instance
|
|
41
|
+
#
|
|
42
|
+
def self.stop(plugin)
|
|
43
|
+
begin
|
|
44
|
+
plugin["service"].manager.shutdown
|
|
45
|
+
rescue => detail
|
|
46
|
+
end
|
|
47
|
+
plugin.transition(FreeBASE::LOADED)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def initialize(plugin)
|
|
51
|
+
@plugin = plugin
|
|
52
|
+
@httpd = WEBrick::HTTPServer.new(
|
|
53
|
+
:BindAddress => "0.0.0.0",
|
|
54
|
+
:Port => @plugin.properties["port"].to_i,
|
|
55
|
+
:DocumentRoot => File.join(@plugin.plugin_configuration.base_path, @plugin.properties["web_path"]),
|
|
56
|
+
:Logger => plugin["/log"].manager)
|
|
57
|
+
Thread.new {@httpd.start}
|
|
58
|
+
plugin["service"].manager=@httpd
|
|
59
|
+
plugin["/protocols/http"].manager = self
|
|
60
|
+
plugin["/protocols/http"].subscribe self
|
|
61
|
+
load_slots(plugin["/protocols/http"])
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
##
|
|
65
|
+
# Mount a block to handle http requests at the supplied path
|
|
66
|
+
# path:: [String] The path to handle requests at
|
|
67
|
+
# fileSpec:: [String=nil] The path to serve files from (must be directory)
|
|
68
|
+
# &block:: [Block] The (optional) handler
|
|
69
|
+
#
|
|
70
|
+
# Usage:
|
|
71
|
+
# db["/protocols/http"].manager.mount("/foo/bar") do |request, response|
|
|
72
|
+
# response['content-type'] = "text/html"
|
|
73
|
+
# response.body = "<html><body>Hello World!</html>"
|
|
74
|
+
# end
|
|
75
|
+
# #or
|
|
76
|
+
# db["/protocols/http"].manager.mount("/index.html", "public_html")
|
|
77
|
+
#
|
|
78
|
+
def mount(path, fileSpec=nil, &block)
|
|
79
|
+
path = "/"+path unless path[0]==47 # 47 = '/'
|
|
80
|
+
if fileSpec
|
|
81
|
+
@plugin["/protocols/http#{path}"].data=fileSpec
|
|
82
|
+
else
|
|
83
|
+
@plugin["/protocols/http#{path}"].set_proc &block
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def databus_notify(event, slot)
|
|
88
|
+
if event == :notify_data_set
|
|
89
|
+
@plugin.log_info << "mount path #{slot.path[15..-1]} - #{slot.data}"
|
|
90
|
+
@httpd.mount(slot.path[15..-1], WEBrick::HTTPServlet::FileHandler, slot.data, true)
|
|
91
|
+
elsif event == :notify_proc_set
|
|
92
|
+
@plugin.log_info << "mount proc #{slot.path[15..-1]}"
|
|
93
|
+
@httpd.mount_proc(slot.path[15..-1]) do |request, response|
|
|
94
|
+
begin
|
|
95
|
+
slot.call(request, response)
|
|
96
|
+
rescue
|
|
97
|
+
response['content-type'] = "text/html"
|
|
98
|
+
response.body="<html><body><H1>Exception caught in #{slot.path[15..-1]}</h1><br><B>#{$!}</B><br>#{$!.backtrace.join('<BR>')}</html>"
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def load_slots(base)
|
|
105
|
+
base.each_slot do |slot|
|
|
106
|
+
if slot.is_proc_slot?
|
|
107
|
+
@plugin.log_info << "mount proc #{slot.path[15..-1]}"
|
|
108
|
+
@httpd.mount_proc(slot.path[15..-1]) do |request, response|
|
|
109
|
+
begin
|
|
110
|
+
slot.call(request, response)
|
|
111
|
+
rescue
|
|
112
|
+
response['content-type'] = "text/html"
|
|
113
|
+
response.body="<html><body><H1>Exception caught in #{slot.path[15..-1]}</h1><br><B>#{$!}</B><br>#{$!.backtrace.join('<BR>')}</html>"
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
elsif slot.is_data_slot?
|
|
117
|
+
@plugin.log_info << "mount path #{slot.path[15..-1]} - #{slot.data}"
|
|
118
|
+
@httpd.mount(slot.path[15..-1], WEBrick::HTTPServlet::FileHandler, slot.data, false)
|
|
119
|
+
end
|
|
120
|
+
load_slots(slot)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
|
|
2
|
+
require "xmlrpc/contrib/rpcservlet"
|
|
3
|
+
|
|
4
|
+
module FreeBASE
|
|
5
|
+
|
|
6
|
+
module RAA
|
|
7
|
+
|
|
8
|
+
##
|
|
9
|
+
# THe XMLRPC_Plugin class provides an XML-RPC handling capability
|
|
10
|
+
# for FreeBASE-based applications. Uses the xmlrpc4r library.
|
|
11
|
+
#
|
|
12
|
+
class XMLRPC_Plugin
|
|
13
|
+
extend FreeBASE::StandardPlugin
|
|
14
|
+
|
|
15
|
+
##
|
|
16
|
+
# Start the XML RPC service. Called from FreeBASE::Plugin.
|
|
17
|
+
#
|
|
18
|
+
# plugin:: [FreeBASE::Plugin] The plugin instance
|
|
19
|
+
#
|
|
20
|
+
def self.start(plugin)
|
|
21
|
+
XMLRPC_Plugin.new(plugin)
|
|
22
|
+
plugin.transition(FreeBASE::RUNNING)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def initialize(plugin)
|
|
26
|
+
@plugin = plugin
|
|
27
|
+
@rpcservlet = XMLRPC::Servlet.new
|
|
28
|
+
@plugin["service"].manager = @rpcservlet
|
|
29
|
+
plugin["/protocols/xmlrpc"].manager = self
|
|
30
|
+
plugin["/protocols/xmlrpc"].subscribe self
|
|
31
|
+
@plugin["/protocols/http/RPC2"].data = @rpcservlet
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def bind_RPC(prefix, obj_or_signature=nil, &block)
|
|
35
|
+
if block_given?
|
|
36
|
+
@plugin["/protocols/xmlrpc/#{prefix}"].set_proc &block
|
|
37
|
+
else
|
|
38
|
+
@plugin["/protocols/xmlrpc/#{prefix}"].data = obj_or_signature
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def databus_notify(event, slot)
|
|
43
|
+
if event == :notify_data_set
|
|
44
|
+
@plugin.log_info << "mount rpc path #{slot.name} - #{slot.data}"
|
|
45
|
+
@rpcservlet.add_handler(slot.name, slot.data)
|
|
46
|
+
elsif event == :notify_proc_set
|
|
47
|
+
@plugin.log_info << "mount rpc block #{slot.name}"
|
|
48
|
+
@rpcservlet.add_handler(slot.name, &(slot.proc.get_proc))
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This directory holds unit tests for the FreeBASE module
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
== 1.1.1 / 2009-11-08
|
|
2
|
+
|
|
3
|
+
* 1 bug fix
|
|
4
|
+
* Catching script errors and standard errors when loading plugins
|
|
5
|
+
|
|
6
|
+
== 1.1.0 / 2009-11-04
|
|
7
|
+
|
|
8
|
+
* 2 minor enhancements
|
|
9
|
+
* Loading the first plugin found by name (instead of the last)
|
|
10
|
+
* Plugins can be disregarded so they will not be loaded
|
|
11
|
+
|
|
12
|
+
== 1.0.1 / 2009-08-14
|
|
13
|
+
|
|
14
|
+
* 1 bug fix
|
|
15
|
+
* Using the wrong file extension for the File#basename call
|
|
16
|
+
|
|
17
|
+
== 1.0.0 / 2009-07-16
|
|
18
|
+
|
|
19
|
+
* 1 major enhancement
|
|
20
|
+
* Birthday!
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
|
|
2
|
+
begin
|
|
3
|
+
require 'bones'
|
|
4
|
+
rescue LoadError
|
|
5
|
+
abort '### please install the "bones" gem ###'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
ensure_in_path 'lib'
|
|
9
|
+
require 'little-plugger'
|
|
10
|
+
|
|
11
|
+
task :default => 'spec:specdoc'
|
|
12
|
+
task 'gem:release' => 'spec:run'
|
|
13
|
+
|
|
14
|
+
Bones {
|
|
15
|
+
name 'little-plugger'
|
|
16
|
+
authors 'Tim Pease'
|
|
17
|
+
email 'tim.pease@gmail.com'
|
|
18
|
+
url 'http://gemcutter.org/gems/little-plugger'
|
|
19
|
+
version LittlePlugger::VERSION
|
|
20
|
+
readme_file 'README.rdoc'
|
|
21
|
+
ignore_file '.gitignore'
|
|
22
|
+
rubyforge.name 'codeforpeople'
|
|
23
|
+
|
|
24
|
+
spec.opts << '--color'
|
|
25
|
+
|
|
26
|
+
use_gmail
|
|
27
|
+
enable_sudo
|
|
28
|
+
|
|
29
|
+
depend_on 'rspec', :development => true
|
|
30
|
+
depend_on 'bones-git', :development => true
|
|
31
|
+
depend_on 'bones-extras', :development => true
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
# EOF
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
|
|
2
|
+
# == Synopsis
|
|
3
|
+
# LittlePlugger is a module that provides Gem based plugin management.
|
|
4
|
+
# By extending your own class or module with LittlePlugger you can easily
|
|
5
|
+
# manage the loading and initializing of plugins provided by other gems.
|
|
6
|
+
#
|
|
7
|
+
# == Details
|
|
8
|
+
# Plugins are great! They allow other developers to add functionality to
|
|
9
|
+
# an application but relieve the application developer of the responsibility
|
|
10
|
+
# for mainting some other developer's plugin code. LittlePlugger aims to
|
|
11
|
+
# make it dead simple to manage external plugins as gems.
|
|
12
|
+
#
|
|
13
|
+
# === Naming
|
|
14
|
+
# Every plugin managed by LittlePlugger will have a name represented as a
|
|
15
|
+
# Symbol. This name is used to register the plugin, load the plugin file,
|
|
16
|
+
# and manage the plugin class/module. Here are the three rules for plugin
|
|
17
|
+
# names:
|
|
18
|
+
#
|
|
19
|
+
# 1) all lowercase with underscores
|
|
20
|
+
# 2) maps to a file of the same name with an '.rb' extension
|
|
21
|
+
# 3) converting the name to camel case yields the plugin class / module
|
|
22
|
+
#
|
|
23
|
+
# These rules are essentially the standard ruby practice of naming files
|
|
24
|
+
# after the class / module the file defines.
|
|
25
|
+
#
|
|
26
|
+
# === Finding & Loading
|
|
27
|
+
# Plugins are found by searching through the lib folders of all installed
|
|
28
|
+
# gems; these gems are not necessarily loaded - just searched. If the lib
|
|
29
|
+
# folder has a subdirectory that matches the +plugin_path+, then all ruby
|
|
30
|
+
# files in the gem's +plugin_path+ are noted for later loading.
|
|
31
|
+
#
|
|
32
|
+
# A file is only loaded if the basename of the file matches one of the
|
|
33
|
+
# registered plugin names. If no plugins are registered, then every file in
|
|
34
|
+
# the +plugin_path+ is loaded.
|
|
35
|
+
#
|
|
36
|
+
# The plugin classes / modules are all expected to live in the same
|
|
37
|
+
# namespace for a particular application. For example, all plugins for the
|
|
38
|
+
# "Foo" application should reside in a "Foo::Plugins" namespace. This allows
|
|
39
|
+
# the plugins to be automatically initialized by LittlePlugger.
|
|
40
|
+
#
|
|
41
|
+
# === Initializing
|
|
42
|
+
# Optionally, plugins can provide an initialization method for running any
|
|
43
|
+
# setup code needed by the plugin. This initialize method should be named as
|
|
44
|
+
# follows: "initializer_#{plugin_name}" where the name of the plugin is
|
|
45
|
+
# appended to the end of the initializer method name.
|
|
46
|
+
#
|
|
47
|
+
# If this method exists, it will be called automatically when plugins are
|
|
48
|
+
# loaded. The order of loading of initialization is not strictly defined, so
|
|
49
|
+
# do not rely on another plugin being initialized for your own plugin
|
|
50
|
+
# successfully initialize.
|
|
51
|
+
#
|
|
52
|
+
# == Usage
|
|
53
|
+
# LittlePlugger is used by extending your own class or module with the
|
|
54
|
+
# LittlePlugger module.
|
|
55
|
+
#
|
|
56
|
+
# module Logging
|
|
57
|
+
# extend LittlePlugger
|
|
58
|
+
# end
|
|
59
|
+
#
|
|
60
|
+
# This defines a +plugin_path+ and a +plugin_module+ for our Logging module.
|
|
61
|
+
# The +plugin_path+ is set to "logging/plugins", and therefore, the
|
|
62
|
+
# +plugin_modlue+ is defined as Logging::Plugins. All plugins for the
|
|
63
|
+
# Logging module should be found underneath this plugin module.
|
|
64
|
+
#
|
|
65
|
+
# The plugins for the Logging module are loaded and initialized by calling
|
|
66
|
+
# the +initialize_plugins+ method.
|
|
67
|
+
#
|
|
68
|
+
# Logging.initialize_plugins
|
|
69
|
+
#
|
|
70
|
+
# If you only want to load the plugin files but not initialize the plugin
|
|
71
|
+
# classes / modules then you can call the +load_plugins+ method.
|
|
72
|
+
#
|
|
73
|
+
# Logging.load_plugins
|
|
74
|
+
#
|
|
75
|
+
# Finally, you can get a hash of all the loaded plugins.
|
|
76
|
+
#
|
|
77
|
+
# Logging.plugins
|
|
78
|
+
#
|
|
79
|
+
# This returns a hash keyed by the plugin names with the plugin class /
|
|
80
|
+
# module as the value.
|
|
81
|
+
#
|
|
82
|
+
# If you only want a certain set of plugins to be loaded, then pass the
|
|
83
|
+
# names to the +plugin+ method.
|
|
84
|
+
#
|
|
85
|
+
# Logging.plugin :foo, :bar, :baz
|
|
86
|
+
#
|
|
87
|
+
# Now only three plugins for the Logging module will be loaded.
|
|
88
|
+
#
|
|
89
|
+
# === Customizing
|
|
90
|
+
# LittlePlugger allows the use of a custom plugin path and module. These are
|
|
91
|
+
# specified when extending with LilttlePlugger by passing the specific path
|
|
92
|
+
# and module to LittlePlugger.
|
|
93
|
+
#
|
|
94
|
+
# class Hoe
|
|
95
|
+
# extend LittlePlugger( :path => 'hoe', :module => Hoe )
|
|
96
|
+
#
|
|
97
|
+
# plugin(
|
|
98
|
+
# :clean, :debug, :deps, :flay, :flog, :package,
|
|
99
|
+
# :publish, :rcov, :signing, :test
|
|
100
|
+
# )
|
|
101
|
+
# end
|
|
102
|
+
#
|
|
103
|
+
# All ruby files found under the "hoe" directory will be treated as
|
|
104
|
+
# plugins, and the plugin classes / modules should reside directly under the
|
|
105
|
+
# Hoe namespace.
|
|
106
|
+
#
|
|
107
|
+
# We also specify a list of plugins to be loaded. Only these plugins will be
|
|
108
|
+
# loaded and initialized by the LittlePlugger module. The +plugin+ method
|
|
109
|
+
# can be called multiple times to add more plugins.
|
|
110
|
+
#
|
|
111
|
+
module LittlePlugger
|
|
112
|
+
|
|
113
|
+
VERSION = '1.1.1' # :nodoc:
|
|
114
|
+
|
|
115
|
+
# Returns the version string for the library.
|
|
116
|
+
#
|
|
117
|
+
def self.version
|
|
118
|
+
VERSION
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
module ClassMethods
|
|
122
|
+
|
|
123
|
+
# Add the _names_ to the list of plugins that will be loaded.
|
|
124
|
+
#
|
|
125
|
+
def plugin( *names )
|
|
126
|
+
plugin_names.concat(names.map! {|n| n.to_sym})
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# Add the _names_ to the list of plugins that will *not* be loaded. This
|
|
130
|
+
# list prevents the plugin system from loading unwanted or unneeded
|
|
131
|
+
# plugins.
|
|
132
|
+
#
|
|
133
|
+
# If a plugin name appears in both the 'disregard_plugin' list and the
|
|
134
|
+
# 'plugin' list, the disregard list takes precedence; that is, the plugin
|
|
135
|
+
# will not be loaded.
|
|
136
|
+
#
|
|
137
|
+
def disregard_plugin( *names )
|
|
138
|
+
@disregard_plugin ||= []
|
|
139
|
+
@disregard_plugin.concat(names.map! {|n| n.to_sym})
|
|
140
|
+
@disregard_plugin
|
|
141
|
+
end
|
|
142
|
+
alias :disregard_plugins :disregard_plugin
|
|
143
|
+
|
|
144
|
+
# Returns the array of plugin names that will be loaded. If the array is
|
|
145
|
+
# empty, then any plugin found in the +plugin_path+ will be loaded.
|
|
146
|
+
#
|
|
147
|
+
def plugin_names
|
|
148
|
+
@plugin_names ||= []
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# Loads the desired plugins and returns a hash. The hash contains all
|
|
152
|
+
# the plugin classes and modules keyed by the plugin name.
|
|
153
|
+
#
|
|
154
|
+
def plugins
|
|
155
|
+
load_plugins
|
|
156
|
+
pm = plugin_module
|
|
157
|
+
names = pm.constants.map { |s| s.to_s }
|
|
158
|
+
names.reject! { |n| n =~ %r/^[A-Z_]+$/ }
|
|
159
|
+
|
|
160
|
+
h = {}
|
|
161
|
+
names.each do |name|
|
|
162
|
+
sym = ::LittlePlugger.underscore(name).to_sym
|
|
163
|
+
next unless plugin_names.empty? or plugin_names.include? sym
|
|
164
|
+
next if disregard_plugins.include? sym
|
|
165
|
+
h[sym] = pm.const_get name
|
|
166
|
+
end
|
|
167
|
+
h
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# Iterate over the loaded plugin classes and modules and call the
|
|
171
|
+
# initialize method for each plugin. The plugin's initialize method is
|
|
172
|
+
# defeind as +initialize_plugin_name+, where the plugin name is unique
|
|
173
|
+
# to each plugin.
|
|
174
|
+
#
|
|
175
|
+
def initialize_plugins
|
|
176
|
+
plugins.each do |name, klass|
|
|
177
|
+
msg = "initialize_#{name}"
|
|
178
|
+
klass.send msg if klass.respond_to? msg
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
# Iterate through all installed gems looking for those that have the
|
|
183
|
+
# +plugin_path+ in their "lib" folder, and load all .rb files found in
|
|
184
|
+
# the gem's plugin path. Each .rb file should define one class or module
|
|
185
|
+
# that will be used as a plugin.
|
|
186
|
+
#
|
|
187
|
+
def load_plugins
|
|
188
|
+
@loaded ||= {}
|
|
189
|
+
found = {}
|
|
190
|
+
|
|
191
|
+
Gem.find_files(File.join(plugin_path, '*.rb')).each do |path|
|
|
192
|
+
name = File.basename(path, '.rb').to_sym
|
|
193
|
+
found[name] = path unless found.key? name
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
:keep_on_truckin while found.map { |name, path|
|
|
197
|
+
next unless plugin_names.empty? or plugin_names.include? name
|
|
198
|
+
next if disregard_plugins.include? name
|
|
199
|
+
next if @loaded[name]
|
|
200
|
+
begin
|
|
201
|
+
@loaded[name] = load path
|
|
202
|
+
rescue ScriptError, StandardError => err
|
|
203
|
+
warn "Error loading #{path.inspect}: #{err.message}. skipping..."
|
|
204
|
+
end
|
|
205
|
+
}.any?
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
# The path to search in a gem's 'lib' folder for plugins.
|
|
209
|
+
#
|
|
210
|
+
def plugin_path
|
|
211
|
+
::LittlePlugger.default_plugin_path(self)
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
# This module or class where plugins are located.
|
|
215
|
+
#
|
|
216
|
+
def plugin_module
|
|
217
|
+
::LittlePlugger.default_plugin_module(plugin_path)
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
end # module ClassMethods
|
|
221
|
+
|
|
222
|
+
# :stopdoc:
|
|
223
|
+
|
|
224
|
+
# Called when another object extends itself with LittlePlugger.
|
|
225
|
+
#
|
|
226
|
+
def self.extended( other )
|
|
227
|
+
other.extend ClassMethods
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
# Convert the given string from camel case to snake case. Method liberally
|
|
231
|
+
# stolen from ActiveSupport.
|
|
232
|
+
#
|
|
233
|
+
# underscore( "FooBar" ) #=> "foo_bar"
|
|
234
|
+
#
|
|
235
|
+
def self.underscore( string )
|
|
236
|
+
string.to_s.
|
|
237
|
+
gsub(%r/::/, '/').
|
|
238
|
+
gsub(%r/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
|
239
|
+
gsub(%r/([a-z\d])([A-Z])/,'\1_\2').
|
|
240
|
+
tr('-', '_').
|
|
241
|
+
downcase
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
# For a given object returns a default plugin path. The path is
|
|
245
|
+
# created by splitting the object's class name on the namespace separator
|
|
246
|
+
# "::" and converting each part of the namespace into an underscored
|
|
247
|
+
# string (see the +underscore+ method). The strings are then joined using
|
|
248
|
+
# the File#join method to give a filesystem path. Appended to this path is
|
|
249
|
+
# the 'plugins' directory.
|
|
250
|
+
#
|
|
251
|
+
# default_plugin_path( FooBar::Baz ) #=> "foo_bar/baz/plugins"
|
|
252
|
+
#
|
|
253
|
+
def self.default_plugin_path( obj )
|
|
254
|
+
obj = obj.class unless obj.is_a? Module
|
|
255
|
+
File.join(underscore(obj.name), 'plugins')
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
# For a given path returns the class or module corresponding to the
|
|
259
|
+
# path. This method assumes a correspondence between directory names and
|
|
260
|
+
# Ruby namespaces.
|
|
261
|
+
#
|
|
262
|
+
# default_plugin_module( "foo_bar/baz/plugins" ) #=> FooBar::Baz::Plugins
|
|
263
|
+
#
|
|
264
|
+
# This method will fail if any of the namespaces have not yet been
|
|
265
|
+
# defined.
|
|
266
|
+
#
|
|
267
|
+
def self.default_plugin_module( path )
|
|
268
|
+
path.split(File::SEPARATOR).inject(Object) do |mod, const|
|
|
269
|
+
const = const.split('_').map { |s| s.capitalize }.join
|
|
270
|
+
mod.const_get const
|
|
271
|
+
end
|
|
272
|
+
end
|
|
273
|
+
# :startdoc:
|
|
274
|
+
|
|
275
|
+
end # module LittlePlugger
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
module Kernel
|
|
279
|
+
|
|
280
|
+
# call-seq:
|
|
281
|
+
# LittlePlugger( opts = {} )
|
|
282
|
+
#
|
|
283
|
+
# This method allows the user to override some of LittlePlugger's default
|
|
284
|
+
# settings when mixed into a module or class.
|
|
285
|
+
#
|
|
286
|
+
# See the "Customizing" section of the LittlePlugger documentation for an
|
|
287
|
+
# example of how this method is used.
|
|
288
|
+
#
|
|
289
|
+
# ==== Options
|
|
290
|
+
#
|
|
291
|
+
# * :path <String>
|
|
292
|
+
# The default plugin path. Defaults to "module_name/plugins".
|
|
293
|
+
#
|
|
294
|
+
# * :module <Module>
|
|
295
|
+
# The module where plugins will be loaded. Defaults to
|
|
296
|
+
# ModuleName::Plugins.
|
|
297
|
+
#
|
|
298
|
+
# * :plugins <Array>
|
|
299
|
+
# The array of default plugins to load. Only the plugins listed in this
|
|
300
|
+
# array will be loaded by LittlePlugger.
|
|
301
|
+
#
|
|
302
|
+
def LittlePlugger( opts = {} )
|
|
303
|
+
return ::LittlePlugger::ClassMethods if opts.empty?
|
|
304
|
+
Module.new {
|
|
305
|
+
include ::LittlePlugger::ClassMethods
|
|
306
|
+
|
|
307
|
+
if opts.key?(:path)
|
|
308
|
+
eval %Q{def plugin_path() #{opts[:path].to_s.inspect} end}
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
if opts.key?(:module)
|
|
312
|
+
eval %Q{def plugin_module() #{opts[:module].name} end}
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
if opts.key?(:plugins)
|
|
316
|
+
plugins = Array(opts[:plugins]).map {|val| val.to_sym.inspect}.join(',')
|
|
317
|
+
eval %Q{def plugin_names() @plugin_names ||= [#{plugins}] end}
|
|
318
|
+
end
|
|
319
|
+
}
|
|
320
|
+
end
|
|
321
|
+
end # module Kernel
|
|
322
|
+
|
|
323
|
+
# EOF
|