sleipnir-api 0.2.1 → 0.3.0
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/History.txt +32 -0
 - data/Manifest.txt +20 -3
 - data/Rakefile +11 -1
 - data/TODO.txt +4 -10
 - data/bin/grepnir +1 -1
 - data/examples/close_dup.rb +1 -1
 - data/examples/close_err.rb +12 -0
 - data/examples/command_list.rb +135 -0
 - data/examples/open_last_url_by_firefox.rb +44 -0
 - data/examples/open_selected_links.rb +40 -0
 - data/helper/rake.rb +3 -57
 - data/helper/rake/rake.rb +58 -0
 - data/helper/{rake_sh_filter.rb → rake/rake_sh_filter.rb} +0 -0
 - data/helper/{util.rb → rake/util.rb} +0 -0
 - data/lib/sleipnir_api/cli/grepnir.rb +2 -3
 - data/lib/sleipnir_api/command.rb +126 -0
 - data/lib/sleipnir_api/commands.rb +264 -0
 - data/lib/sleipnir_api/profile.rb +166 -27
 - data/lib/sleipnir_api/profile/ini.rb +202 -0
 - data/lib/sleipnir_api/profile/key.rb +120 -0
 - data/lib/sleipnir_api/profile/section.rb +147 -0
 - data/lib/sleipnir_api/profile/util.rb +82 -0
 - data/lib/sleipnir_api/searcher.rb +133 -0
 - data/lib/sleipnir_api/security.rb +88 -18
 - data/lib/sleipnir_api/sleipnir.rb +91 -7
 - data/lib/sleipnir_api/tab.rb +68 -2
 - data/lib/sleipnir_api/tabbed_ie.rb +33 -0
 - data/lib/sleipnir_api/util.rb +25 -0
 - data/lib/sleipnir_api/version.rb +2 -2
 - data/scripts/gesture2rb.rb +42 -0
 - data/scripts/make_gesture.rb +271 -0
 - data/scripts/subcategory.csv +253 -0
 - data/spec/sleipnir_api/profile_mock_spec.rb +80 -6
 - data/spec/sleipnir_api/profile_section_mock_spec.rb +143 -0
 - data/spec/sleipnir_api/profile_spec.rb +191 -0
 - data/spec/sleipnir_api/security_spec.rb +58 -0
 - data/spec/sleipnir_api/tab_mock_spec.rb +0 -5
 - data/spec/sleipnir_api/tab_spec.rb +27 -0
 - data/spec/spec_helper.rb +20 -0
 - metadata +22 -5
 - data/helper/helper.rb +0 -3
 
    
        data/History.txt
    CHANGED
    
    | 
         @@ -1,3 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            == 0.3.0 / 2007-09-23
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * API changes:
         
     | 
| 
      
 4 
     | 
    
         
            +
              * SleipnirAPI::Tab
         
     | 
| 
      
 5 
     | 
    
         
            +
                +search+:: support Sleipnir 2.x.
         
     | 
| 
      
 6 
     | 
    
         
            +
              * SleipnirAPI::Security
         
     | 
| 
      
 7 
     | 
    
         
            +
                +enable?+:: support multiple arguments.
         
     | 
| 
      
 8 
     | 
    
         
            +
                +disable?+:: ditto.
         
     | 
| 
      
 9 
     | 
    
         
            +
              * SleipnirAPI::Sleipnir
         
     | 
| 
      
 10 
     | 
    
         
            +
                +profile+:: support default keyword arguments.
         
     | 
| 
      
 11 
     | 
    
         
            +
                +exec_command+:: support SleipnirAPI::Command object.
         
     | 
| 
      
 12 
     | 
    
         
            +
            * New API:
         
     | 
| 
      
 13 
     | 
    
         
            +
              * SleipnirAPI::Command
         
     | 
| 
      
 14 
     | 
    
         
            +
                * new class to represent Sleipnir menu commands.
         
     | 
| 
      
 15 
     | 
    
         
            +
                  it can specify SleipnirAPI::Sleipnir#exec_command.
         
     | 
| 
      
 16 
     | 
    
         
            +
              * SleipnirAPI::Profile::Ini
         
     | 
| 
      
 17 
     | 
    
         
            +
                * new class to represent ini file.
         
     | 
| 
      
 18 
     | 
    
         
            +
              * SleipnirAPI::Profile::Seciton
         
     | 
| 
      
 19 
     | 
    
         
            +
                * new class to represent ini section.
         
     | 
| 
      
 20 
     | 
    
         
            +
              * SleipnirAPI::Profile::Key
         
     | 
| 
      
 21 
     | 
    
         
            +
                * new class to represent ini section key.
         
     | 
| 
      
 22 
     | 
    
         
            +
              * SleipnirAPI::Profile
         
     | 
| 
      
 23 
     | 
    
         
            +
                +ini+:: get SleipnirAPI::Profile::Ini object.
         
     | 
| 
      
 24 
     | 
    
         
            +
              * SleipnirAPI::Tab
         
     | 
| 
      
 25 
     | 
    
         
            +
                +watir+:: get Watir object [experimental].
         
     | 
| 
      
 26 
     | 
    
         
            +
                +elem_by_tag+:: get IHTMLElement. (shortcut of document.getElementsByTagName).
         
     | 
| 
      
 27 
     | 
    
         
            +
                +base_uri+:: get document base (<base> or location.href).
         
     | 
| 
      
 28 
     | 
    
         
            +
                +base_uris+:: get base uri in <head>.
         
     | 
| 
      
 29 
     | 
    
         
            +
              * SleipnirAPI::Security
         
     | 
| 
      
 30 
     | 
    
         
            +
                +enable!+:: set security config.
         
     | 
| 
      
 31 
     | 
    
         
            +
                +disable!+:: ditto.
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
       1 
33 
     | 
    
         
             
            == 0.2.1 / 2007-07-30
         
     | 
| 
       2 
34 
     | 
    
         | 
| 
       3 
35 
     | 
    
         
             
            * grepnir:
         
     | 
    
        data/Manifest.txt
    CHANGED
    
    | 
         @@ -6,27 +6,42 @@ Rakefile 
     | 
|
| 
       6 
6 
     | 
    
         
             
            TODO.txt
         
     | 
| 
       7 
7 
     | 
    
         
             
            bin/grepnir
         
     | 
| 
       8 
8 
     | 
    
         
             
            examples/close_dup.rb
         
     | 
| 
      
 9 
     | 
    
         
            +
            examples/close_err.rb
         
     | 
| 
      
 10 
     | 
    
         
            +
            examples/command_list.rb
         
     | 
| 
      
 11 
     | 
    
         
            +
            examples/open_last_url_by_firefox.rb
         
     | 
| 
      
 12 
     | 
    
         
            +
            examples/open_selected_links.rb
         
     | 
| 
       9 
13 
     | 
    
         
             
            examples/reload.rb
         
     | 
| 
       10 
     | 
    
         
            -
            helper/helper.rb
         
     | 
| 
       11 
14 
     | 
    
         
             
            helper/rake.rb
         
     | 
| 
       12 
     | 
    
         
            -
            helper/ 
     | 
| 
       13 
     | 
    
         
            -
            helper/ 
     | 
| 
      
 15 
     | 
    
         
            +
            helper/rake/rake.rb
         
     | 
| 
      
 16 
     | 
    
         
            +
            helper/rake/rake_sh_filter.rb
         
     | 
| 
      
 17 
     | 
    
         
            +
            helper/rake/util.rb
         
     | 
| 
       14 
18 
     | 
    
         
             
            lib/sleipnir_api.rb
         
     | 
| 
       15 
19 
     | 
    
         
             
            lib/sleipnir_api/cli/base.rb
         
     | 
| 
       16 
20 
     | 
    
         
             
            lib/sleipnir_api/cli/grepnir.rb
         
     | 
| 
      
 21 
     | 
    
         
            +
            lib/sleipnir_api/command.rb
         
     | 
| 
      
 22 
     | 
    
         
            +
            lib/sleipnir_api/commands.rb
         
     | 
| 
       17 
23 
     | 
    
         
             
            lib/sleipnir_api/dialog.rb
         
     | 
| 
       18 
24 
     | 
    
         
             
            lib/sleipnir_api/key_state.rb
         
     | 
| 
       19 
25 
     | 
    
         
             
            lib/sleipnir_api/output.rb
         
     | 
| 
       20 
26 
     | 
    
         
             
            lib/sleipnir_api/process.rb
         
     | 
| 
       21 
27 
     | 
    
         
             
            lib/sleipnir_api/profile.rb
         
     | 
| 
      
 28 
     | 
    
         
            +
            lib/sleipnir_api/profile/ini.rb
         
     | 
| 
      
 29 
     | 
    
         
            +
            lib/sleipnir_api/profile/key.rb
         
     | 
| 
      
 30 
     | 
    
         
            +
            lib/sleipnir_api/profile/section.rb
         
     | 
| 
      
 31 
     | 
    
         
            +
            lib/sleipnir_api/profile/util.rb
         
     | 
| 
       22 
32 
     | 
    
         
             
            lib/sleipnir_api/registry.rb
         
     | 
| 
      
 33 
     | 
    
         
            +
            lib/sleipnir_api/searcher.rb
         
     | 
| 
       23 
34 
     | 
    
         
             
            lib/sleipnir_api/security.rb
         
     | 
| 
       24 
35 
     | 
    
         
             
            lib/sleipnir_api/sleipnir.rb
         
     | 
| 
       25 
36 
     | 
    
         
             
            lib/sleipnir_api/tab.rb
         
     | 
| 
      
 37 
     | 
    
         
            +
            lib/sleipnir_api/tabbed_ie.rb
         
     | 
| 
       26 
38 
     | 
    
         
             
            lib/sleipnir_api/util.rb
         
     | 
| 
       27 
39 
     | 
    
         
             
            lib/sleipnir_api/version.rb
         
     | 
| 
       28 
40 
     | 
    
         
             
            lib/sleipnir_api/win32api.rb
         
     | 
| 
      
 41 
     | 
    
         
            +
            scripts/gesture2rb.rb
         
     | 
| 
      
 42 
     | 
    
         
            +
            scripts/make_gesture.rb
         
     | 
| 
       29 
43 
     | 
    
         
             
            scripts/rdoc_filter.rb
         
     | 
| 
      
 44 
     | 
    
         
            +
            scripts/subcategory.csv
         
     | 
| 
       30 
45 
     | 
    
         
             
            setup.rb
         
     | 
| 
       31 
46 
     | 
    
         
             
            spec/dsl/behaviour_eval.rb
         
     | 
| 
       32 
47 
     | 
    
         
             
            spec/matchers/exit_with.rb
         
     | 
| 
         @@ -36,6 +51,8 @@ spec/sleipnir_api/dialog_mock_spec.rb 
     | 
|
| 
       36 
51 
     | 
    
         
             
            spec/sleipnir_api/key_state_mock_spec.rb
         
     | 
| 
       37 
52 
     | 
    
         
             
            spec/sleipnir_api/output_spec.rb
         
     | 
| 
       38 
53 
     | 
    
         
             
            spec/sleipnir_api/profile_mock_spec.rb
         
     | 
| 
      
 54 
     | 
    
         
            +
            spec/sleipnir_api/profile_section_mock_spec.rb
         
     | 
| 
      
 55 
     | 
    
         
            +
            spec/sleipnir_api/profile_spec.rb
         
     | 
| 
       39 
56 
     | 
    
         
             
            spec/sleipnir_api/registry_spec.rb
         
     | 
| 
       40 
57 
     | 
    
         
             
            spec/sleipnir_api/security_mock_spec.rb
         
     | 
| 
       41 
58 
     | 
    
         
             
            spec/sleipnir_api/security_spec.rb
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -18,7 +18,7 @@ rescue LoadError 
     | 
|
| 
       18 
18 
     | 
    
         
             
              exit
         
     | 
| 
       19 
19 
     | 
    
         
             
            end
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
            require 'helper/ 
     | 
| 
      
 21 
     | 
    
         
            +
            require 'helper/rake'
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
            include FileUtils
         
     | 
| 
       24 
24 
     | 
    
         
             
            require File.join(File.dirname(__FILE__), 'lib', 'sleipnir_api', 'version')
         
     | 
| 
         @@ -28,8 +28,12 @@ EMAIL = "miyamuko@gmail.com" 
     | 
|
| 
       28 
28 
     | 
    
         
             
            DESCRIPTION = "Ruby interface to the Sleipnir COM API"
         
     | 
| 
       29 
29 
     | 
    
         
             
            GEM_NAME = 'sleipnir-api' # what ppl will type to install your gem
         
     | 
| 
       30 
30 
     | 
    
         
             
            RDOC_DIR = "./html"
         
     | 
| 
      
 31 
     | 
    
         
            +
            EXAMPLES_DIR = "#{RDOC_DIR}/examples"
         
     | 
| 
       31 
32 
     | 
    
         
             
            NEWS_FILE = "news.txt"
         
     | 
| 
       32 
33 
     | 
    
         | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            directory EXAMPLES_DIR
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
       33 
37 
     | 
    
         
             
            @config_file = "~/.rubyforge/user-config.yml"
         
     | 
| 
       34 
38 
     | 
    
         
             
            @config = nil
         
     | 
| 
       35 
39 
     | 
    
         
             
            def rubyforge_username
         
     | 
| 
         @@ -148,6 +152,12 @@ Rake::RDocTask.new(:docs) do |rd| 
     | 
|
| 
       148 
152 
     | 
    
         
             
              rd.options << '--charset=UTF-8'
         
     | 
| 
       149 
153 
     | 
    
         
             
            end
         
     | 
| 
       150 
154 
     | 
    
         | 
| 
      
 155 
     | 
    
         
            +
            desc "Build the command list HTML Files."
         
     | 
| 
      
 156 
     | 
    
         
            +
            task :example => [EXAMPLES_DIR] do
         
     | 
| 
      
 157 
     | 
    
         
            +
              sh "ruby examples/command_list.rb > #{EXAMPLES_DIR}/exec_command.html"
         
     | 
| 
      
 158 
     | 
    
         
            +
            end
         
     | 
| 
      
 159 
     | 
    
         
            +
            task :docs => [:example]
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
       151 
161 
     | 
    
         
             
            # remove HTML comment and so on.
         
     | 
| 
       152 
162 
     | 
    
         
             
            task :docs do
         
     | 
| 
       153 
163 
     | 
    
         
             
              ruby "scripts/rdoc_filter.rb #{RDOC_DIR}/**/*.html"
         
     | 
    
        data/TODO.txt
    CHANGED
    
    | 
         @@ -1,16 +1,12 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            == TODO
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            *  
     | 
| 
      
 3 
     | 
    
         
            +
            * hilight を自前で実装する
         
     | 
| 
       4 
4 
     | 
    
         
             
              * Sleipnir 2.x じゃサポートしていない
         
     | 
| 
       5 
5 
     | 
    
         
             
              * 1.66 で hilight を同じページに対して何回も実行するとだんだん重くなる
         
     | 
| 
       6 
6 
     | 
    
         
             
            * watir サポート
         
     | 
| 
       7 
     | 
    
         
            -
              *  
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                * ie.document                  == DispHTMLDocument == pnir.document
         
     | 
| 
       11 
     | 
    
         
            -
                * ie.parentWindow              == DispHTMLWindow2  == pnir.window
         
     | 
| 
       12 
     | 
    
         
            -
            * ipnir
         
     | 
| 
       13 
     | 
    
         
            -
              * intaractive sleipnir shell
         
     | 
| 
      
 7 
     | 
    
         
            +
              * test
         
     | 
| 
      
 8 
     | 
    
         
            +
            * pnirsh
         
     | 
| 
      
 9 
     | 
    
         
            +
              * sleipnir shell
         
     | 
| 
       14 
10 
     | 
    
         
             
            * JavaScript の実行
         
     | 
| 
       15 
11 
     | 
    
         
             
            * Sleipnir の起動・終了を WMI を使わずに実装。
         
     | 
| 
       16 
12 
     | 
    
         
             
            * Sleipnir の終了時に Window Handle をちゃんと見る。
         
     | 
| 
         @@ -23,6 +19,4 @@ 
     | 
|
| 
       23 
19 
     | 
    
         
             
              * dRuby
         
     | 
| 
       24 
20 
     | 
    
         
             
              * Rinda
         
     | 
| 
       25 
21 
     | 
    
         
             
              * Gearman
         
     | 
| 
       26 
     | 
    
         
            -
            * ExecCommand
         
     | 
| 
       27 
     | 
    
         
            -
              * コマンドの一覧
         
     | 
| 
       28 
22 
     | 
    
         
             
            * Sleipnir 2.x のサポート
         
     | 
    
        data/bin/grepnir
    CHANGED
    
    
    
        data/examples/close_dup.rb
    CHANGED
    
    | 
         @@ -3,7 +3,7 @@ require "set" 
     | 
|
| 
       3 
3 
     | 
    
         
             
            $LOAD_PATH << File.join(File.dirname(__FILE__), "../lib")
         
     | 
| 
       4 
4 
     | 
    
         
             
            require "sleipnir_api"
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
            SleipnirAPI. 
     | 
| 
      
 6 
     | 
    
         
            +
            SleipnirAPI.connect do |pnir|
         
     | 
| 
       7 
7 
     | 
    
         
             
              url2tab = pnir.to_set.classify{|e| e.document.URL }.select{|url,tabs| tabs.size > 1 }
         
     | 
| 
       8 
8 
     | 
    
         
             
              url2tab.each do |url,tabs|
         
     | 
| 
       9 
9 
     | 
    
         
             
                tabs.sort_by{|e|
         
     | 
| 
         @@ -0,0 +1,135 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            $KCODE = "s"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require "erb"
         
     | 
| 
      
 4 
     | 
    
         
            +
            require "optparse"
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            $LOAD_PATH << File.join(File.dirname(__FILE__), "../lib")
         
     | 
| 
      
 7 
     | 
    
         
            +
            require "sleipnir_api"
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            puts ERB.new(DATA.read, 0, "%<>").result(binding)
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            __END__
         
     | 
| 
      
 12 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 13 
     | 
    
         
            +
            <head>
         
     | 
| 
      
 14 
     | 
    
         
            +
              <title>Sleipnir.API - ExecCommand �Ɏw��\�ȃR�}���h�̈ꗗ</title>
         
     | 
| 
      
 15 
     | 
    
         
            +
              <meta http-equiv="Content-type" content="text/html; charset=Shift_JIS" />
         
     | 
| 
      
 16 
     | 
    
         
            +
              <style type="text/css">
         
     | 
| 
      
 17 
     | 
    
         
            +
                <!--
         
     | 
| 
      
 18 
     | 
    
         
            +
                  body {
         
     | 
| 
      
 19 
     | 
    
         
            +
                    color: #16160e;
         
     | 
| 
      
 20 
     | 
    
         
            +
                    background: #fffffc;
         
     | 
| 
      
 21 
     | 
    
         
            +
                  }
         
     | 
| 
      
 22 
     | 
    
         
            +
                  input {
         
     | 
| 
      
 23 
     | 
    
         
            +
                    width: 10em;
         
     | 
| 
      
 24 
     | 
    
         
            +
                  }
         
     | 
| 
      
 25 
     | 
    
         
            +
                  table, th, td {
         
     | 
| 
      
 26 
     | 
    
         
            +
                    border-collapse: collapse;
         
     | 
| 
      
 27 
     | 
    
         
            +
                    border: 1px solid #e9dfe5;
         
     | 
| 
      
 28 
     | 
    
         
            +
                  }
         
     | 
| 
      
 29 
     | 
    
         
            +
                  th {
         
     | 
| 
      
 30 
     | 
    
         
            +
                    background: #fdeff2;
         
     | 
| 
      
 31 
     | 
    
         
            +
                  }
         
     | 
| 
      
 32 
     | 
    
         
            +
                  th, td {
         
     | 
| 
      
 33 
     | 
    
         
            +
                    padding: 4px;
         
     | 
| 
      
 34 
     | 
    
         
            +
                  }
         
     | 
| 
      
 35 
     | 
    
         
            +
                  #search {
         
     | 
| 
      
 36 
     | 
    
         
            +
                    color: #393f4c;
         
     | 
| 
      
 37 
     | 
    
         
            +
                    width: 100%;
         
     | 
| 
      
 38 
     | 
    
         
            +
                  }
         
     | 
| 
      
 39 
     | 
    
         
            +
                  -->
         
     | 
| 
      
 40 
     | 
    
         
            +
              </style>
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
              <script type="text/javascript">
         
     | 
| 
      
 43 
     | 
    
         
            +
                <!--
         
     | 
| 
      
 44 
     | 
    
         
            +
                  var data = {};
         
     | 
| 
      
 45 
     | 
    
         
            +
            % SleipnirAPI::Command.each_with_index do |cmd,i|
         
     | 
| 
      
 46 
     | 
    
         
            +
                  data["c<%= i %>"] = ["<%= cmd.command_id %>", <%= cmd.path.map{|e| e.downcase.inspect }.join(", ") %>];
         
     | 
| 
      
 47 
     | 
    
         
            +
            <% end %>
         
     | 
| 
      
 48 
     | 
    
         
            +
                  var cache = {};
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                  function lookup(names, q) {
         
     | 
| 
      
 51 
     | 
    
         
            +
                    var queries = q.toLowerCase().split(/\s+/);
         
     | 
| 
      
 52 
     | 
    
         
            +
                    for (var i = 0; i < queries.length; i++) {
         
     | 
| 
      
 53 
     | 
    
         
            +
                      if (!lookup1(names, queries[i])) {
         
     | 
| 
      
 54 
     | 
    
         
            +
                        return false;
         
     | 
| 
      
 55 
     | 
    
         
            +
                      }
         
     | 
| 
      
 56 
     | 
    
         
            +
                    }
         
     | 
| 
      
 57 
     | 
    
         
            +
                    return true;
         
     | 
| 
      
 58 
     | 
    
         
            +
                  }
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                  function lookup1(names, query) {
         
     | 
| 
      
 61 
     | 
    
         
            +
                    for (var i = 0; i < names.length; i++) {
         
     | 
| 
      
 62 
     | 
    
         
            +
                      if (names[i].indexOf(query) > -1) {
         
     | 
| 
      
 63 
     | 
    
         
            +
                        return true;
         
     | 
| 
      
 64 
     | 
    
         
            +
                      }
         
     | 
| 
      
 65 
     | 
    
         
            +
                    }
         
     | 
| 
      
 66 
     | 
    
         
            +
                    return false;
         
     | 
| 
      
 67 
     | 
    
         
            +
                  }
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                  function do_search(q) {
         
     | 
| 
      
 70 
     | 
    
         
            +
                    for (var key in data) {
         
     | 
| 
      
 71 
     | 
    
         
            +
                      var names = data[key];
         
     | 
| 
      
 72 
     | 
    
         
            +
                      var e = cache[key] = cache[key] || document.getElementById(key);
         
     | 
| 
      
 73 
     | 
    
         
            +
                      if (e != undefined && lookup(names, q)) {
         
     | 
| 
      
 74 
     | 
    
         
            +
                        e.style.display = "";
         
     | 
| 
      
 75 
     | 
    
         
            +
                      } else {
         
     | 
| 
      
 76 
     | 
    
         
            +
                        e.style.display = "none";
         
     | 
| 
      
 77 
     | 
    
         
            +
                      }
         
     | 
| 
      
 78 
     | 
    
         
            +
                    }
         
     | 
| 
      
 79 
     | 
    
         
            +
                  }
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                  function setup_event() {
         
     | 
| 
      
 82 
     | 
    
         
            +
                    var input = document.getElementById("search");
         
     | 
| 
      
 83 
     | 
    
         
            +
                    input.onfocus = function() {
         
     | 
| 
      
 84 
     | 
    
         
            +
                      if (input.value == "Search...") {
         
     | 
| 
      
 85 
     | 
    
         
            +
                        input.value = "";
         
     | 
| 
      
 86 
     | 
    
         
            +
                        input.style.color = "black";
         
     | 
| 
      
 87 
     | 
    
         
            +
                      }
         
     | 
| 
      
 88 
     | 
    
         
            +
                    };
         
     | 
| 
      
 89 
     | 
    
         
            +
                    input.onblur = function() {
         
     | 
| 
      
 90 
     | 
    
         
            +
                      if (input.value == "") {
         
     | 
| 
      
 91 
     | 
    
         
            +
                        input.value = "search";
         
     | 
| 
      
 92 
     | 
    
         
            +
                        input.style.color = "#393f4c";
         
     | 
| 
      
 93 
     | 
    
         
            +
                      }
         
     | 
| 
      
 94 
     | 
    
         
            +
                    };
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                    var form = document.getElementById("search_box");
         
     | 
| 
      
 97 
     | 
    
         
            +
                    form.onsubmit = function() {
         
     | 
| 
      
 98 
     | 
    
         
            +
                      var q = input.value;
         
     | 
| 
      
 99 
     | 
    
         
            +
                      input.style.backgroundColor = "#f6bfbc";
         
     | 
| 
      
 100 
     | 
    
         
            +
                      window.setTimeout(function () {
         
     | 
| 
      
 101 
     | 
    
         
            +
                        do_search(q);
         
     | 
| 
      
 102 
     | 
    
         
            +
                        input.style.backgroundColor = "";
         
     | 
| 
      
 103 
     | 
    
         
            +
                        input.focus();
         
     | 
| 
      
 104 
     | 
    
         
            +
                      }, 100);
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
                      return false;
         
     | 
| 
      
 107 
     | 
    
         
            +
                    };
         
     | 
| 
      
 108 
     | 
    
         
            +
                  }
         
     | 
| 
      
 109 
     | 
    
         
            +
                  -->
         
     | 
| 
      
 110 
     | 
    
         
            +
              </script>
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
            </head>
         
     | 
| 
      
 113 
     | 
    
         
            +
            <body onload="setup_event();">
         
     | 
| 
      
 114 
     | 
    
         
            +
              <h1>Sleipnir.API - ExecCommand �Ɏw��\�ȃR�}���h�̈ꗗ</h1>
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
              <p>Sleipnir 1.66 �p�ł��B2.x �� ExecCommand ���T�|�[�g���Ă��܂���B</p>
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
              <form id="search_box">
         
     | 
| 
      
 119 
     | 
    
         
            +
                <input accesskey="a" id="search" value="Search..."/>
         
     | 
| 
      
 120 
     | 
    
         
            +
              </form>
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
              <table style="width: 100%">
         
     | 
| 
      
 123 
     | 
    
         
            +
                <tr>
         
     | 
| 
      
 124 
     | 
    
         
            +
                  <th style="width: 20%">�R�}���h ID</th>
         
     | 
| 
      
 125 
     | 
    
         
            +
                  <th style="width: 80%">�R�}���h</th>
         
     | 
| 
      
 126 
     | 
    
         
            +
                </tr>
         
     | 
| 
      
 127 
     | 
    
         
            +
            % SleipnirAPI::Command.each_with_index do |cmd,i|
         
     | 
| 
      
 128 
     | 
    
         
            +
                <tr id="c<%= i %>">
         
     | 
| 
      
 129 
     | 
    
         
            +
                  <td><%= cmd.command_id %></td>
         
     | 
| 
      
 130 
     | 
    
         
            +
                  <td><%= cmd.path.join(" �� ") %></td>
         
     | 
| 
      
 131 
     | 
    
         
            +
                </tr>
         
     | 
| 
      
 132 
     | 
    
         
            +
            % end
         
     | 
| 
      
 133 
     | 
    
         
            +
              </table>
         
     | 
| 
      
 134 
     | 
    
         
            +
            </body>
         
     | 
| 
      
 135 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1,44 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "timeout"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "win32ole"
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "win32/registry"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            $LOAD_PATH << File.join(File.dirname(__FILE__), "../lib")
         
     | 
| 
      
 6 
     | 
    
         
            +
            require "sleipnir_api"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            class Firefox
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              def initialize
         
     | 
| 
      
 11 
     | 
    
         
            +
                @exe = find_exe
         
     | 
| 
      
 12 
     | 
    
         
            +
                @wsh = WIN32OLE.new("WScript.Shell")
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              def open(url, wait = true)
         
     | 
| 
      
 16 
     | 
    
         
            +
                @wsh.Exec("#{@exe} #{url}")
         
     | 
| 
      
 17 
     | 
    
         
            +
                wait_for_activate if wait
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              def wait_for_activate(timeout = 30)
         
     | 
| 
      
 21 
     | 
    
         
            +
                timeout(timeout) {
         
     | 
| 
      
 22 
     | 
    
         
            +
                  sleep(0.2) until @wsh.AppActivate(" - Mozilla Firefox")
         
     | 
| 
      
 23 
     | 
    
         
            +
                }
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              def find_exe
         
     | 
| 
      
 27 
     | 
    
         
            +
                Win32::Registry.open(Win32::Registry::HKEY_LOCAL_MACHINE, "SOFTWARE\\Mozilla\\Mozilla Firefox") do |reg|
         
     | 
| 
      
 28 
     | 
    
         
            +
                  curr = reg.read_s("CurrentVersion")
         
     | 
| 
      
 29 
     | 
    
         
            +
                  reg.open("#{curr}\\Main") do |r|
         
     | 
| 
      
 30 
     | 
    
         
            +
                    return r.read_s("PathToExe")
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            SleipnirAPI.connect do |pnir|
         
     | 
| 
      
 37 
     | 
    
         
            +
              last_url = pnir.profile.LastWnd.LastWindow2.Item0_URL.list
         
     | 
| 
      
 38 
     | 
    
         
            +
              break if last_url.empty?
         
     | 
| 
      
 39 
     | 
    
         
            +
              firefox = Firefox.new
         
     | 
| 
      
 40 
     | 
    
         
            +
              last_url.each do |url|
         
     | 
| 
      
 41 
     | 
    
         
            +
                firefox.open(url)
         
     | 
| 
      
 42 
     | 
    
         
            +
                sleep(0.5)
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "uri"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            $LOAD_PATH << File.join(File.dirname(__FILE__), "../lib")
         
     | 
| 
      
 4 
     | 
    
         
            +
            require "sleipnir_api"
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            def traverse_elem(elem, &block)
         
     | 
| 
      
 7 
     | 
    
         
            +
              elem.childNodes.each do |child|
         
     | 
| 
      
 8 
     | 
    
         
            +
                case child.nodeName
         
     | 
| 
      
 9 
     | 
    
         
            +
                when "#text"
         
     | 
| 
      
 10 
     | 
    
         
            +
                  # ignore
         
     | 
| 
      
 11 
     | 
    
         
            +
                else
         
     | 
| 
      
 12 
     | 
    
         
            +
                  block.call(child)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  traverse_elem(child, &block)
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            SleipnirAPI.connect do |pnir|
         
     | 
| 
      
 19 
     | 
    
         
            +
              links = []
         
     | 
| 
      
 20 
     | 
    
         
            +
              pnir.active_tab.document {|doc|
         
     | 
| 
      
 21 
     | 
    
         
            +
                selection = doc.Selection
         
     | 
| 
      
 22 
     | 
    
         
            +
                break if selection.Type == "None"
         
     | 
| 
      
 23 
     | 
    
         
            +
                div = doc.createElement("div")
         
     | 
| 
      
 24 
     | 
    
         
            +
                div.innerHTML = selection.createRange.HtmlText
         
     | 
| 
      
 25 
     | 
    
         
            +
                base = URI(pnir.active_tab.base_uri)
         
     | 
| 
      
 26 
     | 
    
         
            +
                traverse_elem(div) do |e|
         
     | 
| 
      
 27 
     | 
    
         
            +
                  case e.nodeName
         
     | 
| 
      
 28 
     | 
    
         
            +
                  when "BASE"
         
     | 
| 
      
 29 
     | 
    
         
            +
                    base = URI(e["href"])
         
     | 
| 
      
 30 
     | 
    
         
            +
                  when "A"
         
     | 
| 
      
 31 
     | 
    
         
            +
                    links << (base + e["href"]).to_s
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
              }
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              (links - pnir.map{|e| e.location.href }).uniq.each do |link|
         
     | 
| 
      
 37 
     | 
    
         
            +
                puts "open #{link}"
         
     | 
| 
      
 38 
     | 
    
         
            +
                pnir.open(link, false)
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
            end
         
     | 
    
        data/helper/rake.rb
    CHANGED
    
    | 
         @@ -1,58 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require " 
     | 
| 
       2 
     | 
    
         
            -
            require "rake"
         
     | 
| 
      
 1 
     | 
    
         
            +
            require "helper/rake/util"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "helper/rake/rake"
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "helper/rake/rake_sh_filter"
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            def tasks
         
     | 
| 
       5 
     | 
    
         
            -
              Rake.application.instance_eval { @tasks }
         
     | 
| 
       6 
     | 
    
         
            -
            end
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            def current_scope
         
     | 
| 
       9 
     | 
    
         
            -
              Rake.application.instance_eval { @scope.last }
         
     | 
| 
       10 
     | 
    
         
            -
            end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            def task_defined?(task_name)
         
     | 
| 
       13 
     | 
    
         
            -
              Rake::Task.task_defined?(task_name)
         
     | 
| 
       14 
     | 
    
         
            -
            end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
            def remove_tasks(*task_names)
         
     | 
| 
       17 
     | 
    
         
            -
              task_names.flatten.each do |task_name|
         
     | 
| 
       18 
     | 
    
         
            -
                remove_task(task_name)
         
     | 
| 
       19 
     | 
    
         
            -
              end
         
     | 
| 
       20 
     | 
    
         
            -
            end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
            def remove_task(task_name)
         
     | 
| 
       23 
     | 
    
         
            -
              tasks.delete(task_name.to_s)
         
     | 
| 
       24 
     | 
    
         
            -
            end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
            def lookup_task(task_name)
         
     | 
| 
       27 
     | 
    
         
            -
              Rake::Task[task_name] rescue nil
         
     | 
| 
       28 
     | 
    
         
            -
            end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
            def rakecall(task_name)
         
     | 
| 
       31 
     | 
    
         
            -
              lookup_task(task_name).invoke
         
     | 
| 
       32 
     | 
    
         
            -
            end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
            def override_task(task_args, &block)
         
     | 
| 
       35 
     | 
    
         
            -
              task_name, deps = Rake.application.resolve_args(task_args)
         
     | 
| 
       36 
     | 
    
         
            -
              original = lookup_task(task_name)
         
     | 
| 
       37 
     | 
    
         
            -
              orgproc = lambda {} # nop
         
     | 
| 
       38 
     | 
    
         
            -
              if original
         
     | 
| 
       39 
     | 
    
         
            -
                Rake.application.last_comment = original.comment
         
     | 
| 
       40 
     | 
    
         
            -
                deps |= original.prerequisites
         
     | 
| 
       41 
     | 
    
         
            -
                orgproc = lambda{ original.execute }
         
     | 
| 
       42 
     | 
    
         
            -
              end
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
              remove_task(task_name)
         
     | 
| 
       45 
     | 
    
         
            -
              Rake::Task.define_task(task_name => deps) do |t|
         
     | 
| 
       46 
     | 
    
         
            -
                block.call(t, orgproc)
         
     | 
| 
       47 
     | 
    
         
            -
              end
         
     | 
| 
       48 
     | 
    
         
            -
            end
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
            def task_for_windows(task_args, &block)
         
     | 
| 
       51 
     | 
    
         
            -
              override_task(task_args) do |t, org|
         
     | 
| 
       52 
     | 
    
         
            -
                if windows?
         
     | 
| 
       53 
     | 
    
         
            -
                  block.call(t)
         
     | 
| 
       54 
     | 
    
         
            -
                else
         
     | 
| 
       55 
     | 
    
         
            -
                  org.call
         
     | 
| 
       56 
     | 
    
         
            -
                end
         
     | 
| 
       57 
     | 
    
         
            -
              end
         
     | 
| 
       58 
     | 
    
         
            -
            end
         
     |