rub_a_scripts 0.0.1
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 +15 -0
- data/Rakefile +15 -0
- data/bin/rub_a_scripts +1 -0
- data/lib/rub_a_scripts.rb +238 -0
- data/test/test_rub_a_scripts.rb +194 -0
- metadata +52 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZjRkODY1Y2NmYmNhZWI4NDFkYmE4NGU3M2U1ODQxM2YzYjE5ZGNiZQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MWY4ODk2NzFlZjU4NWU2MDcxNTYwZTQ0YmM1ZDJmY2QyYTVjOTY5Nw==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MmY3ODhjOTRkY2FlYzg2MTE0ODk3OWRhMTA5ZGY4MjM1NzRmMmFhMTEzYmQz
|
10
|
+
NmY5MjA3OTkwMGZkNmI1YTYyY2E5MjJiOTM5MGU0ZTdmNmMwNWNmMzA1OGU3
|
11
|
+
MDljYWNhMjZjYTMxZGQzNGNlYTE4MTdjNjg4YmY0ZjY0MmNlZDk=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MjM5ZmNiZGFiOWRjZTc2ZjJhMzhkYjVlOWNjMDJlZTY2ZjgzY2Q0OWVlM2I5
|
14
|
+
N2U4OTg2Zjg3ZWYxZWJiZWE2ODk0ZmZjMTY0NjU2MTE3OTg5NGUzNTRhMmYw
|
15
|
+
YWNjOTRjMjI2ZTJkYWJlZDY1MjdmNjhkY2QyYTQxYjAxYzkzNGI=
|
data/Rakefile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'rake'
|
2
|
+
|
3
|
+
task :build_gem do
|
4
|
+
File.open("#{Dir.pwd}/batch_jobs/build_doc.bat", 'w') {|file|
|
5
|
+
file.write("cd #{Dir.pwd}\n")
|
6
|
+
file.write("rdoc --op #{Dir.pwd}/doc\n")
|
7
|
+
}
|
8
|
+
system("#{Dir.pwd}/batch_jobs/build_doc.bat")
|
9
|
+
FileUtils.rm_rf(Dir.glob("batch_jobs/build_doc.bat"))
|
10
|
+
system("#{Dir.pwd}/batch_jobs/build_gem.bat")
|
11
|
+
system("#{Dir.pwd}/batch_jobs/install_gem.bat")
|
12
|
+
|
13
|
+
#gem_files = Dir.glob("rub_a_scripts*.gem")
|
14
|
+
#FileUtils.rm_rf(gem_files)
|
15
|
+
end
|
data/bin/rub_a_scripts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'rub_a_scripts'
|
@@ -0,0 +1,238 @@
|
|
1
|
+
require "inline"
|
2
|
+
require 'Date'
|
3
|
+
module Inline
|
4
|
+
|
5
|
+
##
|
6
|
+
# VBScript Inline - allow simple inline of VBScript within Ruby.
|
7
|
+
#
|
8
|
+
class VBScript
|
9
|
+
|
10
|
+
##
|
11
|
+
# extra_args: Allow the user to specify any other arguments they want to add. By default //Nologo is added.
|
12
|
+
#
|
13
|
+
attr_accessor :extra_args
|
14
|
+
|
15
|
+
def initialize(mod)
|
16
|
+
@context = mod
|
17
|
+
@src = ""
|
18
|
+
@imports = []
|
19
|
+
@sigs = []
|
20
|
+
@file_name = ''
|
21
|
+
@extra_args = '//Nologo'
|
22
|
+
end
|
23
|
+
|
24
|
+
##
|
25
|
+
# Use by RubyInline to designate new file or to reuse cache. For VBScript
|
26
|
+
# we simply create a new file every times so this will always be set to false.
|
27
|
+
# Also crapped in here a method to clear out the inline folder if files are
|
28
|
+
# more than 3 days old.
|
29
|
+
#
|
30
|
+
def load_cache
|
31
|
+
clear_inline_folder
|
32
|
+
false
|
33
|
+
end
|
34
|
+
|
35
|
+
##
|
36
|
+
# This method will clear out the inline directory if any files is more than 3 days old.
|
37
|
+
#
|
38
|
+
def clear_inline_folder
|
39
|
+
files = Dir.glob("#{Inline.directory}/VBScript*")
|
40
|
+
files.each do |file|
|
41
|
+
file_time = File.ctime(file)
|
42
|
+
today_date = Date.today
|
43
|
+
if ((file_time.day - today_date.day) >= 2) and (file_time.month >= today_date.month) and (file_time.year >= today_date.year)
|
44
|
+
FileUtils.rm_rf(file)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
##
|
50
|
+
# Parse your VBScript to find a function name. Store them sor Ruby
|
51
|
+
# can create a Ruby method with the exact name and parameters list.
|
52
|
+
#
|
53
|
+
def vbscript(src)
|
54
|
+
@src << src << "\n"
|
55
|
+
signature = src.match(/Function\W+([a-zA-Z0-9_]+)\((.*)\)/)
|
56
|
+
@sigs << [signature[1], signature[2], signature[3]] unless !signature
|
57
|
+
if !signature
|
58
|
+
signature = src.match(/Sub\W+([a-zA-Z0-9_]+)\((.*)\)/)
|
59
|
+
@sigs << [signature[1], signature[2], signature[3]] unless !signature
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
##
|
64
|
+
# @build. Build source VBScript file to be later used for execution.
|
65
|
+
# - grabbing all your vbscript source code
|
66
|
+
# - creating a vbscript file and then inputing in the code
|
67
|
+
# - it will also add an extra vbscript function that will
|
68
|
+
# later be called to pass in parameters and output result to
|
69
|
+
# a file so Ruby can pick up.
|
70
|
+
#
|
71
|
+
def build
|
72
|
+
@load_name = @name = "VBScript#{@src.hash.abs}"
|
73
|
+
@file_name = "#{Inline.directory}/#{@name}.vbs"
|
74
|
+
@src << extra_input_fx << "\n"
|
75
|
+
File.open(@file_name, 'w') {|file| file.write(@src)}
|
76
|
+
end
|
77
|
+
|
78
|
+
##
|
79
|
+
# This method is used to dynamically create all the Ruby methods
|
80
|
+
# that is associate with their VBScript methods. No doubt the
|
81
|
+
# most important method of this module as it's reponsible for
|
82
|
+
# creating handling interactions between Ruby and VBScript.
|
83
|
+
#
|
84
|
+
def load
|
85
|
+
@context.module_eval "const_set :#{@name}, Inline::VBScript;"
|
86
|
+
|
87
|
+
@context.module_eval "
|
88
|
+
def clean_cache
|
89
|
+
files = Dir.glob(\"\#{Inline.directory}/VBScript*\")
|
90
|
+
files.each {|file| FileUtils.rm_rf(file)}
|
91
|
+
end
|
92
|
+
def delete_file
|
93
|
+
File.delete('#{@file_name}') if File.exist?('#{@file_name}');
|
94
|
+
end
|
95
|
+
"
|
96
|
+
|
97
|
+
@context.module_eval "
|
98
|
+
def construct_arguments(*args)
|
99
|
+
@argument_to_send = ''
|
100
|
+
if args.class == Array
|
101
|
+
args.each_with_index do |top_level_item, args_index|
|
102
|
+
@argument_to_send += \",\" if args_index > 0
|
103
|
+
if top_level_item.class == Array
|
104
|
+
@argument_to_send += \"Array(\"
|
105
|
+
top_level_item.each_with_index do |inner_item, top_level_index|
|
106
|
+
@argument_to_send += \",\" if top_level_item.count != top_level_index and top_level_index > 0
|
107
|
+
@argument_to_send += construct_arguments(inner_item)
|
108
|
+
end
|
109
|
+
@argument_to_send += \")\"
|
110
|
+
else
|
111
|
+
case
|
112
|
+
when top_level_item.class == String
|
113
|
+
@argument_to_send += %q[\"] + %Q[\#{top_level_item.to_s}] + %q[\"]
|
114
|
+
when top_level_item.class == Fixnum
|
115
|
+
@argument_to_send += top_level_item.to_s
|
116
|
+
when top_level_item.class == TrueClass
|
117
|
+
@argument_to_send += \"True\"
|
118
|
+
when top_level_item.class == FalseClass
|
119
|
+
@argument_to_send += \"False\"
|
120
|
+
else
|
121
|
+
@argument_to_send += top_level_item.to_s
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
return @argument_to_send
|
127
|
+
end
|
128
|
+
"
|
129
|
+
|
130
|
+
@sigs.each do |sig|
|
131
|
+
@context.module_eval "
|
132
|
+
def #{sig[0]}(*args);
|
133
|
+
@arguments_to_send = construct_arguments(args)
|
134
|
+
@arguments_to_send.sub!(\"Array(\",\"\").chomp!(\")\")
|
135
|
+
@arguments_to_send.gsub!(/\"/, \'\\'\')
|
136
|
+
@arguments_to_send.chomp!
|
137
|
+
execution_str = 'cscript #{@file_name} \"#{sig[0]}' + '(' + @arguments_to_send + ')\" #{@extra_args}';
|
138
|
+
|
139
|
+
IO.popen(execution_str).each do |line|
|
140
|
+
case
|
141
|
+
when (line.strip == \"nothing\" or line.strip == \"null\" or line.strip == \"Empty\")
|
142
|
+
@result = nil
|
143
|
+
when line.strip == \"False\"
|
144
|
+
@result = false
|
145
|
+
when line.strip == \"True\"
|
146
|
+
@result = true
|
147
|
+
when line.strip[/^[-+]?[0-9]+$/]
|
148
|
+
@result = line.strip.to_i
|
149
|
+
when line.strip[/^[-+]?[\\d]+(\\.[\\d]+){0,1}$/]
|
150
|
+
@result = line.strip.to_f
|
151
|
+
when line.strip[/Array\\[.*\\]/]
|
152
|
+
begin
|
153
|
+
@result = eval(line.strip.gsub(\"Array\",\"\").gsub(\"True\",\"true\").gsub(\"False\",\"false\"))
|
154
|
+
rescue => e
|
155
|
+
@result = line.strip;
|
156
|
+
warn(e)
|
157
|
+
end
|
158
|
+
else
|
159
|
+
@result = line.strip;
|
160
|
+
end
|
161
|
+
end.close
|
162
|
+
return @result
|
163
|
+
end"
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
##
|
168
|
+
# The inside man. This source code and methods is added and inject into the VBScript.
|
169
|
+
# It's responsible for picking up arguments and executing the VBScript function
|
170
|
+
# being called. Will also write result to stdout so that Ruby can pick up.
|
171
|
+
# A few basic mapping and error handling is also being done here vs the load method on the Ruby side.
|
172
|
+
#
|
173
|
+
def extra_input_fx()
|
174
|
+
my_str1 = '
|
175
|
+
Function fxWriteOutput
|
176
|
+
InputArgs = WScript.Arguments.Item(0)
|
177
|
+
InputArgs = Replace(InputArgs, "\'", chr(34))
|
178
|
+
if WScript.Arguments.Count() > 0 Then
|
179
|
+
On Error Resume Next
|
180
|
+
fx_value = Eval(InputArgs)
|
181
|
+
If Err.Number <> 0 Then
|
182
|
+
If Err.Description = "Object doesn\'t support this property or method" Then
|
183
|
+
fx_value = "Error: " & Err.Description & ". Sorry!!! Object are not mapped."
|
184
|
+
End If
|
185
|
+
Err.Clear
|
186
|
+
End If
|
187
|
+
On Error Goto 0
|
188
|
+
' + "\n"
|
189
|
+
my_str_3 = '
|
190
|
+
if IsArray(fx_value) = False Then
|
191
|
+
if fx_value = True Then
|
192
|
+
WScript.Echo "True"
|
193
|
+
elseif IsEmpty(fx_value) Then
|
194
|
+
WScript.Echo "Empty"
|
195
|
+
elseif fx_value = False Then
|
196
|
+
WScript.Echo "False"
|
197
|
+
else
|
198
|
+
WScript.Echo fx_value
|
199
|
+
End If
|
200
|
+
else
|
201
|
+
my_array_list = "Array" & abcExpandArray(fx_value)
|
202
|
+
WScript.Echo my_array_list
|
203
|
+
End if
|
204
|
+
End if
|
205
|
+
End Function
|
206
|
+
fxWriteOutput()
|
207
|
+
|
208
|
+
Function abcExpandArray(fx_value)
|
209
|
+
If IsArray(fx_value) Then
|
210
|
+
For i = (lbound(fx_value)) to ubound(fx_value)
|
211
|
+
if i > 0 Then
|
212
|
+
finalStr = finalStr & "," & abcExpandArray(fx_value(i))
|
213
|
+
Else
|
214
|
+
finalStr = finalStr & abcExpandArray(fx_value(i))
|
215
|
+
End If
|
216
|
+
Next
|
217
|
+
abcExpandArray = "[" & finalStr & "]"
|
218
|
+
Else
|
219
|
+
If IsNumeric(fx_value) Then
|
220
|
+
abcExpandArray = fx_value
|
221
|
+
ElseIf fx_value = True Then
|
222
|
+
abcExpandArray = "True"
|
223
|
+
ElseIf IsEmpty(fx_value) Then
|
224
|
+
abcExpandArray = "Empty"
|
225
|
+
ElseIf fx_value = False Then
|
226
|
+
abcExpandArray = "False"
|
227
|
+
Else
|
228
|
+
abcExpandArray = """" & fx_value & """"
|
229
|
+
End If
|
230
|
+
End If
|
231
|
+
End Function
|
232
|
+
'
|
233
|
+
return (my_str1 + my_str_3)
|
234
|
+
end
|
235
|
+
|
236
|
+
end
|
237
|
+
|
238
|
+
end
|
@@ -0,0 +1,194 @@
|
|
1
|
+
require 'rub_a_scripts'
|
2
|
+
require 'minitest'
|
3
|
+
require 'minitest/autorun'
|
4
|
+
|
5
|
+
class MyVBScriptClass
|
6
|
+
|
7
|
+
inline :VBScript do |builder|
|
8
|
+
builder.vbscript '
|
9
|
+
Function fnSum(var1,var2)
|
10
|
+
vrSum = var1 + var2
|
11
|
+
fnSum = vrSum
|
12
|
+
End Function
|
13
|
+
'
|
14
|
+
|
15
|
+
builder.vbscript '
|
16
|
+
Function fnSubtract(var1,var2)
|
17
|
+
vrSubtract = var1 - var2
|
18
|
+
fnSubtract = vrSubtract
|
19
|
+
End Function
|
20
|
+
'
|
21
|
+
|
22
|
+
builder.vbscript '
|
23
|
+
Function fnString(input)
|
24
|
+
fnString = input & " World!!!"
|
25
|
+
End Function
|
26
|
+
'
|
27
|
+
|
28
|
+
builder.vbscript '
|
29
|
+
Function fnBoolean(input)
|
30
|
+
if input = True then
|
31
|
+
fnBoolean = False
|
32
|
+
else
|
33
|
+
fnBoolean = True
|
34
|
+
End If
|
35
|
+
End Function
|
36
|
+
'
|
37
|
+
|
38
|
+
builder.vbscript'
|
39
|
+
\'WScript.Echo "Hello Cruel Cruel World!!!"
|
40
|
+
'
|
41
|
+
|
42
|
+
builder.vbscript '
|
43
|
+
Function fnArray(input)
|
44
|
+
fnArray = input(2)
|
45
|
+
End Function
|
46
|
+
'
|
47
|
+
|
48
|
+
builder.vbscript '
|
49
|
+
Function fn2Array(input, input2)
|
50
|
+
fn2Array = input2(5)
|
51
|
+
End Function
|
52
|
+
'
|
53
|
+
|
54
|
+
builder.vbscript '
|
55
|
+
Function fnNull()
|
56
|
+
fnNull = "nothing"
|
57
|
+
End Function
|
58
|
+
'
|
59
|
+
|
60
|
+
builder.vbscript '
|
61
|
+
Function fnDecimal()
|
62
|
+
fnDecimal = 123.13
|
63
|
+
End Function
|
64
|
+
'
|
65
|
+
|
66
|
+
builder.vbscript '
|
67
|
+
Function fnDecimalNegative()
|
68
|
+
fnDecimalNegative = -1234567.13
|
69
|
+
End Function
|
70
|
+
'
|
71
|
+
|
72
|
+
builder.vbscript '
|
73
|
+
Function fnReturnArray()
|
74
|
+
fnReturnArray = Array(3,9,4,0,8,2)
|
75
|
+
End Function
|
76
|
+
'
|
77
|
+
|
78
|
+
builder.vbscript '
|
79
|
+
Function fnReturn2DArray()
|
80
|
+
array1 = Array(1,3)
|
81
|
+
array2 = Array("Hello", "World")
|
82
|
+
fnReturn2DArray = Array(array1,array2,True)
|
83
|
+
End Function
|
84
|
+
'
|
85
|
+
|
86
|
+
builder.vbscript '
|
87
|
+
Function fnProcessMultiDimArray(input)
|
88
|
+
fnProcessMultiDimArray = input
|
89
|
+
End Function
|
90
|
+
'
|
91
|
+
|
92
|
+
builder.vbscript '
|
93
|
+
Function fnObject()
|
94
|
+
set fso = CreateObject("Scripting.FileSystemObject")
|
95
|
+
Set fnObject = fso
|
96
|
+
End Function
|
97
|
+
'
|
98
|
+
|
99
|
+
builder.vbscript '
|
100
|
+
Sub subString()
|
101
|
+
WScript.Echo "I am inside a Procedures!!!"
|
102
|
+
response.write("I was written by a sub procedure")
|
103
|
+
End Sub
|
104
|
+
'
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
109
|
+
|
110
|
+
class TestRubAScript < Minitest::Test
|
111
|
+
def setup
|
112
|
+
@vb_script_obj = MyVBScriptClass.new()
|
113
|
+
@my_str = "Hello"
|
114
|
+
@my_array = ['a', 'b', 'c', 'd', 'e', 'f']
|
115
|
+
@my_array2 = ["1", "2", "3", "4", "5", "6"]
|
116
|
+
@my_array3 = [9,[0],[[1],[[2],[3]],[4]],"Hello World"]
|
117
|
+
@error_str = "Error: Object doesn't support this property or method. Sorry!!! Object are not mapped."
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_fnSum
|
121
|
+
assert_equal 8, @vb_script_obj.fnSum(3,5)
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_fnSubtract
|
125
|
+
assert_equal 5, @vb_script_obj.fnSubtract(8,3)
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_fnSubtractNegative
|
129
|
+
assert_equal -5, @vb_script_obj.fnSubtract(3,8)
|
130
|
+
end
|
131
|
+
|
132
|
+
def test_fnString
|
133
|
+
assert_equal "Hello World!!!", @vb_script_obj.fnString('Hello')
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_fnString_with_var
|
137
|
+
assert_equal "Hello World!!!", @vb_script_obj.fnString(@my_str)
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_fnBoolean_true
|
141
|
+
assert_equal false, @vb_script_obj.fnBoolean(true)
|
142
|
+
end
|
143
|
+
|
144
|
+
def test_fnBoolean_false
|
145
|
+
assert_equal true, @vb_script_obj.fnBoolean(false)
|
146
|
+
end
|
147
|
+
|
148
|
+
def test_fnArray
|
149
|
+
assert_equal "c", @vb_script_obj.fnArray(@my_array)
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_2fnArray
|
153
|
+
assert_equal 6, @vb_script_obj.fn2Array(@my_array, @my_array2)
|
154
|
+
end
|
155
|
+
|
156
|
+
def test_fnNull
|
157
|
+
assert_equal nil, @vb_script_obj.fnNull
|
158
|
+
end
|
159
|
+
|
160
|
+
def test_fnDecimal
|
161
|
+
assert_equal 123.13, @vb_script_obj.fnDecimal
|
162
|
+
end
|
163
|
+
|
164
|
+
def test_fnDecimal
|
165
|
+
assert_equal -1234567.13, @vb_script_obj.fnDecimalNegative
|
166
|
+
end
|
167
|
+
|
168
|
+
def test_fnReturnArray
|
169
|
+
assert_equal [3,9,4,0,8,2], @vb_script_obj.fnReturnArray()
|
170
|
+
end
|
171
|
+
|
172
|
+
def test_fnReturn2DArray
|
173
|
+
assert_equal [[1,3],['Hello', 'World'], true], @vb_script_obj.fnReturn2DArray()
|
174
|
+
end
|
175
|
+
|
176
|
+
def test_fnProcessMultiDimArray
|
177
|
+
assert_equal @my_array3, @vb_script_obj.fnProcessMultiDimArray(@my_array3)
|
178
|
+
end
|
179
|
+
|
180
|
+
def test_fnObject
|
181
|
+
assert_equal @error_str, @vb_script_obj.fnObject
|
182
|
+
end
|
183
|
+
|
184
|
+
def test_subString()
|
185
|
+
assert_equal nil, @vb_script_obj.subString()
|
186
|
+
end
|
187
|
+
|
188
|
+
end
|
189
|
+
|
190
|
+
Minitest.after_run {
|
191
|
+
@test = MyVBScriptClass.new()
|
192
|
+
@test.delete_file
|
193
|
+
@test.clean_cache
|
194
|
+
}
|
metadata
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rub_a_scripts
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kent T. Le
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-25 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: An extension of RubyInline. Allow for the use of VBScript in Ruby.
|
14
|
+
email: Le.78@osu.edu
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- Rakefile
|
20
|
+
- bin/rub_a_scripts
|
21
|
+
- lib/rub_a_scripts.rb
|
22
|
+
- test/test_rub_a_scripts.rb
|
23
|
+
homepage: https://github.com/KentViet/rub_a_scripts
|
24
|
+
licenses: []
|
25
|
+
metadata: {}
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
- test
|
31
|
+
- bin
|
32
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - ! '>='
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '0'
|
37
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ! '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
requirements: []
|
43
|
+
rubyforge_project:
|
44
|
+
rubygems_version: 2.2.2
|
45
|
+
signing_key:
|
46
|
+
specification_version: 4
|
47
|
+
summary: An extension of RubyInline gem. rub_a_scripts allows you to write VBScript
|
48
|
+
within Ruby code. The extensions are then automatically loaded into the class/module
|
49
|
+
that defines it. Allowing ruby to call on VBScript function and procedure. Basic
|
50
|
+
data types are mapped as such facilitate the exchange of data between the two languages.
|
51
|
+
test_files:
|
52
|
+
- test/test_rub_a_scripts.rb
|