rascut 0.1.3 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|