rascut 0.1.3 → 0.2.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.
- data/ChangeLog +5 -0
- data/README +3 -3
- data/Rakefile +9 -2
- data/bin/rascut +0 -0
- data/bin/rasdoc +25 -0
- data/lib/rascut.rb +1 -1
- data/lib/rascut/asdoc/data.rb +125 -0
- data/lib/rascut/asdoc/generator.rb +92 -0
- data/lib/rascut/asdoc/httpd.rb +124 -0
- data/lib/rascut/asdoc/parser.rb +69 -0
- data/lib/rascut/command.rb +9 -10
- data/lib/rascut/fcsh_wrapper.rb +11 -2
- data/lib/rascut/file_observer.rb +2 -1
- data/lib/rascut/httpd.rb +88 -103
- data/lib/rascut/plugin/generate_ctags.rb +23 -0
- data/lib/rascut/plugin/screen.rb +58 -0
- data/lib/rascut/utils.rb +65 -0
- metadata +81 -62
data/ChangeLog
CHANGED
data/README
CHANGED
@@ -16,14 +16,14 @@ Rascut is Ruby ActionSCript UTility :D
|
|
16
16
|
|
17
17
|
== REQUIREMENTS:
|
18
18
|
|
19
|
-
* hoe
|
20
|
-
* rack
|
21
19
|
* mongrel
|
22
20
|
* rake
|
23
21
|
|
24
22
|
== INSTALL:
|
25
23
|
|
26
24
|
* gem install rascut
|
25
|
+
or
|
26
|
+
* gem install hotchpotch-rascut
|
27
27
|
|
28
28
|
== OTHER:
|
29
29
|
* vendor/js/swfobject.js is SWFObject by http://blog.deconcept.com/swfobject/
|
@@ -56,4 +56,4 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
56
56
|
== SPECIAL THANKS
|
57
57
|
Thank you feedback!
|
58
58
|
|
59
|
-
id:os0x, yugui, id:wanpark, saqoosha, id:ameema
|
59
|
+
id:os0x, yugui, id:wanpark, saqoosha, id:ameema, id:cho45
|
data/Rakefile
CHANGED
@@ -9,7 +9,8 @@ require 'rake/contrib/rubyforgepublisher'
|
|
9
9
|
require 'fileutils'
|
10
10
|
include FileUtils
|
11
11
|
|
12
|
-
|
12
|
+
$LOAD_PATH.unshift "lib"
|
13
|
+
require 'rascut'
|
13
14
|
|
14
15
|
AUTHOR = "Yuichi Tateno"
|
15
16
|
EMAIL = "hotchpotch@nospam@gmail.com"
|
@@ -62,7 +63,7 @@ spec = Gem::Specification.new do |s|
|
|
62
63
|
|
63
64
|
s.add_dependency('rake')
|
64
65
|
s.add_dependency('mongrel')
|
65
|
-
s.add_dependency('
|
66
|
+
s.add_dependency('json_pure')
|
66
67
|
s.required_ruby_version = '>= 1.8.2'
|
67
68
|
|
68
69
|
s.files = %w(README ChangeLog Rakefile) +
|
@@ -135,3 +136,9 @@ task :release => [:clean, :package] do |t|
|
|
135
136
|
puts "Releasing #{NAME} v. #{VERS}"
|
136
137
|
rf.add_release RUBYFORGE_PROJECT, NAME, VERS, *files
|
137
138
|
end
|
139
|
+
|
140
|
+
desc 'Show information about the gem.'
|
141
|
+
task :debug_gem do
|
142
|
+
puts spec.to_ruby
|
143
|
+
end
|
144
|
+
|
data/bin/rascut
CHANGED
File without changes
|
data/bin/rasdoc
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'rascut/asdoc/data'
|
5
|
+
require 'rascut/asdoc/generator'
|
6
|
+
rescue LoadError
|
7
|
+
require 'rubygems'
|
8
|
+
require 'rascut/asdoc/generator'
|
9
|
+
end
|
10
|
+
|
11
|
+
c = ARGV.shift
|
12
|
+
|
13
|
+
case c
|
14
|
+
when 'dict'
|
15
|
+
puts Rascut::Asdoc::Data.asdoc_dict
|
16
|
+
when 'import_dict'
|
17
|
+
puts Rascut::Asdoc::Data.asdoc_import_dict
|
18
|
+
when 'generate'
|
19
|
+
g = Rascut::Asdoc::Generator.new
|
20
|
+
g.asdoc = '/home/gorou/local/flex3/bin/asdoc'
|
21
|
+
g.generate_asdoc ARGV.shift
|
22
|
+
else
|
23
|
+
puts 'rasdoc [dict import_dict generate]'
|
24
|
+
exit 1
|
25
|
+
end
|
data/lib/rascut.rb
CHANGED
@@ -0,0 +1,125 @@
|
|
1
|
+
|
2
|
+
require 'rubygems'
|
3
|
+
require 'logger'
|
4
|
+
require 'rascut/utils'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
class Array
|
8
|
+
def uniq_by
|
9
|
+
inject({}) do |hash, item|
|
10
|
+
hash[yield(item)] ||= item
|
11
|
+
hash
|
12
|
+
end.values
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
module Rascut
|
18
|
+
module Asdoc
|
19
|
+
class Data
|
20
|
+
class <<
|
21
|
+
include Utils
|
22
|
+
def asdoc_json
|
23
|
+
asdoc_data.to_json
|
24
|
+
end
|
25
|
+
|
26
|
+
def asdoc_import_dict
|
27
|
+
res = []
|
28
|
+
Utils.rascut_db_read do |db|
|
29
|
+
db[:asdoc].each do |key, val|
|
30
|
+
val.each {|v|
|
31
|
+
next if v[:classname][0..0].match(/[a-z]/)
|
32
|
+
res << "#{v[:classname]} #{v[:package]}.#{v[:classname]}"
|
33
|
+
}
|
34
|
+
end
|
35
|
+
end
|
36
|
+
res.sort.uniq.join("\n")
|
37
|
+
end
|
38
|
+
|
39
|
+
def asdoc_dict
|
40
|
+
res = []
|
41
|
+
Utils.rascut_db_read do |db|
|
42
|
+
db[:asdoc].each do |key, val|
|
43
|
+
val.each {|v|
|
44
|
+
res << v[:classname] if v[:classname].length >= 4
|
45
|
+
v[:methods].each {|met|
|
46
|
+
res << met[:name] if met[:name].length >= 4
|
47
|
+
}
|
48
|
+
}
|
49
|
+
end
|
50
|
+
end
|
51
|
+
res.sort.uniq.join("\n")
|
52
|
+
end
|
53
|
+
|
54
|
+
def asdoc_data
|
55
|
+
classes = []
|
56
|
+
packages = []
|
57
|
+
methods = []
|
58
|
+
Utils.rascut_db_read do |db|
|
59
|
+
db[:asdoc].each do |key, val|
|
60
|
+
val.each {|v|
|
61
|
+
classes << {
|
62
|
+
:classname => v[:classname],
|
63
|
+
:package => v[:package],
|
64
|
+
:asdoc_dir => v[:asdoc_dir]
|
65
|
+
}
|
66
|
+
|
67
|
+
packages << {
|
68
|
+
:package => v[:package],
|
69
|
+
:asdoc_dir => v[:asdoc_dir]
|
70
|
+
}
|
71
|
+
|
72
|
+
v[:methods].each {|met|
|
73
|
+
met.delete :code
|
74
|
+
met.delete :summary
|
75
|
+
met[:package] = v[:package]
|
76
|
+
met[:classname] = v[:classname]
|
77
|
+
met[:href] = "#{v[:asdoc_dir]}/#{v[:filename]}#{met[:href]}"
|
78
|
+
methods << met
|
79
|
+
}
|
80
|
+
}
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
packages = packages.uniq_by {|s| s.to_a.join('_')}.sort_by {|a| a[:package]}
|
85
|
+
classes = classes.uniq_by {|s| s.to_a.join('_')}.sort_by {|a| a[:classname]}
|
86
|
+
{
|
87
|
+
:methods => methods.sort_by {|a| a[:name]},
|
88
|
+
:classes => classes,
|
89
|
+
:packages => packages
|
90
|
+
}
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
if __FILE__ == $0
|
99
|
+
require 'benchmark'
|
100
|
+
puts Rascut::Asdoc::Data.asdoc_dict
|
101
|
+
|
102
|
+
#exit
|
103
|
+
#p res.select{|i| i[:name].index('draw') == 0 }.length
|
104
|
+
|
105
|
+
#Benchmark.bm do |x|
|
106
|
+
# x.report {
|
107
|
+
# 100.times {
|
108
|
+
# p = []
|
109
|
+
# res.select{|i| i[:name].index('draw') == 0 }
|
110
|
+
# }
|
111
|
+
# }
|
112
|
+
# x.report {
|
113
|
+
# 100.times {
|
114
|
+
# res.select{|i| i[:name].match(/^draw/) }
|
115
|
+
# }
|
116
|
+
# }
|
117
|
+
# x.report {
|
118
|
+
# 100.times {
|
119
|
+
# res.select{|i| i[:name][0..3] == 'draw' }
|
120
|
+
# }
|
121
|
+
# }
|
122
|
+
#end
|
123
|
+
end
|
124
|
+
|
125
|
+
|
@@ -0,0 +1,92 @@
|
|
1
|
+
|
2
|
+
require 'rubygems'
|
3
|
+
require 'hpricot'
|
4
|
+
require 'pp'
|
5
|
+
require 'nkf'
|
6
|
+
require 'logger'
|
7
|
+
require 'pathname'
|
8
|
+
require 'uri'
|
9
|
+
require 'rascut/utils'
|
10
|
+
require 'rascut/asdoc/parser'
|
11
|
+
require 'rascut/asdoc/data'
|
12
|
+
|
13
|
+
module Rascut
|
14
|
+
module Asdoc
|
15
|
+
class Generator
|
16
|
+
include Utils
|
17
|
+
|
18
|
+
def initialize(logger = nil)
|
19
|
+
@logger = Logger.new(STDOUT)
|
20
|
+
@logger.level = Logger::DEBUG
|
21
|
+
@asdoc = 'asdoc'
|
22
|
+
end
|
23
|
+
attr_accessor :asdoc
|
24
|
+
|
25
|
+
def generate_asdoc(source_path)
|
26
|
+
@logger.info "generate documents: #{source_path}"
|
27
|
+
cmd = "#{asdoc} -doc-sources '#{source_path}' -output '#{asdoc_home.join(path_escape(source_path.to_s))}'"
|
28
|
+
@logger.debug cmd
|
29
|
+
`#{cmd}`
|
30
|
+
generate_list_by_source_path(source_path)
|
31
|
+
end
|
32
|
+
|
33
|
+
def generate_asdoc_by_config(flex_config)
|
34
|
+
source = Hpricot(flex_config)
|
35
|
+
files = source.search('source-path path-element').map {|el| Pathname.new(el.inner_text) }
|
36
|
+
files.each do |file|
|
37
|
+
generate_asdoc file.realpath
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def generate_list_by_source_path(source_path)
|
42
|
+
generate_list(path_escape(source_path.to_s))
|
43
|
+
end
|
44
|
+
|
45
|
+
def generate_list(path)
|
46
|
+
@logger.info "generate list"
|
47
|
+
#Pathname.glob("#{asdoc_home}/#{asdoc_dir}").each do |asdoc|
|
48
|
+
asdoc = asdoc_home.join(path)
|
49
|
+
@logger.info "#{asdoc}"
|
50
|
+
Pathname.glob("#{asdoc}/*/**/*.html") do |file|
|
51
|
+
next if file.to_s.match(/((class-list.html)|(package-detail.html))$/)
|
52
|
+
r = Rascut::Asdoc::Parser.new(file.read, @logger)
|
53
|
+
r.parse
|
54
|
+
#pp file.to_s, r.package, r.classname#, r.methods
|
55
|
+
list = {
|
56
|
+
:package => r.package,
|
57
|
+
:classname => r.classname,
|
58
|
+
:methods => r.methods,
|
59
|
+
:filename => file.relative_path_from(asdoc).to_s,
|
60
|
+
:asdoc_dir => asdoc.basename.to_s,
|
61
|
+
}
|
62
|
+
rascut_db do |db|
|
63
|
+
db[:asdoc] ||= {}
|
64
|
+
db[:asdoc][list[:asdoc_dir]] ||= []
|
65
|
+
db[:asdoc][list[:asdoc_dir]] << list
|
66
|
+
end
|
67
|
+
end
|
68
|
+
#end
|
69
|
+
#generate_json
|
70
|
+
end
|
71
|
+
|
72
|
+
def generate_json
|
73
|
+
@logger.info "generate asdoc's index(json)."
|
74
|
+
json = Rascut::Asdoc::Data.asdoc_json
|
75
|
+
asdoc_home.join('asdoc.json').open('w') {|f| f.puts json }
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
if __FILE__ == $0
|
82
|
+
include Rascut::Asdoc
|
83
|
+
flex_config = '/home/gorou/local/flex2/frameworks/flex-config.xml'
|
84
|
+
g = Generator.new #
|
85
|
+
g.asdoc = '/home/gorou/local/flex3/bin/asdoc'
|
86
|
+
#g.generate_asdoc_by_config(open(flex_config).read)
|
87
|
+
#asdoc_dir = '/home/gorou/svn/as3/swfassist/src'
|
88
|
+
asdoc_dir = '/home/gorou/svn/as3rails2u/trunk/src'
|
89
|
+
#g.generate_asdoc(asdoc_dir)
|
90
|
+
g.generate_list_by_source_path asdoc_dir
|
91
|
+
end
|
92
|
+
|
@@ -0,0 +1,124 @@
|
|
1
|
+
|
2
|
+
require 'rubygems'
|
3
|
+
require 'mongrel'
|
4
|
+
require 'mongrel/handlers'
|
5
|
+
|
6
|
+
require 'rascut/utils'
|
7
|
+
require 'rascut/asdoc/data'
|
8
|
+
require 'thread'
|
9
|
+
require 'logger'
|
10
|
+
require 'pathname'
|
11
|
+
require 'json'
|
12
|
+
|
13
|
+
module Rascut
|
14
|
+
module Asdoc
|
15
|
+
class Httpd
|
16
|
+
include Utils
|
17
|
+
def initialize
|
18
|
+
@logger = Logger.new(STDOUT)
|
19
|
+
@threads = []
|
20
|
+
@data = Rascut::Asdoc::Data.asdoc_data
|
21
|
+
end
|
22
|
+
attr_reader :command
|
23
|
+
|
24
|
+
def run
|
25
|
+
port = config[:port] || 3002
|
26
|
+
host = config[:bind_address] || '0.0.0.0'
|
27
|
+
|
28
|
+
@http_server = Mongrel::HttpServer.new(host, port)
|
29
|
+
@http_server.register('/', Mongrel::DirHandler.new(asdoc_home.to_s))
|
30
|
+
@http_server.register('/json', json_handler)
|
31
|
+
@http_server.run
|
32
|
+
logger.info "Start Mongrel: http://#{host}:#{port}/"
|
33
|
+
end
|
34
|
+
attr_reader :data
|
35
|
+
|
36
|
+
def json_handler
|
37
|
+
ProcHandler.new do |req, res|
|
38
|
+
ary = []
|
39
|
+
params = Mongrel::HttpRequest.query_parse(req.params['QUERY_STRING'])
|
40
|
+
if word = params['word']
|
41
|
+
method_re, class_re, package_re = *search_regexes(word.strip)
|
42
|
+
|
43
|
+
c = 0
|
44
|
+
if method_re
|
45
|
+
@data[:methods].each do |i|
|
46
|
+
if i[:name].match method_re
|
47
|
+
next if class_re && !i[:classname].match(class_re)
|
48
|
+
next if package_re && !i[:package].match(package_re)
|
49
|
+
ary << i
|
50
|
+
c += 1
|
51
|
+
break if c >= 20
|
52
|
+
end
|
53
|
+
end
|
54
|
+
elsif class_re
|
55
|
+
@data[:classes].each do |i|
|
56
|
+
if i[:classname].match class_re
|
57
|
+
next if package_re && !i[:package].match(package_re)
|
58
|
+
ary << i
|
59
|
+
c += 1
|
60
|
+
break if c >= 20
|
61
|
+
end
|
62
|
+
end
|
63
|
+
elsif package_re
|
64
|
+
@data[:packages].each do |i|
|
65
|
+
if i[:package].match package_re
|
66
|
+
ary << i
|
67
|
+
c += 1
|
68
|
+
break if c >= 20
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
res.start do |head, out|
|
75
|
+
head['Content-Type'] = 'application/json'
|
76
|
+
out << ary.to_json
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def search_regexes(w)
|
82
|
+
method_re = class_re = package_re = nil
|
83
|
+
|
84
|
+
words = w.split(/\s+/)
|
85
|
+
words.each do |word|
|
86
|
+
case word[0..0]
|
87
|
+
when '.'
|
88
|
+
#package
|
89
|
+
package_re = /#{Regexp.escape(word[1..-1])}/
|
90
|
+
when /[A-Z]/
|
91
|
+
# class
|
92
|
+
class_re = /#{Regexp.escape(word)}/
|
93
|
+
#when '#'
|
94
|
+
else
|
95
|
+
# method
|
96
|
+
method_re = /^#{Regexp.escape(word.sub('#', ''))}/
|
97
|
+
end
|
98
|
+
end
|
99
|
+
[method_re, class_re, package_re]
|
100
|
+
end
|
101
|
+
|
102
|
+
|
103
|
+
def stop
|
104
|
+
# XXX
|
105
|
+
# @http_server.stop
|
106
|
+
end
|
107
|
+
|
108
|
+
def config
|
109
|
+
#command.config
|
110
|
+
{}
|
111
|
+
end
|
112
|
+
|
113
|
+
def logger
|
114
|
+
@logger
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
if __FILE__ == $0
|
121
|
+
Rascut::Asdoc::Httpd.new.run
|
122
|
+
Thread.stop
|
123
|
+
end
|
124
|
+
|
@@ -0,0 +1,69 @@
|
|
1
|
+
|
2
|
+
require 'rubygems'
|
3
|
+
require 'hpricot'
|
4
|
+
require 'pp'
|
5
|
+
require 'nkf'
|
6
|
+
require 'logger'
|
7
|
+
|
8
|
+
module Rascut
|
9
|
+
module Asdoc
|
10
|
+
class Parser
|
11
|
+
def initialize(source, logger = nil)
|
12
|
+
source = NKF::nkf('-m0 -w', source)
|
13
|
+
@logger = logger || Logger.new(STDOUT)
|
14
|
+
@logger.level = Logger::DEBUG
|
15
|
+
@source = Hpricot(source)
|
16
|
+
@methods = []
|
17
|
+
@package = nil
|
18
|
+
@classname = nil
|
19
|
+
end
|
20
|
+
attr_reader :methods, :package, :classname
|
21
|
+
|
22
|
+
def parse
|
23
|
+
title = @source.at('title').inner_text
|
24
|
+
@package = title.split('.')[0..-2].join('.')
|
25
|
+
@classname = title.split('.')[-1].split(/\s/)[0]
|
26
|
+
@logger.debug "parse: #{@package} #{@classname}"
|
27
|
+
@source.search('td.summaryTableSignatureCol').each {|el|
|
28
|
+
next if el.at('td.summaryTableInheritanceCol') || !el.at('a')
|
29
|
+
|
30
|
+
begin
|
31
|
+
method = {
|
32
|
+
:href => el.at('a')['href'],
|
33
|
+
:name => el.at('a').inner_text.strip,
|
34
|
+
:code => el.search('div:not(.summaryTableDescription)').inner_text.strip.gsub("\n", ' '),
|
35
|
+
}
|
36
|
+
if summary = el.at('div.summaryTableDescription')
|
37
|
+
s = summary.inner_text.strip.gsub("\n", ' ')
|
38
|
+
if s[0..0] == '[' && s[-1..-1] == ']'
|
39
|
+
method[:code] << " #{s}"
|
40
|
+
method[:code].strip!
|
41
|
+
else
|
42
|
+
method[:summary] = s
|
43
|
+
end
|
44
|
+
end
|
45
|
+
@methods << method
|
46
|
+
rescue NoMethodError => e
|
47
|
+
@logger.debug e.message
|
48
|
+
@logger.debug el.inner_text.strip.gsub("\n", ' ')
|
49
|
+
end
|
50
|
+
}
|
51
|
+
@logger.debug "parse: #{@methods.length} methods found"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
if __FILE__ == $0
|
58
|
+
require 'pathname'
|
59
|
+
#Pathname.glob('/home/gorou/local/docs/flex201_documentation/langref/**/*.html') do |file|
|
60
|
+
Pathname.glob('/home/gorou/svn/as3rails2u/trunk/asdoc-output/*/**/*.html') do |file|
|
61
|
+
puts file.to_s
|
62
|
+
r = Rascut::Asdoc::Parser.new(file.read)
|
63
|
+
r.parse
|
64
|
+
pp r.package, r.classname#, r.methods
|
65
|
+
end
|
66
|
+
#Rascut::AsdocParser.new(open('/home/gorou/local/docs/flex201_documentation/langref/flash/display/Sprite.html').read).parse
|
67
|
+
#Rascut::AsdocParser.new(open('/home/gorou/svn/as3rails2u/trunk/asdoc-output/com/rails2u/net/JSONPLoader.html').read).parse
|
68
|
+
end
|
69
|
+
|
data/lib/rascut/command.rb
CHANGED
@@ -2,31 +2,29 @@ require 'optparse'
|
|
2
2
|
require 'rascut/fcsh_wrapper'
|
3
3
|
require 'rascut/logger'
|
4
4
|
require 'rascut/config'
|
5
|
+
require 'rascut/utils'
|
5
6
|
require 'pathname'
|
6
7
|
require 'yaml'
|
7
8
|
|
8
9
|
module Rascut
|
9
10
|
class Command
|
11
|
+
include Utils
|
12
|
+
|
10
13
|
def initialize
|
11
14
|
@logger = Logger.new(STDOUT)
|
15
|
+
@httpd = nil
|
12
16
|
end
|
13
17
|
attr_accessor :logger
|
14
18
|
|
15
19
|
def run(argv)
|
16
20
|
@config = Config.new
|
17
21
|
|
18
|
-
if
|
19
|
-
home
|
20
|
-
end
|
21
|
-
|
22
|
-
home.join('.rascut').mkpath if home
|
23
|
-
|
24
|
-
if home && home.join('.rascutrc').readable?
|
25
|
-
@config.merge_config home.join('.rascutrc')
|
22
|
+
if home.parent && home.parent.join('.rascutrc').readable?
|
23
|
+
@config.merge_config home.parent.join('.rascutrc')
|
26
24
|
end
|
27
25
|
|
28
26
|
if File.readable?('.rascut') && File.file?('.rascut')
|
29
|
-
|
27
|
+
config.merge_config('.rascut')
|
30
28
|
end
|
31
29
|
|
32
30
|
@config.parse_argv!(argv)
|
@@ -111,7 +109,7 @@ module Rascut
|
|
111
109
|
def start_server
|
112
110
|
require 'rascut/httpd'
|
113
111
|
@httpd = Httpd.new(self)
|
114
|
-
@httpd.
|
112
|
+
@httpd.run
|
115
113
|
end
|
116
114
|
|
117
115
|
def setting_signals
|
@@ -139,6 +137,7 @@ module Rascut
|
|
139
137
|
logger.info 'exiting...'
|
140
138
|
begin
|
141
139
|
@wrapper.close
|
140
|
+
@httpd.stop if @httpd
|
142
141
|
rescue Exception => e
|
143
142
|
logger.error e.inspect
|
144
143
|
end
|
data/lib/rascut/fcsh_wrapper.rb
CHANGED
@@ -62,8 +62,11 @@ module Rascut
|
|
62
62
|
unless @process
|
63
63
|
orig_lang = ENV['LANG']
|
64
64
|
ENV['LANG'] = 'C' # for flex3 sdk beta locale
|
65
|
+
orig_java_options = ENV['_JAVA_OPTIONS']
|
66
|
+
ENV['_JAVA_OPTIONS'] = orig_java_options.to_s + ' -Duser.language=en'
|
65
67
|
@process = IO.popen(@config[:fcsh_cmd] + ' 2>&1', 'r+') unless @process
|
66
68
|
ENV['LANG'] = orig_lang
|
69
|
+
ENV['_JAVA_OPTIONS'] = orig_java_options
|
67
70
|
end
|
68
71
|
@process
|
69
72
|
end
|
@@ -73,6 +76,7 @@ module Rascut
|
|
73
76
|
|
74
77
|
@compile_mutex.synchronize do
|
75
78
|
logger.info "Compile Start"
|
79
|
+
call_hook :compile_start
|
76
80
|
out = nil
|
77
81
|
if @compile_id
|
78
82
|
out = process_sync_exec "compile #{@compile_id}"
|
@@ -90,7 +94,7 @@ module Rascut
|
|
90
94
|
else
|
91
95
|
call_hook :compile_error, out
|
92
96
|
end
|
93
|
-
call_hook :
|
97
|
+
call_hook :compile_finish
|
94
98
|
end
|
95
99
|
end
|
96
100
|
|
@@ -107,7 +111,12 @@ module Rascut
|
|
107
111
|
def read_result(process)
|
108
112
|
unless @not_first_read
|
109
113
|
# first_time, FIXME uncool...
|
110
|
-
|
114
|
+
begin
|
115
|
+
process.expect(FCSH_WAIT_RE)
|
116
|
+
rescue NoMethodError => e
|
117
|
+
warn 'mxmlc not found. (check PATH)'
|
118
|
+
raise e
|
119
|
+
end
|
111
120
|
@not_first_read = true
|
112
121
|
end
|
113
122
|
|
data/lib/rascut/file_observer.rb
CHANGED
@@ -29,6 +29,7 @@ module Rascut
|
|
29
29
|
observe files
|
30
30
|
end
|
31
31
|
attr_accessor :options
|
32
|
+
attr_reader :files, :dirs
|
32
33
|
|
33
34
|
def logger
|
34
35
|
options[:logger]
|
@@ -125,7 +126,7 @@ module Rascut
|
|
125
126
|
|
126
127
|
if !dir.directory?
|
127
128
|
@dirs.delete dir
|
128
|
-
elsif dir.to_s.match %r{/\.svn|/CVS}
|
129
|
+
elsif dir.to_s.match %r{/\.svn|/CVS|\.git}
|
129
130
|
@dirs.delete dir
|
130
131
|
elsif dir.mtime > mtime
|
131
132
|
@dirs[dir] = dir.mtime
|
data/lib/rascut/httpd.rb
CHANGED
@@ -1,16 +1,10 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
require 'rubygems'
|
6
|
-
gem 'rack'
|
7
|
-
end
|
2
|
+
require 'rubygems'
|
3
|
+
require 'mongrel'
|
4
|
+
require 'mongrel/handlers'
|
8
5
|
|
9
|
-
require '
|
10
|
-
require '
|
11
|
-
require 'rack/file'
|
12
|
-
require 'rack/request'
|
13
|
-
require 'rack/response'
|
6
|
+
require 'rascut/utils'
|
7
|
+
require 'rascut/asdoc/data'
|
14
8
|
require 'thread'
|
15
9
|
require 'logger'
|
16
10
|
require 'pathname'
|
@@ -18,69 +12,49 @@ require 'open-uri'
|
|
18
12
|
|
19
13
|
module Rascut
|
20
14
|
class Httpd
|
21
|
-
|
22
|
-
def _call(env)
|
23
|
-
if env["PATH_INFO"].include? ".."
|
24
|
-
return [403, {"Content-Type" => "text/plain"}, ["Forbidden\n"]]
|
25
|
-
end
|
26
|
-
|
27
|
-
@path = env["PATH_INFO"] == '/' ? @root : F.join(@root, env['PATH_INFO'])
|
28
|
-
ext = F.extname(@path)[1..-1]
|
29
|
-
|
30
|
-
if F.file?(@path) && F.readable?(@path)
|
31
|
-
[200, {
|
32
|
-
"Content-Type" => MIME_TYPES[ext] || "text/plain",
|
33
|
-
"Content-Length" => F.size(@path).to_s
|
34
|
-
}, self]
|
35
|
-
else
|
36
|
-
return [404, {"Content-Type" => "text/plain"},
|
37
|
-
["File not found: #{env["PATH_INFO"]}\n"]]
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
15
|
+
include Utils
|
41
16
|
|
42
17
|
def initialize(command)
|
43
18
|
@command = command
|
19
|
+
@http_servet =
|
44
20
|
@threads = []
|
45
21
|
end
|
46
22
|
attr_reader :command
|
47
23
|
|
48
|
-
def
|
24
|
+
def run
|
49
25
|
swf_path = command.root.to_s
|
50
26
|
logger.debug "swf_path: #{swf_path}"
|
51
27
|
vendor = Pathname.new(__FILE__).parent.parent.parent.join('vendor')
|
52
28
|
logger.debug "vendor_path: #{vendor}"
|
53
|
-
reload = reload_handler
|
54
|
-
index = index_handler
|
55
29
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
30
|
+
file_mappings = [
|
31
|
+
['/js/swfobject.js', vendor.join('js/swfobject.js').to_s],
|
32
|
+
['/swf', swf_path]
|
33
|
+
]
|
34
|
+
file_mappings.concat(config_url_mapping) if config[:mapping]
|
35
|
+
logger.debug 'url mappings: ' + file_mappings.inspect
|
62
36
|
|
63
|
-
urls = []
|
64
|
-
urls.concat(config_url_mapping) if config[:mapping]
|
65
|
-
|
66
|
-
urls.concat([
|
67
|
-
['/js/swfobject.js', Rack::ShowExceptions.new(Httpd::FileOnly.new(vendor.join('js/swfobject.js').to_s))],
|
68
|
-
['/swf', Rack::ShowExceptions.new(Rack::File.new(swf_path))],
|
69
|
-
['/reload', Rack::ShowExceptions.new(reload_handler)],
|
70
|
-
['/proxy', Rack::ShowExceptions.new(proxy_handler)],
|
71
|
-
['/', Rack::ShowExceptions.new(index_handler)]
|
72
|
-
])
|
73
|
-
logger.debug 'url mappings: ' + urls.map{|u| u.first}.inspect
|
74
|
-
app = Rack::URLMap.new(urls)
|
75
37
|
port = config[:port] || 3001
|
76
38
|
host = config[:bind_address] || '0.0.0.0'
|
77
39
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
40
|
+
reload = reload_handler
|
41
|
+
index = index_handler
|
42
|
+
|
43
|
+
@http_server = Mongrel::HttpServer.new(host, port)
|
44
|
+
file_mappings.each do |mapping|
|
45
|
+
@http_server.register(mapping[0], Mongrel::DirHandler.new(mapping[1]))
|
82
46
|
end
|
83
|
-
|
47
|
+
@http_server.register('/proxy', proxy_handler)
|
48
|
+
@http_server.register('/save', save_handler)
|
49
|
+
@http_server.register('/reload', reload_handler)
|
50
|
+
@http_server.register('/', index_handler)
|
51
|
+
@http_server.run
|
52
|
+
logger.info "Start Mongrel: http://#{host}:#{port}/"
|
53
|
+
end
|
54
|
+
|
55
|
+
def stop
|
56
|
+
# XXX
|
57
|
+
# @http_server.stop
|
84
58
|
end
|
85
59
|
|
86
60
|
def config
|
@@ -104,52 +78,34 @@ module Rascut
|
|
104
78
|
filepath = m[0]
|
105
79
|
mappath = m[1]
|
106
80
|
mappath = '/' + mappath if mappath[0..0] != '/'
|
107
|
-
urls << [mappath,
|
81
|
+
urls << [mappath, command.root.join(filepath).to_s]
|
108
82
|
end
|
109
83
|
urls
|
110
84
|
end
|
111
85
|
|
112
|
-
def
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
require_mongrel_handler
|
121
|
-
end
|
122
|
-
rescue Exception => e
|
123
|
-
require_webrick_handler
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
def require_mongrel_handler
|
128
|
-
begin
|
129
|
-
require 'mongrel'
|
130
|
-
rescue LoadError
|
131
|
-
require 'rubygems'
|
132
|
-
gem 'mongrel', '> 1.0'
|
133
|
-
end
|
134
|
-
require 'rack/handler/mongrel'
|
135
|
-
Rack::Handler::Mongrel
|
136
|
-
end
|
137
|
-
|
138
|
-
def require_webrick_handler
|
139
|
-
require 'webrick'
|
140
|
-
require 'rack/handler/webrick'
|
141
|
-
Rack::Handler::WEBrick
|
142
|
-
end
|
86
|
+
#def asdoc_mapping
|
87
|
+
# urls = []
|
88
|
+
# Pathname.glob(asdoc_home.to_s + '/*').each do |file|
|
89
|
+
# urls << ["/asdoc/#{file.basename}", Rack::ShowExceptions.new(FileIndex.new(file.to_s))]
|
90
|
+
# end
|
91
|
+
# urls << ["/asdoc/", Rack::ShowExceptions.new(FileIndex.new(asdoc_home.to_s))]
|
92
|
+
# urls
|
93
|
+
#end
|
143
94
|
|
144
95
|
def reload_handler
|
145
|
-
Proc.new do |env|
|
96
|
+
#Proc.new do |env|
|
97
|
+
ProcHandler.new do |req, res|
|
146
98
|
@threads << Thread.current
|
147
99
|
Thread.stop
|
148
100
|
|
149
101
|
logger.debug 'httpd /reload reloading now'
|
150
|
-
|
151
|
-
|
102
|
+
res.start do |head, out|
|
103
|
+
head["Content-Type"] = "text/plain"
|
104
|
+
out << 1
|
152
105
|
end
|
106
|
+
#Rack::Response.new.finish do |r|
|
107
|
+
# r.write '1'
|
108
|
+
#end
|
153
109
|
end
|
154
110
|
end
|
155
111
|
|
@@ -160,33 +116,60 @@ module Rascut
|
|
160
116
|
res = INDEX.sub('__SWFOBJECT__', swftag(command.target_script, config)).sub('<!--__RELOAD__-->', RELOAD_SCRIPT)
|
161
117
|
end
|
162
118
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
119
|
+
ProcHandler.new do |req, response|
|
120
|
+
#Proc.new do |env|
|
121
|
+
#req = Rack::Request.new(env)
|
122
|
+
r = res.sub('__SWF_VARS__', swfvars(Mongrel::HttpRequest.query_parse(req.params['QUERY_STRING'])))
|
123
|
+
response.start do |head, out|
|
124
|
+
out << r
|
168
125
|
end
|
126
|
+
#Rack::Response.new.finish do |r|
|
127
|
+
# r.write res
|
128
|
+
#end
|
169
129
|
end
|
170
130
|
end
|
171
131
|
|
172
132
|
def proxy_handler
|
173
|
-
|
174
|
-
|
175
|
-
url = req.query_string
|
133
|
+
ProcHandler.new do |req, res|
|
134
|
+
url = req.params['QUERY_STRING'].to_s.strip
|
176
135
|
if url.empty?
|
177
136
|
url = req.path_info[1..-1].gsub(%r{^(https?:/)/?}, '\\1/')
|
178
137
|
end
|
179
|
-
|
138
|
+
res.start do |head, out|
|
180
139
|
open(url) { |io|
|
181
|
-
|
140
|
+
head['Content-Type'] = io.content_type
|
182
141
|
while part = io.read(8192)
|
183
|
-
|
142
|
+
out << part
|
184
143
|
end
|
185
144
|
}
|
186
145
|
end
|
187
146
|
end
|
188
147
|
end
|
189
148
|
|
149
|
+
def save_handler
|
150
|
+
ProcHandler.new do |req, res|
|
151
|
+
name = req.params['QUERY_STRING'].to_s.strip
|
152
|
+
path = command.root.join(name)
|
153
|
+
req.body.rewind
|
154
|
+
body = req.body.read
|
155
|
+
|
156
|
+
if name.empty? || body.length == 0
|
157
|
+
res.start do |head, out|
|
158
|
+
head['Content-Type'] = 'text/plain'
|
159
|
+
out << "don't save"
|
160
|
+
end
|
161
|
+
else
|
162
|
+
path.open('w') {|f| f.puts body }
|
163
|
+
|
164
|
+
res.start do |head, out|
|
165
|
+
head['Content-Type'] = 'text/plain'
|
166
|
+
out << "saved: #{path}"
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
190
173
|
def swfvars(vars)
|
191
174
|
res = []
|
192
175
|
vars.each do |key, value|
|
@@ -253,6 +236,8 @@ module Rascut
|
|
253
236
|
window.onload = function() {
|
254
237
|
__SWF_VARS__
|
255
238
|
so.addVariable('rascut', 'true');
|
239
|
+
so.addParam('allowFullScreen', 'true');
|
240
|
+
so.addParam('allowScriptAccess', 'always');
|
256
241
|
so.write("content");
|
257
242
|
}
|
258
243
|
</script>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# append your ~/.ctags
|
2
|
+
# --langdef=actionscript
|
3
|
+
# --langmap=actionscript:.as
|
4
|
+
# --regex-actionscript=/^.*function[\t ]+([gs]et[\t ]+)?([A-Za-z0-9_]+)[\t ]*\(/\2/F,function/i
|
5
|
+
# --regex-actionscript=/^.*class[\t ]+([A-Za-z0-9_]+)/\1/C,class/i
|
6
|
+
#
|
7
|
+
require 'rascut/plugin/base'
|
8
|
+
require 'pathname'
|
9
|
+
|
10
|
+
module Rascut
|
11
|
+
module Plugin
|
12
|
+
class GenerateCtags < Base
|
13
|
+
def run
|
14
|
+
@ctags_cmd = config[:ctags] || 'ctags'
|
15
|
+
@command.file_observer.add_update_handler method(:generate_ctags)
|
16
|
+
end
|
17
|
+
|
18
|
+
def generate_ctags
|
19
|
+
`#{@ctags_cmd} -R --langmap=actionscript:.as -f #{@command.root.join('tags')}`
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
|
2
|
+
require 'rascut/plugin/base'
|
3
|
+
|
4
|
+
module Rascut
|
5
|
+
module Plugin
|
6
|
+
class Screen < Base
|
7
|
+
STATUS = %q[%H %`%-w%{=b bw}%n %t%{-}%+w %=]
|
8
|
+
|
9
|
+
SCREEN_CMD = 'screen'
|
10
|
+
SCREEN_COLOR = {
|
11
|
+
:black => 'dd',
|
12
|
+
:blue => 'bk',
|
13
|
+
:green => 'gk',
|
14
|
+
:red => 'rw',
|
15
|
+
}
|
16
|
+
|
17
|
+
def run
|
18
|
+
@command.wrapper.hooks[:compile_start] << method(:start)
|
19
|
+
@command.wrapper.hooks[:compile_error] << method(:error)
|
20
|
+
@command.wrapper.hooks[:compile_success] << method(:success)
|
21
|
+
end
|
22
|
+
|
23
|
+
def start
|
24
|
+
message 'C'
|
25
|
+
end
|
26
|
+
|
27
|
+
def error
|
28
|
+
message 'E', :red
|
29
|
+
end
|
30
|
+
|
31
|
+
def success
|
32
|
+
message 'S', :blue
|
33
|
+
end
|
34
|
+
|
35
|
+
def message(msg, color = :black)
|
36
|
+
if run_screen_session?
|
37
|
+
col = SCREEN_COLOR[color]
|
38
|
+
msg = %Q[ %{=b #{col}} #{msg} %{-}]
|
39
|
+
send_cmd(msg)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def clear
|
44
|
+
send_cmd('')
|
45
|
+
end
|
46
|
+
|
47
|
+
def run_screen_session?
|
48
|
+
str = `#{SCREEN_CMD} -ls`
|
49
|
+
str.match(/(\d+) Socket/) && ($1.to_i > 0)
|
50
|
+
end
|
51
|
+
|
52
|
+
def send_cmd(msg)
|
53
|
+
cmd = %Q[#{SCREEN_CMD} -X eval 'hardstatus alwayslastline "#{(STATUS + msg).gsub('"', '\"')}"']
|
54
|
+
system cmd
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/rascut/utils.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'uri'
|
3
|
+
require 'pstore'
|
4
|
+
require 'rubygems'
|
5
|
+
require 'mongrel/handlers'
|
6
|
+
|
7
|
+
module Rascut
|
8
|
+
module Utils
|
9
|
+
def home
|
10
|
+
if ENV['HOME']
|
11
|
+
home = Pathname.new ENV['HOME']
|
12
|
+
elsif ENV['USERPROFILE']
|
13
|
+
# win32
|
14
|
+
home = Pathname.new ENV['USERPROFILE']
|
15
|
+
else
|
16
|
+
raise 'HOME dir not found.'
|
17
|
+
end
|
18
|
+
|
19
|
+
home = home.join('.rascut')
|
20
|
+
home.mkpath
|
21
|
+
home
|
22
|
+
end
|
23
|
+
module_function :home
|
24
|
+
|
25
|
+
def asdoc_home
|
26
|
+
path = home.join('asdoc')
|
27
|
+
path.mkpath
|
28
|
+
path
|
29
|
+
end
|
30
|
+
module_function :asdoc_home
|
31
|
+
|
32
|
+
def rascut_db_path
|
33
|
+
home.join('rascut.db')
|
34
|
+
end
|
35
|
+
module_function :rascut_db_path
|
36
|
+
|
37
|
+
def rascut_db(readonly = false)
|
38
|
+
db = PStore.new home.join('rascut.db').to_s
|
39
|
+
db.transaction(readonly) do
|
40
|
+
yield db
|
41
|
+
end
|
42
|
+
end
|
43
|
+
module_function :rascut_db
|
44
|
+
|
45
|
+
def rascut_db_read(&block)
|
46
|
+
rascut_db(true, &block)
|
47
|
+
end
|
48
|
+
module_function :rascut_db_read
|
49
|
+
|
50
|
+
def path_escape(name)
|
51
|
+
URI.encode(name.to_s.gsub('/', '_'), /[^\w_\-]/)
|
52
|
+
end
|
53
|
+
module_function :path_escape
|
54
|
+
|
55
|
+
class ProcHandler < Mongrel::HttpHandler
|
56
|
+
def initialize(&block)
|
57
|
+
@proc = block
|
58
|
+
end
|
59
|
+
|
60
|
+
def process(req, res)
|
61
|
+
@proc.call(req, res)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
metadata
CHANGED
@@ -1,58 +1,90 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.1
|
3
|
-
specification_version: 1
|
4
2
|
name: rascut
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1
|
7
|
-
date: 2007-10-09 00:00:00 +09:00
|
8
|
-
summary: Ruby ActionSCript UTility
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: hotchpotch@nospam@gmail.com
|
12
|
-
homepage: http://hotchpotch.rubyforge.org/rascut/
|
13
|
-
rubyforge_project: hotchpotch
|
14
|
-
description: Ruby ActionSCript UTility
|
15
|
-
autorequire: ""
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 1.8.2
|
24
|
-
version:
|
4
|
+
version: 0.2.1
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- Yuichi Tateno
|
8
|
+
autorequire: ""
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-03-03 00:00:00 +09:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rake
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: mongrel
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: json_pure
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: "0"
|
44
|
+
version:
|
45
|
+
description: Ruby ActionSCript UTility
|
46
|
+
email: hotchpotch@nospam@gmail.com
|
47
|
+
executables:
|
48
|
+
- rascut
|
49
|
+
extensions: []
|
50
|
+
|
51
|
+
extra_rdoc_files:
|
52
|
+
- README
|
53
|
+
- ChangeLog
|
31
54
|
files:
|
32
55
|
- README
|
33
56
|
- ChangeLog
|
34
57
|
- Rakefile
|
35
58
|
- bin/rascut
|
59
|
+
- bin/rasdoc
|
36
60
|
- test/test_rascut.rb
|
37
61
|
- test/test_file_observer.rb
|
38
62
|
- lib/rascut.rb
|
39
63
|
- lib/rascut
|
40
64
|
- lib/rascut/file_observer.rb
|
65
|
+
- lib/rascut/asdoc
|
66
|
+
- lib/rascut/asdoc/data.rb
|
67
|
+
- lib/rascut/asdoc/parser.rb
|
68
|
+
- lib/rascut/asdoc/httpd.rb
|
69
|
+
- lib/rascut/asdoc/generator.rb
|
41
70
|
- lib/rascut/config.rb
|
42
71
|
- lib/rascut/httpd.rb
|
43
72
|
- lib/rascut/logger.rb
|
44
73
|
- lib/rascut/plugin
|
45
74
|
- lib/rascut/plugin/write_fcsh_error_output.rb
|
46
75
|
- lib/rascut/plugin/base.rb
|
76
|
+
- lib/rascut/plugin/screen.rb
|
77
|
+
- lib/rascut/plugin/generate_ctags.rb
|
47
78
|
- lib/rascut/command.rb
|
48
79
|
- lib/rascut/fcsh_wrapper.rb
|
80
|
+
- lib/rascut/utils.rb
|
49
81
|
- vendor/js
|
50
82
|
- vendor/ruby
|
51
83
|
- vendor/js/swfobject.js
|
52
84
|
- vendor/ruby/expect.rb
|
53
|
-
|
54
|
-
|
55
|
-
|
85
|
+
has_rdoc: true
|
86
|
+
homepage: http://hotchpotch.rubyforge.org/rascut/
|
87
|
+
post_install_message:
|
56
88
|
rdoc_options:
|
57
89
|
- --title
|
58
90
|
- rascut documentation
|
@@ -66,40 +98,27 @@ rdoc_options:
|
|
66
98
|
- --inline-source
|
67
99
|
- --exclude
|
68
100
|
- ^(examples|extras)/
|
69
|
-
|
70
|
-
-
|
71
|
-
|
72
|
-
|
73
|
-
-
|
74
|
-
|
75
|
-
|
101
|
+
require_paths:
|
102
|
+
- lib
|
103
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: 1.8.2
|
108
|
+
version:
|
109
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: "0"
|
114
|
+
version:
|
76
115
|
requirements: []
|
77
116
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
version: 0.0.0
|
87
|
-
version:
|
88
|
-
- !ruby/object:Gem::Dependency
|
89
|
-
name: mongrel
|
90
|
-
version_requirement:
|
91
|
-
version_requirements: !ruby/object:Gem::Version::Requirement
|
92
|
-
requirements:
|
93
|
-
- - ">"
|
94
|
-
- !ruby/object:Gem::Version
|
95
|
-
version: 0.0.0
|
96
|
-
version:
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: rack
|
99
|
-
version_requirement:
|
100
|
-
version_requirements: !ruby/object:Gem::Version::Requirement
|
101
|
-
requirements:
|
102
|
-
- - ">"
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
version: 0.0.0
|
105
|
-
version:
|
117
|
+
rubyforge_project: hotchpotch
|
118
|
+
rubygems_version: 1.2.0
|
119
|
+
signing_key:
|
120
|
+
specification_version: 2
|
121
|
+
summary: Ruby ActionSCript UTility
|
122
|
+
test_files:
|
123
|
+
- test/test_rascut.rb
|
124
|
+
- test/test_file_observer.rb
|