win32ole-pp 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +5 -0
- data/License.txt +20 -0
- data/Manifest.txt +8 -1
- data/README.txt +16 -35
- data/Rakefile +115 -50
- data/examples/idl.rb +25 -0
- data/examples/oletype.rb +8 -0
- data/helper/helper.rb +3 -0
- data/helper/rake.rb +58 -0
- data/helper/rake_sh_filter.rb +23 -0
- data/helper/util.rb +19 -0
- data/lib/win32ole_pp/extentions/common.rb +10 -0
- data/lib/win32ole_pp/extentions/win32ole_event.rb +2 -2
- data/lib/win32ole_pp/extentions/win32ole_method.rb +5 -1
- data/lib/win32ole_pp/extentions/win32ole_param.rb +14 -8
- data/lib/win32ole_pp/extentions/win32ole_type.rb +6 -6
- data/lib/win32ole_pp/init.rb +2 -0
- data/lib/win32ole_pp/version.rb +1 -1
- data/scripts/rdoc_filter.rb +59 -0
- data/test/test_win32ole_method.rb +2 -2
- data/test/test_win32ole_type.rb +6 -6
- metadata +22 -19
- data/CHANGELOG.txt +0 -14
data/History.txt
CHANGED
data/License.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2007 MIYAMUKO Katsuyuki <mailto:miyamuko@gmail.com>
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Manifest.txt
CHANGED
@@ -1,9 +1,15 @@
|
|
1
|
-
CHANGELOG.txt
|
2
1
|
History.txt
|
2
|
+
License.txt
|
3
3
|
Manifest.txt
|
4
4
|
README.txt
|
5
5
|
Rakefile
|
6
|
+
examples/idl.rb
|
7
|
+
examples/oletype.rb
|
6
8
|
examples/test.rb
|
9
|
+
helper/helper.rb
|
10
|
+
helper/rake.rb
|
11
|
+
helper/rake_sh_filter.rb
|
12
|
+
helper/util.rb
|
7
13
|
lib/win32ole_pp.rb
|
8
14
|
lib/win32ole_pp/extentions.rb
|
9
15
|
lib/win32ole_pp/extentions/common.rb
|
@@ -17,6 +23,7 @@ lib/win32ole_pp/init.rb
|
|
17
23
|
lib/win32ole_pp/pp.rb
|
18
24
|
lib/win32ole_pp/to_s.rb
|
19
25
|
lib/win32ole_pp/version.rb
|
26
|
+
scripts/rdoc_filter.rb
|
20
27
|
setup.rb
|
21
28
|
test/helper.rb
|
22
29
|
test/test_version.rb
|
data/README.txt
CHANGED
@@ -1,21 +1,12 @@
|
|
1
|
-
== win32ole-pp
|
1
|
+
== win32ole-pp - Pretty Printer for WIN32OLE
|
2
2
|
|
3
|
-
|
4
|
-
* Home URL: http://win32ole-pp.rubyforge.org
|
5
|
-
* Project URL: http://rubyforge.org/projects/win32ole-pp
|
6
|
-
|
7
|
-
=== DESCRIPTION:
|
3
|
+
=== DESCRIPTION
|
8
4
|
|
9
5
|
win32ole-pp provides smart #to_s and pretty printer for WIN32OLE object.
|
10
6
|
|
11
7
|
This library helps to develop/debug WIN32OLE applications.
|
12
8
|
|
13
|
-
===
|
14
|
-
|
15
|
-
* add WIN32OLE#pretty_print method for pp.
|
16
|
-
* override WIN32OLE#to_s.
|
17
|
-
|
18
|
-
=== SYNOPSIS:
|
9
|
+
=== SYNOPSIS
|
19
10
|
|
20
11
|
require "pp"
|
21
12
|
require "win32ole"
|
@@ -121,36 +112,26 @@ This library helps to develop/debug WIN32OLE applications.
|
|
121
112
|
end
|
122
113
|
|
123
114
|
|
124
|
-
=== REQUIREMENTS
|
115
|
+
=== REQUIREMENTS
|
125
116
|
|
126
117
|
* pp (standard library)
|
127
118
|
* win32ole (standard library)
|
128
119
|
|
129
|
-
=== INSTALL
|
120
|
+
=== INSTALL
|
130
121
|
|
131
122
|
gem install win32ole-pp
|
132
123
|
|
133
|
-
===
|
134
|
-
|
135
|
-
win32ole-pp is released under the MIT license.
|
124
|
+
=== COPYRIGHT
|
136
125
|
|
137
126
|
Copyright (c) 2007 MIYAMUKO Katsuyuki.
|
138
127
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
151
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
152
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
153
|
-
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
154
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
155
|
-
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
156
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
128
|
+
win32ole-pp is released under an MIT license.
|
129
|
+
See {License.txt}[link:files/License_txt.html] for full license.
|
130
|
+
|
131
|
+
|
132
|
+
=== OTHER STUFF
|
133
|
+
|
134
|
+
Author:: MIYAMUKO Katsuyuki <mailto:miyamuko@gmail.com>
|
135
|
+
Home URL:: http://win32ole-pp.rubyforge.org
|
136
|
+
Project URL:: http://rubyforge.org/projects/win32ole-pp
|
137
|
+
Blog (Japanese):: {id:miyamuko}[http://d.hatena.ne.jp/miyamuko/]
|
data/Rakefile
CHANGED
@@ -1,92 +1,157 @@
|
|
1
1
|
# -*- ruby -*-
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
|
-
require '
|
4
|
+
require 'rake'
|
5
|
+
require 'rake/clean'
|
6
|
+
require 'rake/testtask'
|
7
|
+
require 'rake/packagetask'
|
8
|
+
require 'rake/gempackagetask'
|
9
|
+
require 'rake/rdoctask'
|
5
10
|
require 'rake/contrib/rubyforgepublisher'
|
6
|
-
require '
|
11
|
+
require 'fileutils'
|
12
|
+
require 'hoe'
|
7
13
|
|
14
|
+
require './lib/win32ole_pp/version.rb'
|
15
|
+
require 'helper/helper.rb'
|
8
16
|
|
17
|
+
AUTHOR = 'MIYAMUKO Katsuyuki' # can also be an array of Authors
|
18
|
+
EMAIL = "miyamuko@gmail.com"
|
19
|
+
GEM_NAME = 'win32ole-pp'
|
9
20
|
RUBYFORGE_PROJECT = 'win32ole-pp'
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
}
|
21
|
+
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
22
|
+
DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
|
23
|
+
NEWS_FILE = "news.txt"
|
24
|
+
|
25
|
+
VERS = WIN32OLE_PP::VERSION::STRING
|
26
|
+
CLEAN.include ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store', '**/.cache', NEWS_FILE]
|
27
|
+
|
28
|
+
@config_file = "~/.rubyforge/user-config.yml"
|
29
|
+
@config = nil
|
30
|
+
def rubyforge_username
|
31
|
+
unless @config
|
32
|
+
begin
|
33
|
+
@config = YAML.load(File.read(File.expand_path(@config_file)))
|
34
|
+
rescue
|
35
|
+
puts "ERROR: No rubyforge config file found: #{@config_file}"
|
36
|
+
puts "Run 'rubyforge setup' to prepare your env for access to Rubyforge"
|
37
|
+
exit
|
38
|
+
end
|
39
|
+
end
|
40
|
+
@rubyforge_username ||= @config["username"]
|
31
41
|
end
|
32
42
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
43
|
+
class Hoe
|
44
|
+
def extra_deps
|
45
|
+
@extra_deps.reject!{|x| Array(x).first == 'hoe' }
|
46
|
+
@extra_deps
|
47
|
+
end
|
38
48
|
end
|
39
49
|
|
40
|
-
|
41
|
-
Hoe.new(RUBYFORGE_PROJECT, WIN32OLE_PP::VERSION::STRING) do |p|
|
50
|
+
hoe = Hoe.new(RUBYFORGE_PROJECT, VERS) do |p|
|
42
51
|
p.rubyforge_name = RUBYFORGE_PROJECT
|
43
|
-
p.author = [
|
44
|
-
p.email =
|
45
|
-
p.url =
|
52
|
+
p.author = [AUTHOR]
|
53
|
+
p.email = EMAIL
|
54
|
+
p.url = HOMEPATH
|
46
55
|
|
47
|
-
p.summary = p.paragraphs_of('README.txt',
|
48
|
-
p.description = p.paragraphs_of('README.txt', 3
|
56
|
+
p.summary = p.paragraphs_of('README.txt', 2..2)[0]
|
57
|
+
p.description = p.paragraphs_of('README.txt', 2..3).join("\n\n")
|
49
58
|
p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
|
50
59
|
|
51
60
|
p.need_zip = true
|
52
61
|
p.need_tar = false
|
53
62
|
end
|
54
63
|
|
64
|
+
desc 'Release the website and new gem version'
|
65
|
+
task :deploy => [:check_manifest!, :check_version, :publish_docs, :release]
|
66
|
+
|
67
|
+
task :check_manifest! => [:check_manifest] do
|
68
|
+
unless $?.success?
|
69
|
+
puts "----"
|
70
|
+
puts "Please update Manifest.txt."
|
71
|
+
exit 1
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
task :check_version do
|
76
|
+
unless ENV['VERSION']
|
77
|
+
puts 'Must pass a VERSION=x.y.z release version'
|
78
|
+
exit
|
79
|
+
end
|
80
|
+
unless ENV['VERSION'] == VERS
|
81
|
+
puts "Please update your version.rb to match the release version, currently #{VERS}"
|
82
|
+
exit
|
83
|
+
end
|
84
|
+
histver = File.read("History.txt")[/^== (\d+\.\d+\.\d+)/, 1]
|
85
|
+
unless ENV['VERSION'] == histver
|
86
|
+
puts "Please update your History.txt to match the release version, currently #{histver}"
|
87
|
+
exit
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
# remove HTML comment and so on.
|
92
|
+
task :docs do
|
93
|
+
ruby "scripts/rdoc_filter.rb doc/**/*.html"
|
94
|
+
end
|
95
|
+
|
55
96
|
|
56
97
|
#
|
57
98
|
# new task
|
58
99
|
#
|
59
100
|
|
60
101
|
desc 'Uninstall the gem package'
|
61
|
-
|
62
|
-
sh "gem.bat uninstall #{
|
102
|
+
task_for_windows :uninstall_gem do
|
103
|
+
sh "gem.bat uninstall #{ENV['GEMOPTS']} #{GEM_NAME}"
|
63
104
|
end
|
64
105
|
|
65
106
|
|
66
107
|
#
|
67
|
-
# overwrite hoe defined tasks
|
108
|
+
# overwrite hoe defined tasks.
|
68
109
|
#
|
69
110
|
|
70
|
-
|
71
|
-
|
72
|
-
task :install_gem => [:clean, :package] do
|
73
|
-
sh "gem.bat install pkg/*.gem"
|
111
|
+
task_for_windows :install_gem do
|
112
|
+
sh "gem.bat install #{ENV['GEMOPTS']} pkg/*.gem"
|
74
113
|
end
|
75
114
|
|
76
|
-
|
77
|
-
desc "Generate ri locally for testing"
|
78
|
-
task :ridocs => :clean do
|
115
|
+
task_for_windows :ridocs do
|
79
116
|
sh "rdoc.bat --ri -o ri ."
|
80
117
|
end
|
81
118
|
|
82
|
-
|
83
|
-
desc 'Publish RDoc to RubyForge'
|
84
|
-
task :publish_docs => [:clean, :docs] do
|
85
|
-
config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
|
119
|
+
task_for_windows :publish_docs do
|
86
120
|
with_temporary_rename("doc", "html") {
|
87
|
-
Rake::RubyForgePublisher.new(RUBYFORGE_PROJECT,
|
121
|
+
Rake::RubyForgePublisher.new(RUBYFORGE_PROJECT, rubyforge_username).upload
|
122
|
+
}
|
123
|
+
end
|
124
|
+
|
125
|
+
# rake publish_docs SCP=pscp
|
126
|
+
if ENV["SCP"] and ENV["SCP"] != "scp"
|
127
|
+
add_sh_filter_for(/\Ascp /) {|cmd|
|
128
|
+
cmd[0].sub!(/\Ascp/, ENV["SCP"])
|
129
|
+
cmd[0].sub!(/-rq/, "-r")
|
130
|
+
cmd
|
88
131
|
}
|
89
132
|
end
|
90
133
|
|
91
134
|
|
135
|
+
task :create_news do
|
136
|
+
subject, title, body, urls = hoe.announcement
|
137
|
+
open(NEWS_FILE, "w") do |w|
|
138
|
+
w.puts subject
|
139
|
+
w.puts "#{title}\n\n#{body}\n\n"
|
140
|
+
w.puts "--"
|
141
|
+
w.puts "Home URL: #{HOMEPATH}"
|
142
|
+
w.puts "Project URL: #{DOWNLOAD_PATH}"
|
143
|
+
end
|
144
|
+
puts File.read(NEWS_FILE)
|
145
|
+
end
|
146
|
+
|
147
|
+
override_task :post_news do
|
148
|
+
subject, body = File.read(NEWS_FILE).split(/\n/, 2)
|
149
|
+
require 'rubyforge'
|
150
|
+
rf = RubyForge.new
|
151
|
+
rf.login
|
152
|
+
rf.post_news(RUBYFORGE_PROJECT, subject, body)
|
153
|
+
puts "Posted to rubyforge `#{subject}'."
|
154
|
+
rm_f NEWS_FILE
|
155
|
+
end
|
156
|
+
|
92
157
|
# vim: syntax=Ruby
|
data/examples/idl.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require "pp"
|
2
|
+
require "win32ole"
|
3
|
+
|
4
|
+
$LOAD_PATH << File.join(File.dirname(__FILE__), "../lib")
|
5
|
+
require "win32ole_pp"
|
6
|
+
|
7
|
+
ignore = [
|
8
|
+
:AddRef,
|
9
|
+
:QueryInterface,
|
10
|
+
:Release,
|
11
|
+
:GetTypeInfoCount,
|
12
|
+
:GetTypeInfo,
|
13
|
+
:GetIDsOfNames,
|
14
|
+
:Invoke,
|
15
|
+
]
|
16
|
+
|
17
|
+
progid = ARGV[0] || 'InternetExplorer.Application'
|
18
|
+
WIN32OLE.new(progid).ole_methods.reject{|e| ignore.include?(e.name.intern) }.each do |e|
|
19
|
+
print "["
|
20
|
+
print %Q{id(%d), helpstring("%s")} % [e.dispid, e.helpstring]
|
21
|
+
print ", %s" % [e.invoke_kind] if e.invoke_kind != "FUNC"
|
22
|
+
puts "]"
|
23
|
+
puts e.display_string
|
24
|
+
puts
|
25
|
+
end
|
data/examples/oletype.rb
ADDED
data/helper/helper.rb
ADDED
data/helper/rake.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "rake"
|
3
|
+
|
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
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module FileUtils
|
2
|
+
SHELL_COMMAND_FILTER = []
|
3
|
+
|
4
|
+
alias sh_original sh
|
5
|
+
def sh(*cmd, &block)
|
6
|
+
cmd = SHELL_COMMAND_FILTER.inject(cmd){|c,filter| filter.call(c) or c }
|
7
|
+
sh_original(*cmd, &block)
|
8
|
+
end
|
9
|
+
|
10
|
+
def add_sh_filter(&block)
|
11
|
+
SHELL_COMMAND_FILTER << block
|
12
|
+
end
|
13
|
+
|
14
|
+
def add_sh_filter_for(pattern, &block)
|
15
|
+
add_sh_filter {|cmd|
|
16
|
+
if cmd[0] =~ pattern
|
17
|
+
block.call(cmd)
|
18
|
+
else
|
19
|
+
cmd
|
20
|
+
end
|
21
|
+
}
|
22
|
+
end
|
23
|
+
end
|
data/helper/util.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
def windows?
|
2
|
+
RUBY_PLATFORM =~ /win/
|
3
|
+
end
|
4
|
+
|
5
|
+
def with_temporary_rename(from, to)
|
6
|
+
mv from, to
|
7
|
+
yield
|
8
|
+
ensure
|
9
|
+
mv to, from
|
10
|
+
end
|
11
|
+
|
12
|
+
def has_dot?
|
13
|
+
if windows?
|
14
|
+
v = `dot -V 2>&1` rescue nil
|
15
|
+
v and v =~ /Graphviz/
|
16
|
+
else
|
17
|
+
`which dot` =~ /\/dot/
|
18
|
+
end
|
19
|
+
end
|
@@ -12,6 +12,14 @@ module WIN32OLE_PP
|
|
12
12
|
"%s:0x%x" % [self.class, object_id << 1]
|
13
13
|
end
|
14
14
|
end
|
15
|
+
|
16
|
+
def type(type, type_detail)
|
17
|
+
if type_detail.include?("PTR")
|
18
|
+
"#{type}*"
|
19
|
+
else
|
20
|
+
type
|
21
|
+
end
|
22
|
+
end
|
15
23
|
end
|
16
24
|
|
17
25
|
module PrettyPrint
|
@@ -39,6 +47,8 @@ module WIN32OLE_PP
|
|
39
47
|
|
40
48
|
def to_s_ext
|
41
49
|
"#<%s>" % [address_banner(display_string)]
|
50
|
+
rescue
|
51
|
+
to_s_original
|
42
52
|
end
|
43
53
|
end
|
44
54
|
|
@@ -6,9 +6,9 @@ module WIN32OLE_PP
|
|
6
6
|
include WIN32OLE_PP::Extentions::Common::InitializeHook
|
7
7
|
|
8
8
|
def initialize_ext(ole, event = nil)
|
9
|
-
@ole_class = ole.ole_obj_help.name
|
10
|
-
@event = event
|
11
9
|
initialize_original(ole, event)
|
10
|
+
@ole_class = ole.ole_obj_help.name rescue ole.to_s_original
|
11
|
+
@event = event
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
@@ -6,8 +6,12 @@ module WIN32OLE_PP
|
|
6
6
|
include WIN32OLE_PP::Extentions::Common::ToStringBase
|
7
7
|
include WIN32OLE_PP::Extentions::Common::ToStringHook
|
8
8
|
|
9
|
+
def display_type
|
10
|
+
type(return_type, return_type_detail)
|
11
|
+
end
|
12
|
+
|
9
13
|
def display_string
|
10
|
-
"%s %s(%s)" % [
|
14
|
+
"%s %s(%s)" % [display_type, name, params.map{|e| e.display_string} * ', ']
|
11
15
|
end
|
12
16
|
end
|
13
17
|
|
@@ -6,16 +6,22 @@ module WIN32OLE_PP
|
|
6
6
|
include WIN32OLE_PP::Extentions::Common::ToStringBase
|
7
7
|
include WIN32OLE_PP::Extentions::Common::ToStringHook
|
8
8
|
|
9
|
+
def display_type
|
10
|
+
type = type(ole_type, ole_type_detail)
|
11
|
+
end
|
12
|
+
|
13
|
+
def qualifier
|
14
|
+
k = %W(in out retval optional)
|
15
|
+
v = [input?, output?, retval?, optional?]
|
16
|
+
k.zip(v).select{|e| e[1]}.map{|e| e[0]}
|
17
|
+
end
|
18
|
+
|
9
19
|
def display_string
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
type << "retval" if retval?
|
14
|
-
type << "optional" if optional?
|
15
|
-
if type.empty?
|
16
|
-
"%s %s" % [ole_type, name]
|
20
|
+
q = qualifier
|
21
|
+
if q.empty?
|
22
|
+
"%s %s" % [display_type, name]
|
17
23
|
else
|
18
|
-
"[%s] %s %s" % [
|
24
|
+
"[%s] %s %s" % [q * ", ", display_type, name]
|
19
25
|
end
|
20
26
|
end
|
21
27
|
end
|
@@ -17,17 +17,17 @@ module WIN32OLE_PP
|
|
17
17
|
PROPERTIES = [
|
18
18
|
:name,
|
19
19
|
:guid,
|
20
|
-
:helpstring,
|
21
|
-
:helpcontext,
|
22
|
-
:helpfile,
|
23
|
-
:major_version,
|
24
|
-
:minor_version,
|
25
|
-
:ole_methods,
|
26
20
|
:ole_type,
|
27
21
|
:typekind,
|
28
22
|
:progid,
|
29
23
|
:src_type,
|
30
24
|
:visible?,
|
25
|
+
:major_version,
|
26
|
+
:minor_version,
|
27
|
+
:helpstring,
|
28
|
+
:helpcontext,
|
29
|
+
:helpfile,
|
30
|
+
:ole_methods,
|
31
31
|
:variables,
|
32
32
|
]
|
33
33
|
|
data/lib/win32ole_pp/init.rb
CHANGED
data/lib/win32ole_pp/version.rb
CHANGED
@@ -0,0 +1,59 @@
|
|
1
|
+
class Filter
|
2
|
+
|
3
|
+
def initialize
|
4
|
+
@filter = []
|
5
|
+
end
|
6
|
+
|
7
|
+
def define_replace(regexp, replace, key)
|
8
|
+
@filter << [regexp, lambda { replace }, key]
|
9
|
+
end
|
10
|
+
|
11
|
+
def define_insert_before(tag, snippet, key)
|
12
|
+
@filter << [tag, lambda { snippet + tag }, key]
|
13
|
+
end
|
14
|
+
|
15
|
+
def define_insert_after(tag, snippet, key)
|
16
|
+
@filter << [tag, lambda { tag + snippet }, key]
|
17
|
+
end
|
18
|
+
|
19
|
+
def update!(file)
|
20
|
+
b = File.read(file)
|
21
|
+
a = @filter.inject(b) {|bb,subs|
|
22
|
+
re, sub, key = *subs
|
23
|
+
if key and bb =~ /#{Regexp.quote(key)}/
|
24
|
+
bb
|
25
|
+
else
|
26
|
+
bb.gsub(re, &sub)
|
27
|
+
end
|
28
|
+
}
|
29
|
+
if b != a
|
30
|
+
puts file
|
31
|
+
File.open(file, "w") {|w| w.puts a }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
f = Filter.new
|
38
|
+
f.define_replace(/\A\s+/m, "", nil)
|
39
|
+
f.define_replace(/\s*<!--.*?-->\s*<html/m, "<html", nil)
|
40
|
+
f.define_insert_before("</body>", <<GOOGLE, '<div id="google-analytics">')
|
41
|
+
|
42
|
+
<!-- Google Analytics -->
|
43
|
+
<div id="google-analytics">
|
44
|
+
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
|
45
|
+
</script>
|
46
|
+
<script type="text/javascript">
|
47
|
+
_uacct = "UA-1161245-6";
|
48
|
+
urchinTracker();
|
49
|
+
</script>
|
50
|
+
</div>
|
51
|
+
|
52
|
+
GOOGLE
|
53
|
+
|
54
|
+
tag = %Q{\n<meta name="verify-v1" content="4xi61YK06FtgbbYoHU2oPltUGvJZLrQogTtv+vaPYTI=" />\n}
|
55
|
+
f.define_insert_after("<head>", tag, '<meta name="verify-v1"')
|
56
|
+
|
57
|
+
ARGV.each do |html|
|
58
|
+
f.update!(html)
|
59
|
+
end
|
@@ -18,9 +18,9 @@ class TestWin32oleMethod < Test::Unit::TestCase
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_to_s
|
21
|
-
assert_match(re("#<WIN32OLE_METHOD:0x14c73da: IDriveCollection Drives\\(\\)>"),
|
21
|
+
assert_match(re("#<WIN32OLE_METHOD:0x14c73da: IDriveCollection\\* Drives\\(\\)>"),
|
22
22
|
@method_drives.to_s)
|
23
|
-
assert_match(re("#<WIN32OLE_METHOD:0x14c72f4: IFolder CreateFolder\\(\\[in\\] BSTR Path\\)>"),
|
23
|
+
assert_match(re("#<WIN32OLE_METHOD:0x14c72f4: IFolder\\* CreateFolder\\(\\[in\\] BSTR Path\\)>"),
|
24
24
|
@method_create_folder.to_s)
|
25
25
|
assert_match(re("#<WIN32OLE_METHOD:0x14c6cd2: VOID DeleteFolder\\(\\[in\\] BSTR FolderSpec, \\[in, optional\\] BOOL Force\\)>"),
|
26
26
|
@method_delete_folder.to_s)
|
data/test/test_win32ole_type.rb
CHANGED
@@ -23,17 +23,17 @@ class TestWin32oleType < Test::Unit::TestCase
|
|
23
23
|
#<WIN32OLE_TYPE:0x14b6e2c: ScriptControlConstants
|
24
24
|
name=.*?,
|
25
25
|
guid=.*?,
|
26
|
-
helpstring=.*?,
|
27
|
-
helpcontext=.*?,
|
28
|
-
helpfile=.*?,
|
29
|
-
major_version=.*?,
|
30
|
-
minor_version=.*?,
|
31
|
-
ole_methods=.*?,
|
32
26
|
ole_type=.*?,
|
33
27
|
typekind=.*?,
|
34
28
|
progid=.*?,
|
35
29
|
src_type=.*?,
|
36
30
|
visible\\?=.*?,
|
31
|
+
major_version=.*?,
|
32
|
+
minor_version=.*?,
|
33
|
+
helpstring=.*?,
|
34
|
+
helpcontext=.*?,
|
35
|
+
helpfile=.*?,
|
36
|
+
ole_methods=.*?,
|
37
37
|
variables=
|
38
38
|
\\[#<WIN32OLE_VARIABLE:0x14b69d6: GlobalModule
|
39
39
|
name=.*?,
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.4
|
3
3
|
specification_version: 1
|
4
4
|
name: win32ole-pp
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.
|
7
|
-
date: 2007-
|
6
|
+
version: 1.2.0
|
7
|
+
date: 2007-07-16 00:00:00 +09:00
|
8
8
|
summary: "win32ole-pp provides smart #to_s and pretty printer for WIN32OLE object."
|
9
9
|
require_paths:
|
10
10
|
- lib
|
11
11
|
email: miyamuko@gmail.com
|
12
|
-
homepage: http://win32ole-pp.rubyforge.org
|
12
|
+
homepage: http://win32ole-pp.rubyforge.org
|
13
13
|
rubyforge_project: win32ole-pp
|
14
14
|
description: "win32ole-pp provides smart #to_s and pretty printer for WIN32OLE object. This library helps to develop/debug WIN32OLE applications."
|
15
15
|
autorequire:
|
@@ -29,12 +29,18 @@ post_install_message:
|
|
29
29
|
authors:
|
30
30
|
- MIYAMUKO Katsuyuki
|
31
31
|
files:
|
32
|
-
- CHANGELOG.txt
|
33
32
|
- History.txt
|
33
|
+
- License.txt
|
34
34
|
- Manifest.txt
|
35
35
|
- README.txt
|
36
36
|
- Rakefile
|
37
|
+
- examples/idl.rb
|
38
|
+
- examples/oletype.rb
|
37
39
|
- examples/test.rb
|
40
|
+
- helper/helper.rb
|
41
|
+
- helper/rake.rb
|
42
|
+
- helper/rake_sh_filter.rb
|
43
|
+
- helper/util.rb
|
38
44
|
- lib/win32ole_pp.rb
|
39
45
|
- lib/win32ole_pp/extentions.rb
|
40
46
|
- lib/win32ole_pp/extentions/common.rb
|
@@ -48,6 +54,7 @@ files:
|
|
48
54
|
- lib/win32ole_pp/pp.rb
|
49
55
|
- lib/win32ole_pp/to_s.rb
|
50
56
|
- lib/win32ole_pp/version.rb
|
57
|
+
- scripts/rdoc_filter.rb
|
51
58
|
- setup.rb
|
52
59
|
- test/helper.rb
|
53
60
|
- test/test_version.rb
|
@@ -65,23 +72,19 @@ test_files:
|
|
65
72
|
- test/test_win32ole_param.rb
|
66
73
|
- test/test_win32ole_type.rb
|
67
74
|
- test/test_win32ole_variable.rb
|
68
|
-
rdoc_options:
|
69
|
-
|
70
|
-
|
71
|
-
|
75
|
+
rdoc_options:
|
76
|
+
- --main
|
77
|
+
- README.txt
|
78
|
+
extra_rdoc_files:
|
79
|
+
- History.txt
|
80
|
+
- License.txt
|
81
|
+
- Manifest.txt
|
82
|
+
- README.txt
|
72
83
|
executables: []
|
73
84
|
|
74
85
|
extensions: []
|
75
86
|
|
76
87
|
requirements: []
|
77
88
|
|
78
|
-
dependencies:
|
79
|
-
|
80
|
-
name: hoe
|
81
|
-
version_requirement:
|
82
|
-
version_requirements: !ruby/object:Gem::Version::Requirement
|
83
|
-
requirements:
|
84
|
-
- - ">="
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: 1.2.0
|
87
|
-
version:
|
89
|
+
dependencies: []
|
90
|
+
|
data/CHANGELOG.txt
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
2007-02-25 MIYAMUKO Katsuyuki
|
2
|
-
|
3
|
-
* win32ole-pp 1.1.0 released!
|
4
|
-
|
5
|
-
* extentions/win32ole_method.rb,
|
6
|
-
extentions/win32ole_param.rb,
|
7
|
-
extentions/win32ole_type.rb,
|
8
|
-
extentions/win32ole_variable.rb (pretty_print): adjust property order.
|
9
|
-
|
10
|
-
* extentions/common.rb (address_banner): fix wrong object address.
|
11
|
-
|
12
|
-
2007-02-12 MIYAMUKO Katsuyuki
|
13
|
-
|
14
|
-
* win32ole-pp 1.0.0 released!
|