win32ole-pp 1.1.0 → 1.2.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 +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!
|