rscript 0.1.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/lib/rscript.rb +75 -0
- data/lib/rscript_base.rb +41 -0
- metadata +56 -0
data/lib/rscript.rb
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
#file: rscript.rb
|
3
|
+
|
4
|
+
# created: 1-Jul-2009
|
5
|
+
# updated: 09-Jul-2010
|
6
|
+
|
7
|
+
# description
|
8
|
+
# - This script executes Ruby script contained within an XML file.
|
9
|
+
# - The XML file can be stored locally or on a website.
|
10
|
+
# - The 'require' statement for foreign scripts has been replaced
|
11
|
+
# with the script tag (e.g. <script src="rexml_helper.rb"/>)
|
12
|
+
|
13
|
+
# arguments:
|
14
|
+
# - *job, the filename, and the *script arguments (* (asterisk) denotes
|
15
|
+
# these arguments are optional.
|
16
|
+
|
17
|
+
# usage:
|
18
|
+
# - rscript //job:xxxx script_file.rsf [script arguments]
|
19
|
+
|
20
|
+
# MIT license - basically you can do anything you like with the script.
|
21
|
+
# http://www.opensource.org/licenses/mit-license.php
|
22
|
+
|
23
|
+
|
24
|
+
require 'rcscript_base'
|
25
|
+
|
26
|
+
class RScript < RScriptBase
|
27
|
+
|
28
|
+
def initialize()
|
29
|
+
end
|
30
|
+
|
31
|
+
def read(args=[])
|
32
|
+
threads = []
|
33
|
+
if args.to_s[/\/\/job:/] then
|
34
|
+
|
35
|
+
ajob = []
|
36
|
+
|
37
|
+
args.each_index do |i|
|
38
|
+
if args[i][/\/\/job:/] then
|
39
|
+
ajob << "@id='#{$'}'"; args[i] = nil
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
args.compact!
|
44
|
+
|
45
|
+
out = run_rsf(args) do |doc|
|
46
|
+
doc.root.elements.to_a("//job[#{ajob.join(' or ')}]").map do |job|
|
47
|
+
job.elements.to_a('script').map {|s| run_script(s)}.join("\n")
|
48
|
+
end.join("\n")
|
49
|
+
end
|
50
|
+
|
51
|
+
else
|
52
|
+
out = run_rsf(args) {|doc| doc.root.elements.to_a('//script').map {|s| run_script(s)}}
|
53
|
+
end
|
54
|
+
|
55
|
+
[out, args]
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def read_rsf(args=[])
|
61
|
+
rsfile = args[0]; args.shift
|
62
|
+
|
63
|
+
$rsfile = rsfile[/[a-zA-z0-9]+(?=\.rsf)/]
|
64
|
+
yield(Document.new(read_sourcecode(rsfile)))
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
if __FILE__ == $0 then
|
71
|
+
raw_args = ARGV
|
72
|
+
rs = RScript.new()
|
73
|
+
code, args = rs.run(raw_args)
|
74
|
+
puts eval(code).join("\n")
|
75
|
+
end
|
data/lib/rscript_base.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
#file: rscript_base.rb
|
3
|
+
|
4
|
+
require 'cgi'
|
5
|
+
require 'open-uri'
|
6
|
+
require 'rexml/document'
|
7
|
+
include REXML
|
8
|
+
|
9
|
+
class RScriptBase
|
10
|
+
|
11
|
+
def initialize()
|
12
|
+
end
|
13
|
+
|
14
|
+
def read(doc)
|
15
|
+
doc.root.elements.to_a('//script').map {|s| run_script(s)}.join(';')
|
16
|
+
end
|
17
|
+
|
18
|
+
protected
|
19
|
+
|
20
|
+
def read_script(script)
|
21
|
+
out_buffer = ''
|
22
|
+
src = script.attribute('src')
|
23
|
+
if src then
|
24
|
+
out_buffer = read_sourcecode(script.attribute('src').value)
|
25
|
+
else
|
26
|
+
code = script.text.to_s.strip.length > 0 ? script.text : script.cdatas.join.strip
|
27
|
+
out_buffer = code
|
28
|
+
end
|
29
|
+
out_buffer
|
30
|
+
end
|
31
|
+
|
32
|
+
def read_sourcecode(rsf)
|
33
|
+
if rsf[/http:\/\//] then
|
34
|
+
return open(rsf, "UserAgent" => "Ruby-SourceCodeReader").read
|
35
|
+
else
|
36
|
+
return File.open(rsf,'r').read
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
metadata
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rscript
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors: []
|
7
|
+
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2010-08-09 00:00:00 +01:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description:
|
17
|
+
email:
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- lib/rscript_base.rb
|
26
|
+
- lib/rscript.rb
|
27
|
+
has_rdoc: true
|
28
|
+
homepage:
|
29
|
+
licenses: []
|
30
|
+
|
31
|
+
post_install_message:
|
32
|
+
rdoc_options: []
|
33
|
+
|
34
|
+
require_paths:
|
35
|
+
- lib
|
36
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: "0"
|
41
|
+
version:
|
42
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: "0"
|
47
|
+
version:
|
48
|
+
requirements: []
|
49
|
+
|
50
|
+
rubyforge_project:
|
51
|
+
rubygems_version: 1.3.5
|
52
|
+
signing_key:
|
53
|
+
specification_version: 3
|
54
|
+
summary: rscript previously known as rcscript, reads Ruby code which is embedded within an rscript XML file.
|
55
|
+
test_files: []
|
56
|
+
|