autocad 0.4.6 → 0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop/minitest.yml +2 -2
- data/.rubocop/strict.yml +4 -4
- data/.rubocop.yml +36 -33
- data/CHANGELOG.md +5 -5
- data/LICENSE.txt +21 -21
- data/README.md +134 -39
- data/Rakefile +26 -10
- data/exe/autocad +3 -3
- data/gemfiles/rubocop.gemfile +2 -1
- data/lib/autocad/app.rb +127 -28
- data/lib/autocad/arc.rb +3 -0
- data/lib/autocad/block.rb +11 -6
- data/lib/autocad/block_reference.rb +33 -4
- data/lib/autocad/bounding_box.rb +202 -0
- data/lib/autocad/dim_style.rb +4 -0
- data/lib/autocad/drawing.rb +873 -172
- data/lib/autocad/element.rb +217 -25
- data/lib/autocad/errors.rb +9 -0
- data/lib/autocad/filter.rb +502 -168
- data/lib/autocad/layer.rb +129 -41
- data/lib/autocad/layout.rb +120 -0
- data/lib/autocad/line.rb +154 -55
- data/lib/autocad/message_box.rb +95 -95
- data/lib/autocad/model.rb +217 -89
- data/lib/autocad/mtext.rb +189 -110
- data/lib/autocad/plot.rb +45 -0
- data/lib/autocad/plot_configuration.rb +372 -0
- data/lib/autocad/point.rb +7 -0
- data/lib/autocad/point3d.rb +18 -11
- data/lib/autocad/pviewport.rb +136 -21
- data/lib/autocad/selection_filter.rb +358 -180
- data/lib/autocad/selection_set.rb +140 -61
- data/lib/autocad/selection_set_adapter.rb +187 -8
- data/lib/autocad/spline.rb +27 -0
- data/lib/autocad/text.rb +66 -11
- data/lib/autocad/text_style.rb +4 -0
- data/lib/autocad/version.rb +1 -1
- data/lib/autocad/viewport.rb +57 -0
- data/lib/autocad.rb +126 -30
- data/lib/faa/cleanup.rb +137 -0
- data/lib/win32ole_helper.rb +52 -0
- data/rbs_collection.lock.yaml +38 -18
- data/sig/generated/autocad/app.rbs +278 -251
- data/sig/generated/autocad/arc.rbs +6 -3
- data/sig/generated/autocad/block.rbs +8 -5
- data/sig/generated/autocad/block_reference.rbs +99 -59
- data/sig/generated/autocad/bounding_box.rbs +78 -0
- data/sig/generated/autocad/dim_style.rbs +6 -0
- data/sig/generated/autocad/drawing.rbs +597 -158
- data/sig/generated/autocad/element.rbs +233 -166
- data/sig/generated/autocad/errors.rbs +29 -23
- data/sig/generated/autocad/filter.rbs +388 -60
- data/sig/generated/autocad/layer.rbs +76 -19
- data/sig/generated/autocad/layout.rbs +64 -0
- data/sig/generated/autocad/line.rbs +128 -25
- data/sig/generated/autocad/message_box.rbs +81 -81
- data/sig/generated/autocad/model.rbs +115 -41
- data/sig/generated/autocad/mtext.rbs +123 -0
- data/sig/generated/autocad/plot.rbs +26 -0
- data/sig/generated/autocad/plot_configuration.rbs +176 -0
- data/sig/generated/autocad/point.rbs +7 -0
- data/sig/generated/autocad/point3d.rbs +70 -66
- data/sig/generated/autocad/pviewport.rbs +64 -0
- data/sig/generated/autocad/selection_filter.rbs +226 -50
- data/sig/generated/autocad/selection_set.rbs +112 -37
- data/sig/generated/autocad/selection_set_adapter.rbs +235 -28
- data/sig/generated/autocad/spline.rbs +22 -0
- data/sig/generated/autocad/text.rbs +66 -7
- data/sig/generated/autocad/text_style.rbs +6 -0
- data/sig/generated/autocad/viewport.rbs +19 -2
- data/sig/generated/autocad.rbs +140 -68
- data/sig/generated/faa/cleanup.rbs +53 -0
- data/sig/generated/win32ole_helper.rbs +9 -0
- data/sig/prototype/lib/autocad/app.rbs +3 -1
- data/sig/prototype/lib/autocad/bounding_box.rbs +15 -0
- data/sig/prototype/lib/autocad/drawing.rbs +6 -0
- data/sig/prototype/lib/autocad/layer.rbs +5 -0
- data/sig/prototype/lib/autocad/viewport.rbs +7 -0
- data/sig/prototype/lib/autocad.rbs +1 -1
- metadata +29 -5
- data/event_handler.log +0 -24
- data/sig/generated/autocad/text_node.rbs +0 -37
@@ -0,0 +1,57 @@
|
|
1
|
+
module Autocad
|
2
|
+
class Viewport < Element
|
3
|
+
# Returns the name of the viewport
|
4
|
+
# @rbs return String
|
5
|
+
def name
|
6
|
+
ole_obj.Name
|
7
|
+
end
|
8
|
+
|
9
|
+
# Returns the center of the viewport
|
10
|
+
# @rbs return Point3d
|
11
|
+
def center
|
12
|
+
Point3d.new(ole_obj.Center)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Returns the width of the viewport
|
16
|
+
# @rbs return Float
|
17
|
+
def width
|
18
|
+
ole_obj.Width
|
19
|
+
end
|
20
|
+
|
21
|
+
# Splits the viewport
|
22
|
+
# the split_type is from the AcViewportSplitType enum
|
23
|
+
# can take the integer or symbol corressponding to the enum
|
24
|
+
def split(split_type)
|
25
|
+
case split_type
|
26
|
+
when Integer then ole_obj.Split(split_type)
|
27
|
+
when :horizontal then ole_obj.Split(0)
|
28
|
+
when :vertical then ole_obj.Split(1)
|
29
|
+
when :two_horizontal then ole.Split(0)
|
30
|
+
when :two_vertical then ole_obj.Split(1)
|
31
|
+
when :three_left then ole_obj.Split(2)
|
32
|
+
when :three_right then ole_obj.Split(3)
|
33
|
+
when :three_horizontal then ole_obj.Split(4)
|
34
|
+
when :three_vertical then ole_obj.Split(5)
|
35
|
+
when :three_above then ole_obj.Split(6)
|
36
|
+
when :three_below then ole_obj.Split(7)
|
37
|
+
when :four then ole_obj.Split(8)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def height
|
42
|
+
ole_obj.Height
|
43
|
+
end
|
44
|
+
|
45
|
+
def lower_left
|
46
|
+
ole_obj.LowerLeftCorner.map { |p| Point3d.new(p) }
|
47
|
+
end
|
48
|
+
|
49
|
+
alias_method :bottom_left, :lower_left
|
50
|
+
|
51
|
+
def upper_right
|
52
|
+
ole_obj.UpperRightCorner.map { |p| Point3d.new(p) }
|
53
|
+
end
|
54
|
+
|
55
|
+
alias_method :top_right, :upper_right
|
56
|
+
end
|
57
|
+
end
|
data/lib/autocad.rb
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
module Autocad
|
4
4
|
module Common
|
5
|
+
# Handle uppercase method calls by forwarding to OLE object
|
6
|
+
# @rbs (Symbol, untyped) -> untyped
|
5
7
|
def method_missing(method, ...)
|
6
8
|
if /^[A-Z]/.match?(method.to_s)
|
7
9
|
ole_obj.send(method, ...)
|
@@ -12,7 +14,74 @@ module Autocad
|
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
17
|
+
module Autocad
|
18
|
+
module Color
|
19
|
+
# Standard AutoCAD color indices
|
20
|
+
Red = 1
|
21
|
+
Yellow = 2
|
22
|
+
Green = 3
|
23
|
+
Cyan = 4
|
24
|
+
Blue = 5
|
25
|
+
Magenta = 6
|
26
|
+
White = 7
|
27
|
+
Black = 0
|
28
|
+
|
29
|
+
# Additional common colors
|
30
|
+
Gray = 8
|
31
|
+
LightGray = 9
|
32
|
+
DarkRed = 10
|
33
|
+
DarkGreen = 96
|
34
|
+
DarkBlue = 174
|
35
|
+
Orange = 30
|
36
|
+
Purple = 200
|
37
|
+
Brown = 35
|
38
|
+
|
39
|
+
# Convert a color symbol or name to its integer value
|
40
|
+
# @rbs color: Symbol | String | Integer
|
41
|
+
# @rbs return Integer
|
42
|
+
def self.to_index(color)
|
43
|
+
return color if color.is_a?(Integer)
|
44
|
+
|
45
|
+
# Handle both camelCase and snake_case in symbols and strings
|
46
|
+
color_str = color.to_s
|
47
|
+
|
48
|
+
# Try direct match first (for exact constant names)
|
49
|
+
constants.each do |const_name|
|
50
|
+
return const_get(const_name) if const_name.to_s.downcase == color_str.downcase
|
51
|
+
end
|
52
|
+
|
53
|
+
# Try normalized version (convert snake_case to CamelCase)
|
54
|
+
normalized = color_str.split('_').map(&:capitalize).join
|
55
|
+
constants.each do |const_name|
|
56
|
+
return const_get(const_name) if const_name.to_s.downcase == normalized.downcase
|
57
|
+
end
|
58
|
+
|
59
|
+
raise ArgumentError, "Unknown color: #{color}. Use a valid color name or integer index."
|
60
|
+
end
|
61
|
+
|
62
|
+
# Convert an integer color index to a symbolic name if possible
|
63
|
+
# @rbs index: Integer
|
64
|
+
# @rbs return Symbol | Integer
|
65
|
+
def self.from_index(index)
|
66
|
+
constants.each do |const_name|
|
67
|
+
return underscore(const_name).to_sym if const_get(const_name) == index
|
68
|
+
end
|
69
|
+
index # Return the original index if no matching constant
|
70
|
+
end
|
71
|
+
|
72
|
+
# Helper method to convert to snake_case
|
73
|
+
# @rbs camel_case: String
|
74
|
+
# @rbs return String
|
75
|
+
def self.underscore(camel_case)
|
76
|
+
camel_case.to_s.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
77
|
+
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
78
|
+
.downcase
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
15
83
|
module ACAD
|
84
|
+
# Keep the module for backward compatibility
|
16
85
|
end
|
17
86
|
|
18
87
|
require "logger"
|
@@ -32,19 +101,32 @@ end
|
|
32
101
|
module Autocad
|
33
102
|
ROOT = Pathname.new(__dir__).parent
|
34
103
|
|
104
|
+
# Convert a color value (symbol, string, or integer) to an AutoCAD color index
|
105
|
+
# @rbs color: Symbol | String | Integer
|
106
|
+
# @rbs return Integer
|
107
|
+
def self.color_to_index(color)
|
108
|
+
return color if color.is_a?(Integer)
|
109
|
+
Color.to_index(color)
|
110
|
+
end
|
111
|
+
|
35
112
|
class << self
|
36
|
-
# @
|
37
|
-
|
113
|
+
# @rbs &: (Autocad::App) -> void
|
114
|
+
# @rbs return void
|
115
|
+
def run(...)
|
38
116
|
App.run(...)
|
39
117
|
end
|
40
118
|
|
41
|
-
# @return
|
42
|
-
def root
|
119
|
+
# @rbs return Pathname
|
120
|
+
def root
|
43
121
|
ROOT
|
44
122
|
end
|
45
123
|
|
46
|
-
#
|
47
|
-
# @rbs
|
124
|
+
# Convert DGN/DWG files to PDF
|
125
|
+
# @rbs dir_or_file: String | Pathname
|
126
|
+
# @rbs outdir: String | Pathname
|
127
|
+
# @rbs mode: :dir | :file
|
128
|
+
# @rbs return void
|
129
|
+
# @raise [RuntimeError] Invalid mode
|
48
130
|
def dgn2pdf(dir_or_file, outdir: dir_or_file, mode: :dir)
|
49
131
|
raise "Mode on of :dir or :file" unless [:dir, :file].include? mode
|
50
132
|
if mode == :dir
|
@@ -59,10 +141,22 @@ module Autocad
|
|
59
141
|
end
|
60
142
|
end
|
61
143
|
|
62
|
-
#
|
63
|
-
# @rbs
|
64
|
-
# @rbs
|
65
|
-
|
144
|
+
# Process currently open drawings
|
145
|
+
# @rbs &: (Drawing) -> void
|
146
|
+
# @rbs return void
|
147
|
+
def with_open_drawings(...)
|
148
|
+
run do |app|
|
149
|
+
return unless app.has_drawings?
|
150
|
+
app.drawings.each do |drawing|
|
151
|
+
yield drawing
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
# Save all open drawings
|
157
|
+
# @rbs dir: String | Pathname
|
158
|
+
# @rbs exit: bool
|
159
|
+
# @rbs model: bool
|
66
160
|
# @rbs return void
|
67
161
|
def save_open_drawings(dir: Pathname.getwd, exit: true, model: false)
|
68
162
|
if exit
|
@@ -88,10 +182,10 @@ module Autocad
|
|
88
182
|
end
|
89
183
|
end
|
90
184
|
|
91
|
-
#
|
92
|
-
# @rbs dir: String|
|
93
|
-
# @rbs exit: bool
|
94
|
-
# @rbs model: bool
|
185
|
+
# Save current drawing with options
|
186
|
+
# @rbs dir: String | Pathname
|
187
|
+
# @rbs exit: bool
|
188
|
+
# @rbs model: bool
|
95
189
|
# @rbs return void
|
96
190
|
def save_current_drawing(dir, exit: true, model: false)
|
97
191
|
if exit
|
@@ -112,8 +206,8 @@ module Autocad
|
|
112
206
|
end
|
113
207
|
end
|
114
208
|
|
115
|
-
#
|
116
|
-
# @rbs dir: String|
|
209
|
+
# Save current drawing as PDF
|
210
|
+
# @rbs dir: String | Pathname
|
117
211
|
# @rbs return void
|
118
212
|
def save_current_drawing_as_pdf(dir)
|
119
213
|
App.run do |app|
|
@@ -123,36 +217,38 @@ module Autocad
|
|
123
217
|
end
|
124
218
|
end
|
125
219
|
|
126
|
-
#
|
127
|
-
# @rbs dir: String|Pathname
|
220
|
+
# Find drawings in directory
|
221
|
+
# @rbs dir: String | Pathname
|
222
|
+
# @rbs return Array[Pathname]
|
128
223
|
def drawings_in_dir(dir)
|
129
224
|
dirpath = Pathname.new(dir).expand_path
|
130
225
|
dirpath.glob("*.d{gn,wg,xf}").sort_by { _1.basename(".*").to_s.downcase }
|
131
226
|
end
|
132
227
|
|
228
|
+
# Open single drawing
|
229
|
+
# @rbs drawing: String | Pathname
|
230
|
+
# @rbs return Drawing
|
133
231
|
def open_drawing(drawing, ...)
|
134
232
|
App.open_drawing(drawing, ...)
|
135
233
|
end
|
136
234
|
|
137
|
-
#
|
138
|
-
#
|
139
|
-
#
|
140
|
-
# it automatically closes the drawing and
|
141
|
-
# the app when done
|
142
|
-
#
|
143
|
-
# @rbs *files: Array[String|Pathname]
|
144
|
-
# @rbs visible: bool -- show the app window
|
235
|
+
# Process multiple drawings
|
236
|
+
# @rbs *files: Array[String | Pathname]
|
237
|
+
# @rbs visible: bool
|
145
238
|
# @rbs error_proc: (Exception, Drawing) -> void
|
146
|
-
# @rbs wait_time: Integer
|
147
|
-
# @rbs wait_interval: Float
|
239
|
+
# @rbs wait_time: Integer
|
240
|
+
# @rbs wait_interval: Float
|
148
241
|
# @rbs read_only: bool
|
149
242
|
# @rbs &: (Drawing) -> void
|
243
|
+
# @rbs return void
|
150
244
|
def with_drawings(...)
|
151
245
|
App.with_drawings(...)
|
152
246
|
end
|
153
247
|
|
154
|
-
#
|
155
|
-
# @rbs dir: String|Pathname
|
248
|
+
# Process drawings in directory
|
249
|
+
# @rbs dir: String | Pathname
|
250
|
+
# @rbs ...: untyped
|
251
|
+
# @rbs return void
|
156
252
|
def with_drawings_in_dir(dir, ...)
|
157
253
|
drawings = drawings_in_dir(dir)
|
158
254
|
with_drawings(drawings, ...)
|
data/lib/faa/cleanup.rb
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faa
|
4
|
+
# Get the project directory from Documents folder
|
5
|
+
# @rbs return Pathname
|
6
|
+
def self.project_dir
|
7
|
+
Pathname.new("c:/Users/Dominic E Sisneros/OneDrive - Federal Aviation Administration/Documents/work/projects")
|
8
|
+
end
|
9
|
+
|
10
|
+
# Get the RTR project directory
|
11
|
+
# @rbs return Pathname
|
12
|
+
def self.rtr_dir
|
13
|
+
project_dir / "rtir"
|
14
|
+
end
|
15
|
+
|
16
|
+
# Get the NEXCOM project directory
|
17
|
+
# @rbs return Pathname
|
18
|
+
def self.nexcom_dir
|
19
|
+
project_dir / "nexcom/dominic"
|
20
|
+
end
|
21
|
+
|
22
|
+
module Cleanup
|
23
|
+
# Removes the text "TRANSLATION" and removes the border in model space
|
24
|
+
# and deletes the title block
|
25
|
+
|
26
|
+
# Get attributes from the title block
|
27
|
+
# @rbs return Hash[String, String]?
|
28
|
+
def get_title_attributes
|
29
|
+
block_refs = block_reference_selection_set
|
30
|
+
title_block = block_refs.find do |br|
|
31
|
+
br.name.casecmp?("faatitle")
|
32
|
+
end
|
33
|
+
|
34
|
+
return unless title_block
|
35
|
+
|
36
|
+
title_block.attributes_hash
|
37
|
+
end
|
38
|
+
|
39
|
+
# Clean up the model space by removing translation text and title blocks
|
40
|
+
# @rbs return void
|
41
|
+
def cleanup_model
|
42
|
+
to_model_space
|
43
|
+
remove_translation_text
|
44
|
+
title_block = model_block_references.find { it.name == "TITLEB" }
|
45
|
+
border = model_block_references.find { it.name == "border" }
|
46
|
+
border&.delete
|
47
|
+
title_objs = title_block.explode if title_block
|
48
|
+
if title_objs
|
49
|
+
title_objs.each do |o|
|
50
|
+
o.delete
|
51
|
+
rescue
|
52
|
+
nil
|
53
|
+
end
|
54
|
+
end
|
55
|
+
title_block.delete if title_block
|
56
|
+
regen
|
57
|
+
app.zoom_extents
|
58
|
+
end
|
59
|
+
|
60
|
+
# Adds the FAA border to layout
|
61
|
+
# @rbs scale: Float
|
62
|
+
# @rbs return BlockReference
|
63
|
+
def add_title_block(scale: 1.0)
|
64
|
+
path = app.support_path_files.find { |f| f.basename.to_s == 'faaDborder.dwg' }
|
65
|
+
return unless path
|
66
|
+
|
67
|
+
block = layout.add_block_reference(path, pt: [0, 0, 0], scale: scale)
|
68
|
+
regen
|
69
|
+
block
|
70
|
+
end
|
71
|
+
|
72
|
+
# After deleting title block in model space, asks you to select a region to
|
73
|
+
# cleanup the rest of title block (attributes)
|
74
|
+
# @rbs return void
|
75
|
+
def cleanup_title_block
|
76
|
+
to_model_space
|
77
|
+
prompt("Select the region of title block to delete")
|
78
|
+
get_region
|
79
|
+
ss = create_selection_set("_atts_")
|
80
|
+
ss.select_on_screen
|
81
|
+
ss.each { |o| o.delete(false) }
|
82
|
+
ss.delete
|
83
|
+
regen
|
84
|
+
app.zoom_extents
|
85
|
+
rescue
|
86
|
+
nil
|
87
|
+
end
|
88
|
+
|
89
|
+
# Fix the layout by setting up proper viewports and plot configuration
|
90
|
+
# @rbs return nil
|
91
|
+
def fix_layout
|
92
|
+
ps = paper_space
|
93
|
+
ps.clear_pviewports
|
94
|
+
layout = paper_space_layout
|
95
|
+
active_layout = layout
|
96
|
+
|
97
|
+
layout.copy_plot_configuration pdf_plot_config
|
98
|
+
|
99
|
+
block = add_title_block(scale: 1.0, layout: layout)
|
100
|
+
if block
|
101
|
+
# to do add it to layer
|
102
|
+
puts "added title block"
|
103
|
+
end
|
104
|
+
|
105
|
+
# Use layout.add_pviewport which calculates size based on paper size and margins
|
106
|
+
pv = layout.add_pviewport(:scale_to_fit)
|
107
|
+
|
108
|
+
unless pv
|
109
|
+
active_layout = layout
|
110
|
+
end
|
111
|
+
|
112
|
+
app.zoom_extents
|
113
|
+
regen
|
114
|
+
layout.update(plot_type: :layout)
|
115
|
+
end
|
116
|
+
|
117
|
+
# Get the FAA title block if it exists
|
118
|
+
# @rbs return BlockReference?
|
119
|
+
def faa_title_block
|
120
|
+
block_references.find { |b| b.name == "faatitle" }
|
121
|
+
end
|
122
|
+
|
123
|
+
# Remove any text containing "TRANSLATION"
|
124
|
+
# @rbs return void
|
125
|
+
def remove_translation_text
|
126
|
+
objs = select_text_containing("*TRANSLATION*")
|
127
|
+
objs.each { |o| o.delete }
|
128
|
+
app.zoom_extents
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
module Autocad
|
134
|
+
class Drawing
|
135
|
+
include Faa::Cleanup
|
136
|
+
end
|
137
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module WIN32OLE::Helper
|
2
|
+
def help(method_name)
|
3
|
+
method = ole_methods.find { |m| m.name.casecmp?(method_name.to_s) }
|
4
|
+
return "Method #{method_name} not found" unless method
|
5
|
+
|
6
|
+
params_info = method.params.map.with_index(1) do |param, i|
|
7
|
+
[
|
8
|
+
"Parameter #{i}: #{param.name}",
|
9
|
+
"Type: #{param.ole_type}",
|
10
|
+
"Direction: #{param.input? ? 'Input' : ''}#{param.output? ? 'Output' : ''}",
|
11
|
+
"Optional: #{param.optional? ? 'Yes' : 'No'}",
|
12
|
+
"Default: #{param.default if param.optional?}"
|
13
|
+
].compact.join("\n ")
|
14
|
+
end.join("\n\n")
|
15
|
+
|
16
|
+
tips = []
|
17
|
+
tips << "Contains VARIANT parameters - use WIN32OLE_VARIANT.new(value)" if method.params.any? { |p| p.ole_type == 'VARIANT' }
|
18
|
+
tips << "Has output parameters - returns [return_value, *outputs]" if method.params.any?(&:output?)
|
19
|
+
|
20
|
+
<<~HELP
|
21
|
+
Method: #{method.name}
|
22
|
+
Return Type: #{method.return_type}
|
23
|
+
Description: #{method.helpstring}
|
24
|
+
|
25
|
+
Parameters:
|
26
|
+
#{params_info}
|
27
|
+
|
28
|
+
#{tips.join("\n")}
|
29
|
+
HELP
|
30
|
+
end
|
31
|
+
|
32
|
+
def help_methods
|
33
|
+
ole_methods.map(&:name).sort
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.extended(obj)
|
37
|
+
obj.instance_exec do
|
38
|
+
# Add COM method completion if in IRB
|
39
|
+
if defined?(IRB)
|
40
|
+
def method_missing(method, *args)
|
41
|
+
super
|
42
|
+
rescue WIN32OLERuntimeError => e
|
43
|
+
if e.message.include?('Unknown name')
|
44
|
+
similar = help_methods.grep(/#{method.to_s}/i)
|
45
|
+
raise NoMethodError, "#{method}. Did you mean?\n#{similar.join("\n")}"
|
46
|
+
end
|
47
|
+
raise
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/rbs_collection.lock.yaml
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
---
|
2
2
|
path: ".gem_rbs_collection"
|
3
3
|
gems:
|
4
|
+
- name: acrobat
|
5
|
+
version: 0.3.0
|
6
|
+
source:
|
7
|
+
type: rubygems
|
4
8
|
- name: ast
|
5
9
|
version: '2.4'
|
6
10
|
source:
|
7
11
|
type: git
|
8
12
|
name: ruby/gem_rbs_collection
|
9
|
-
revision:
|
13
|
+
revision: a8dd6bcebdae31ce6adc8887ef16c7ee6e1b9a6d
|
10
14
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
11
15
|
repo_dir: gems
|
12
16
|
- name: digest
|
@@ -18,7 +22,7 @@ gems:
|
|
18
22
|
source:
|
19
23
|
type: stdlib
|
20
24
|
- name: ffi
|
21
|
-
version: 1.17.
|
25
|
+
version: 1.17.1
|
22
26
|
source:
|
23
27
|
type: rubygems
|
24
28
|
- name: fileutils
|
@@ -38,7 +42,7 @@ gems:
|
|
38
42
|
source:
|
39
43
|
type: git
|
40
44
|
name: ruby/gem_rbs_collection
|
41
|
-
revision:
|
45
|
+
revision: a8dd6bcebdae31ce6adc8887ef16c7ee6e1b9a6d
|
42
46
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
43
47
|
repo_dir: gems
|
44
48
|
- name: logger
|
@@ -46,9 +50,13 @@ gems:
|
|
46
50
|
source:
|
47
51
|
type: stdlib
|
48
52
|
- name: minitest
|
49
|
-
version: '
|
53
|
+
version: '5.25'
|
50
54
|
source:
|
51
|
-
type:
|
55
|
+
type: git
|
56
|
+
name: ruby/gem_rbs_collection
|
57
|
+
revision: a8dd6bcebdae31ce6adc8887ef16c7ee6e1b9a6d
|
58
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
59
|
+
repo_dir: gems
|
52
60
|
- name: monitor
|
53
61
|
version: '0'
|
54
62
|
source:
|
@@ -66,7 +74,7 @@ gems:
|
|
66
74
|
source:
|
67
75
|
type: git
|
68
76
|
name: ruby/gem_rbs_collection
|
69
|
-
revision:
|
77
|
+
revision: a8dd6bcebdae31ce6adc8887ef16c7ee6e1b9a6d
|
70
78
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
71
79
|
repo_dir: gems
|
72
80
|
- name: parser
|
@@ -74,15 +82,23 @@ gems:
|
|
74
82
|
source:
|
75
83
|
type: git
|
76
84
|
name: ruby/gem_rbs_collection
|
77
|
-
revision:
|
85
|
+
revision: a8dd6bcebdae31ce6adc8887ef16c7ee6e1b9a6d
|
78
86
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
79
87
|
repo_dir: gems
|
80
88
|
- name: pathname
|
81
89
|
version: '0'
|
82
90
|
source:
|
83
91
|
type: stdlib
|
92
|
+
- name: pp
|
93
|
+
version: '0'
|
94
|
+
source:
|
95
|
+
type: stdlib
|
96
|
+
- name: prettyprint
|
97
|
+
version: '0'
|
98
|
+
source:
|
99
|
+
type: stdlib
|
84
100
|
- name: prism
|
85
|
-
version: 1.
|
101
|
+
version: 1.4.0
|
86
102
|
source:
|
87
103
|
type: rubygems
|
88
104
|
- name: rainbow
|
@@ -90,7 +106,7 @@ gems:
|
|
90
106
|
source:
|
91
107
|
type: git
|
92
108
|
name: ruby/gem_rbs_collection
|
93
|
-
revision:
|
109
|
+
revision: a8dd6bcebdae31ce6adc8887ef16c7ee6e1b9a6d
|
94
110
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
95
111
|
repo_dir: gems
|
96
112
|
- name: rake
|
@@ -98,15 +114,15 @@ gems:
|
|
98
114
|
source:
|
99
115
|
type: git
|
100
116
|
name: ruby/gem_rbs_collection
|
101
|
-
revision:
|
117
|
+
revision: a8dd6bcebdae31ce6adc8887ef16c7ee6e1b9a6d
|
102
118
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
103
119
|
repo_dir: gems
|
104
120
|
- name: rbs
|
105
|
-
version: 3.
|
121
|
+
version: 3.9.0
|
106
122
|
source:
|
107
123
|
type: rubygems
|
108
124
|
- name: rbs-inline
|
109
|
-
version: 0.
|
125
|
+
version: 0.11.0
|
110
126
|
source:
|
111
127
|
type: rubygems
|
112
128
|
- name: rdoc
|
@@ -118,11 +134,11 @@ gems:
|
|
118
134
|
source:
|
119
135
|
type: git
|
120
136
|
name: ruby/gem_rbs_collection
|
121
|
-
revision:
|
137
|
+
revision: a8dd6bcebdae31ce6adc8887ef16c7ee6e1b9a6d
|
122
138
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
123
139
|
repo_dir: gems
|
124
140
|
- name: repl_type_completor
|
125
|
-
version: 0.1.
|
141
|
+
version: 0.1.10
|
126
142
|
source:
|
127
143
|
type: rubygems
|
128
144
|
- name: ripper
|
@@ -134,7 +150,7 @@ gems:
|
|
134
150
|
source:
|
135
151
|
type: git
|
136
152
|
name: ruby/gem_rbs_collection
|
137
|
-
revision:
|
153
|
+
revision: a8dd6bcebdae31ce6adc8887ef16c7ee6e1b9a6d
|
138
154
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
139
155
|
repo_dir: gems
|
140
156
|
- name: rubocop-ast
|
@@ -142,9 +158,13 @@ gems:
|
|
142
158
|
source:
|
143
159
|
type: git
|
144
160
|
name: ruby/gem_rbs_collection
|
145
|
-
revision:
|
161
|
+
revision: a8dd6bcebdae31ce6adc8887ef16c7ee6e1b9a6d
|
146
162
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
147
163
|
repo_dir: gems
|
164
|
+
- name: rubocop-rbs_inline
|
165
|
+
version: 1.3.1
|
166
|
+
source:
|
167
|
+
type: rubygems
|
148
168
|
- name: singleton
|
149
169
|
version: '0'
|
150
170
|
source:
|
@@ -162,7 +182,7 @@ gems:
|
|
162
182
|
source:
|
163
183
|
type: git
|
164
184
|
name: ruby/gem_rbs_collection
|
165
|
-
revision:
|
185
|
+
revision: a8dd6bcebdae31ce6adc8887ef16c7ee6e1b9a6d
|
166
186
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
167
187
|
repo_dir: gems
|
168
188
|
- name: tsort
|
@@ -182,7 +202,7 @@ gems:
|
|
182
202
|
source:
|
183
203
|
type: git
|
184
204
|
name: ruby/gem_rbs_collection
|
185
|
-
revision:
|
205
|
+
revision: a8dd6bcebdae31ce6adc8887ef16c7ee6e1b9a6d
|
186
206
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
187
207
|
repo_dir: gems
|
188
208
|
gemfile_lock_path: Gemfile.lock
|