michaelforrest-tidy 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. data/Manifest +87 -0
  2. data/README +5 -0
  3. data/Rakefile +14 -0
  4. data/bin/tidyproject +33 -0
  5. data/lib/aslibs/as3/lbi/com/lbi/animation/animator/Animator.as +86 -0
  6. data/lib/aslibs/as3/lbi/com/lbi/animation/animator/Transition.as +142 -0
  7. data/lib/aslibs/as3/lbi/com/lbi/animation/group/Parallel.as +28 -0
  8. data/lib/aslibs/as3/lbi/com/lbi/animation/group/Queue.as +93 -0
  9. data/lib/aslibs/as3/lbi/com/lbi/animation/group/Sequence.as +28 -0
  10. data/lib/aslibs/as3/lbi/com/lbi/animation/group/Set.as +82 -0
  11. data/lib/aslibs/as3/lbi/com/lbi/animation/group/Stack.as +30 -0
  12. data/lib/aslibs/as3/lbi/com/lbi/animation/single/Animation.as +173 -0
  13. data/lib/aslibs/as3/lbi/com/lbi/animation/single/Message.as +36 -0
  14. data/lib/aslibs/as3/lbi/com/lbi/animation/single/MethodWithCompleteEvent.as +75 -0
  15. data/lib/aslibs/as3/lbi/com/lbi/animation/single/OrphanEvent.as +78 -0
  16. data/lib/aslibs/as3/lbi/com/lbi/animation/single/Pause.as +35 -0
  17. data/lib/aslibs/as3/lbi/com/lbi/animation/single/Tween.as +73 -0
  18. data/lib/aslibs/as3/lbi/com/lbi/animation/util/Easing.as +158 -0
  19. data/lib/aslibs/as3/lbi/com/lbi/animation/util/Engine.as +35 -0
  20. data/lib/aslibs/as3/lbi/com/lbi/animation/util/GroupCommon.as +62 -0
  21. data/lib/aslibs/as3/lbi/com/lbi/animation/util/IAnimation.as +30 -0
  22. data/lib/aslibs/as3/lbi/com/lbi/debug/DraggyClip.as +96 -0
  23. data/lib/aslibs/as3/lbi/com/lbi/debug/FPSView.as +48 -0
  24. data/lib/aslibs/as3/lbi/com/lbi/debug/KeySequenceTrigger.as +60 -0
  25. data/lib/aslibs/as3/lbi/com/lbi/debug/Log.as +168 -0
  26. data/lib/aslibs/as3/lbi/com/lbi/debug/LogItemType.as +23 -0
  27. data/lib/aslibs/as3/lbi/com/lbi/debug/LogType.as +31 -0
  28. data/lib/aslibs/as3/lbi/com/lbi/debug/ViewAnalysis.as +24 -0
  29. data/lib/aslibs/as3/lbi/com/lbi/media/IBufferable.as +16 -0
  30. data/lib/aslibs/as3/lbi/com/lbi/media/ITransportControllable.as +11 -0
  31. data/lib/aslibs/as3/lbi/com/lbi/mvc/collection/Collection.as +296 -0
  32. data/lib/aslibs/as3/lbi/com/lbi/mvc/collection/ISearchable.as +10 -0
  33. data/lib/aslibs/as3/lbi/com/lbi/mvc/collection/ISelectable.as +10 -0
  34. data/lib/aslibs/as3/lbi/com/lbi/mvc/collection/Matchable.as +9 -0
  35. data/lib/aslibs/as3/lbi/com/lbi/mvc/collection/Searchable.as +56 -0
  36. data/lib/aslibs/as3/lbi/com/lbi/mvc/collection/Selectable.as +49 -0
  37. data/lib/aslibs/as3/lbi/com/lbi/mvc/helper/Cloner.as +15 -0
  38. data/lib/aslibs/as3/lbi/com/lbi/mvc/helper/TypographyBase.as +194 -0
  39. data/lib/aslibs/as3/lbi/com/lbi/mvc/helper/preloading/LoadProgressEvent.as +18 -0
  40. data/lib/aslibs/as3/lbi/com/lbi/mvc/model/Application.as +45 -0
  41. data/lib/aslibs/as3/lbi/com/lbi/mvc/model/ConcurrentDependencyLoader.as +27 -0
  42. data/lib/aslibs/as3/lbi/com/lbi/mvc/model/EventMapper.as +85 -0
  43. data/lib/aslibs/as3/lbi/com/lbi/mvc/model/Hyperlink.as +36 -0
  44. data/lib/aslibs/as3/lbi/com/lbi/mvc/model/IEventMapper.as +10 -0
  45. data/lib/aslibs/as3/lbi/com/lbi/mvc/model/Merge.as +14 -0
  46. data/lib/aslibs/as3/lbi/com/lbi/mvc/model/SequentialDependencyLoader.as +43 -0
  47. data/lib/aslibs/as3/lbi/com/lbi/mvc/model/StringFormatting.as +142 -0
  48. data/lib/aslibs/as3/lbi/com/lbi/mvc/model/XMLListLoader.as +98 -0
  49. data/lib/aslibs/as3/lbi/com/lbi/mvc/model/XMLListLoaderDispatcher.as +52 -0
  50. data/lib/aslibs/as3/lbi/com/lbi/mvc/view/ViewBase.as +323 -0
  51. data/lib/aslibs/as3/lbi/com/quasimondo/geom/ColorMatrix.as +682 -0
  52. data/lib/script/as2/lib/as2_class.rb +37 -0
  53. data/lib/script/as2/lib/test/SampleClass.as +34 -0
  54. data/lib/script/as2/lib/test/as2_class_test.rb +15 -0
  55. data/lib/script/as2/navigation/bin/xml/__model.xml +7 -0
  56. data/lib/script/as2/navigation/navigation.rb +44 -0
  57. data/lib/script/as2/navigation/src/app/models/App.as +14 -0
  58. data/lib/script/as2/navigation/src/app/models/__Model.as +42 -0
  59. data/lib/script/as2/navigation/src/app/views/__model/__ModelView.as +61 -0
  60. data/lib/script/as2/navigation/src/app/views/__model/__ModelsView.as +33 -0
  61. data/lib/script/as2/project/project.rb +7 -0
  62. data/lib/script/as2/project/src/app/helpers/Colours.as +1 -0
  63. data/lib/script/as2/project/src/app/helpers/Typography.as +1 -0
  64. data/lib/script/as2/project/src/app/models/App.as +22 -0
  65. data/lib/script/as2/project/src/app/models/FlashVars.as +1 -0
  66. data/lib/script/as2/project/src/app/models/Linkages.as +8 -0
  67. data/lib/script/as2/project/src/app/views/AppView.as +21 -0
  68. data/lib/script/as3/project/project.rb +10 -0
  69. data/lib/script/as3/project/src/app/helpers/Colours.as +1 -0
  70. data/lib/script/as3/project/src/app/helpers/Typography.as +1 -0
  71. data/lib/script/as3/project/src/app/models/App.as +21 -0
  72. data/lib/script/as3/project/src/app/models/FlashVars.as +1 -0
  73. data/lib/script/as3/project/src/app/views/AppView.as +27 -0
  74. data/lib/script/as3/scaffold/bin/xml/__model.xml +0 -0
  75. data/lib/script/as3/scaffold/scaffold.rb +41 -0
  76. data/lib/script/as3/scaffold/src/models/__Model.as +11 -0
  77. data/lib/script/as3/scaffold/src/views/__model/__ModelDetailView.as +0 -0
  78. data/lib/script/as3/scaffold/src/views/__model/__ModelListItemView.as +0 -0
  79. data/lib/script/as3/scaffold/src/views/__model/__ModelListView.as +0 -0
  80. data/lib/script/bwlimit.rb +305 -0
  81. data/lib/script/generate +117 -0
  82. data/lib/script/server +4 -0
  83. data/lib/script/server.rb +20 -0
  84. data/lib/tidy_project.rb +19 -0
  85. data/tasks/build.rake +4 -0
  86. data/tasks/release.rake +8 -0
  87. data/test/test_tidy_project.rb +22 -0
  88. data/tidy.gemspec +33 -0
  89. metadata +229 -0
@@ -0,0 +1,305 @@
1
+ #!/usr/bin/env ruby
2
+
3
+
4
+ require 'socket'
5
+ require 'fcntl'
6
+ require 'thread'
7
+
8
+
9
+ # Limits the amount of data sent/recv.
10
+ # It acts as a authorisation-to-sent/recv-data dispenser
11
+ # Whoever wants to send/recv data must call the #dispense method
12
+ # to know how many it should send/recv at that time
13
+ class BwLimiter
14
+ def initialize(rate, ticks)
15
+ @bytes_per_tick = 1.0*rate/ticks
16
+ @hz = 1.0/ticks
17
+ if @bytes_per_tick < 1
18
+ raise "rate too low or ticks too high"
19
+ end
20
+ @bytes_per_tick = @bytes_per_tick.round
21
+ if @bytes_per_tick * ticks != rate
22
+ puts "Adjusting rate to #{@bytes_per_tick * ticks}"
23
+ end
24
+ @last_tick = Time.now
25
+ end
26
+ def dispense
27
+ curr = Time.now
28
+ delta = curr - @last_tick
29
+ if delta < @hz
30
+ sleep(@hz - delta)
31
+ end
32
+ #puts "Releasing #{@bytes_per_tick}. Speed = #{@bytes_per_tick / (Time.now - curr)}"
33
+ @last_tick = curr
34
+ @bytes_per_tick
35
+ end
36
+ end
37
+
38
+ class ConstantBwLimiter < BwLimiter
39
+ def initialize
40
+ end
41
+ def dispense
42
+ 8192
43
+ end
44
+ end
45
+
46
+
47
+
48
+ class BwLimiterProxy
49
+ def self.create_producer_thread(name, socket, socket_mutex,
50
+ queue, queue_mutex, queue_added_cond,
51
+ read_limiter, kill_thread_proc)
52
+ Thread.new {
53
+ read_s = nil
54
+ while (1)
55
+ result = select([socket], nil, [socket], nil)
56
+ if result[0].length > 0
57
+ n_read = read_limiter.dispense
58
+ #puts "#{name} need to read #{n_read}"
59
+ socket_mutex.synchronize {
60
+ read_s = socket.recv(n_read)
61
+ }
62
+ if (read_s.length == 0)
63
+ #puts "#{name} closed"
64
+ kill_thread_proc.call
65
+ break # or Thread.stop
66
+ else
67
+ queue_mutex.synchronize {
68
+ read_s.split(//).each {|i| queue << i}
69
+ #puts "#{name}: read #{read_s.length}"
70
+ queue_added_cond.signal
71
+ }
72
+ end
73
+ elsif result[2].length > 0
74
+ raise "#{name} read error"
75
+ end
76
+ end
77
+ }
78
+ end
79
+
80
+
81
+
82
+ def self.create_consumer_thread(name, socket, socket_mutex,
83
+ queue, queue_mutex, queue_added_cond,
84
+ write_limiter)
85
+ my_queue = nil
86
+ Thread.new{
87
+ while (1)
88
+ queue_mutex.synchronize {
89
+ queue_added_cond.wait(queue_mutex)
90
+ my_queue = queue.clone
91
+ queue.clear
92
+ }
93
+ while (my_queue && my_queue.length > 0)
94
+ result = select(nil, [socket], [socket], nil)
95
+ if result[1].length > 0
96
+ n_write = write_limiter.dispense
97
+ socket_mutex.synchronize {
98
+ n_write = socket.send(my_queue[0..n_write].join, 0)
99
+ }
100
+ my_queue.slice!(0..n_write);
101
+ #puts "REMOTE: written #{n_write}"
102
+ elsif result[2].length > 0
103
+ raise "#{name} send error"
104
+ end
105
+ end
106
+ end
107
+ }
108
+ end
109
+
110
+
111
+
112
+ def self.make_nonblocking(io)
113
+ io.fcntl(Fcntl::F_SETFD, io.fcntl(Fcntl::F_GETFD) | Fcntl::O_NONBLOCK)
114
+ end
115
+
116
+
117
+ def self.make_proc_kill_thread(t_parent)
118
+ proc{t_parent[:thread_list].each {|t|
119
+ t.kill if Thread.current != t
120
+ #puts "Killed: #{t.inspect}";
121
+ }
122
+ }
123
+ end
124
+
125
+
126
+ attr_reader :is_global_limit
127
+ attr_reader :input_rate
128
+ attr_reader :output_rate
129
+ attr_reader :ticks
130
+ attr_reader :input_limiter
131
+ attr_reader :output_limiter
132
+
133
+ def session(l_socket, r_socket)
134
+ [l_socket, r_socket].each {|io|
135
+ BwLimiterProxy.make_nonblocking io
136
+ }
137
+
138
+ proc_kill_thread = BwLimiterProxy.make_proc_kill_thread(Thread.current)
139
+
140
+ if @is_global_limit
141
+ input_limiter = @input_limiter
142
+ output_limiter = @output_limiter
143
+ else
144
+ t_current = Thread.current;
145
+ input_limiter = BwLimiter.new(@input_rate, @ticks)
146
+ output_limiter = BwLimiter.new(@output_rate, @ticks)
147
+ end
148
+ local_input_limiter = ConstantBwLimiter.new
149
+ local_output_limiter = ConstantBwLimiter.new
150
+
151
+ outgoing_queue = [] #from l->r
152
+ outgoing_mutex = Mutex.new
153
+ outgoing_produced = ConditionVariable.new
154
+
155
+ incoming_queue = [] #from r->l
156
+ incoming_mutex = Mutex.new
157
+ incoming_produced = ConditionVariable.new
158
+
159
+ l_socket_mutex = Mutex.new
160
+ r_socket_mutex = Mutex.new
161
+
162
+ t_outgoing_producer =
163
+ BwLimiterProxy.create_producer_thread("LOCAL", l_socket, l_socket_mutex,
164
+ outgoing_queue, outgoing_mutex,
165
+ outgoing_produced,
166
+ local_output_limiter,
167
+ proc_kill_thread)
168
+ t_incoming_producer =
169
+ BwLimiterProxy.create_producer_thread("REMOTE", r_socket, r_socket_mutex,
170
+ incoming_queue, incoming_mutex,
171
+ incoming_produced,
172
+ input_limiter,
173
+ proc_kill_thread)
174
+ t_outgoing_consumer =
175
+ BwLimiterProxy.create_consumer_thread("REMOTE", r_socket, r_socket_mutex,
176
+ outgoing_queue, outgoing_mutex,
177
+ outgoing_produced,
178
+ output_limiter)
179
+ t_incoming_consumer =
180
+ BwLimiterProxy.create_consumer_thread("LOCAL", l_socket, l_socket_mutex,
181
+ incoming_queue, incoming_mutex,
182
+ incoming_produced,
183
+ local_input_limiter)
184
+
185
+ t_current = Thread.current
186
+ t_current[:thread_list] = [t_outgoing_producer, t_incoming_producer,
187
+ t_outgoing_consumer, t_incoming_consumer]
188
+ #t_current[:thread_list].each{|t| puts "Threads: #{t.inspect}"}
189
+
190
+ t_current[:thread_list].each {|t|
191
+ t.join;
192
+ #puts "Joined: #{t.inspect}";
193
+ }
194
+ l_socket.close
195
+ r_socket.close
196
+ #puts "Exiting cleanly"
197
+ end
198
+
199
+
200
+ def initialize(input_rate, output_rate, is_global_limit, ticks)
201
+ @input_rate = input_rate
202
+ @output_rate = output_rate
203
+ @ticks = ticks
204
+ if @is_global_limit = is_global_limit
205
+ @input_limiter = BwLimiter.new(@input_rate, @ticks)
206
+ @output_limiter = BwLimiter.new(@output_rate, @ticks)
207
+ end
208
+ end
209
+ end
210
+
211
+
212
+ def print_help
213
+ puts <<-EOF
214
+ # #{$0} [options] rhost rport
215
+ #
216
+ # --lhost x listen to the interface x (def: localhost)
217
+ # --lport x listen to port x (def: 8119)
218
+ # --outgoing-rate x
219
+ # -o x output at x KBps (def: 5)
220
+ # --incoming-rate x
221
+ # -i x accepts input at xKBps (def: 5)
222
+ # --global-limit
223
+ # -g if set, the rate is for total rate (def: the rate is per connection)
224
+ # --ticks
225
+ # -t ticks per second, higher more accurate but consumes more cpu (def: 100)
226
+ # --help
227
+ # -h this page
228
+ # rhost host to connect to
229
+ # rport port to connect to
230
+ EOF
231
+ end
232
+
233
+
234
+
235
+ if $0 == __FILE__
236
+ require 'getoptlong'
237
+
238
+ if ARGV.length < 2
239
+ print_help
240
+ exit
241
+ end
242
+ opts = GetoptLong.new(["--lhost", GetoptLong::REQUIRED_ARGUMENT ],
243
+ ["--lport", GetoptLong::REQUIRED_ARGUMENT ],
244
+ ["--outgoing-rate", "-o", GetoptLong::REQUIRED_ARGUMENT ],
245
+ ["--incoming-rate", "-i", GetoptLong::REQUIRED_ARGUMENT ],
246
+ ["--outgoing-rate-byte", "--orb", GetoptLong::REQUIRED_ARGUMENT ],
247
+ ["--incoming-rate-byte", "--irb", GetoptLong::REQUIRED_ARGUMENT ],
248
+ ["--global-limit", "-g", GetoptLong::NO_ARGUMENT],
249
+ ["--ticks", "-t", GetoptLong::REQUIRED_ARGUMENT],
250
+ ["--help", "-h", GetoptLong::NO_ARGUMENT])
251
+ hopts = {}
252
+ opts.each {|opt, arg|
253
+ hopts[opt] = arg
254
+ }
255
+ if ARGV.length != 2
256
+ print_help
257
+ end
258
+
259
+
260
+ LPORT = (hopts["--lport"] || 8119).to_i
261
+ LHOST = hopts["--lhost"] || "localhost"
262
+ OUTGOING_RATE = (hopts["--outgoing-rate"] || 5).to_i * 1024
263
+ INCOMING_RATE = (hopts["--incoming-rate"] || 5).to_i * 1024
264
+ IS_GLOBAL_LIMIT = if hopts["--global-limit"] then true else false end
265
+ TICKS = (hopts["--ticks"] || 100).to_i
266
+ RHOST = ARGV[0]
267
+ RPORT = ARGV[1].to_i
268
+
269
+ if hopts["--outgoing-rate-byte"]
270
+ OUTGOING_RATE = hopts["--outgoing-rate-byte"].to_i
271
+ end
272
+ if hopts["--incoming-rate-byte"]
273
+ INCOMING_RATE = hopts["--incoming-rate-byte"].to_i
274
+ end
275
+
276
+ puts "LPORT=#{LPORT}"
277
+ puts "LHOST=#{LHOST}"
278
+ puts "OUTGOING_RATE=#{OUTGOING_RATE}"
279
+ puts "INCOMING_RATE=#{INCOMING_RATE}"
280
+ puts "TICKS=#{TICKS}"
281
+ puts "IS_GLOBAL_LIMIT=#{IS_GLOBAL_LIMIT.to_s}"
282
+ puts "RHOST=#{RHOST}"
283
+ puts "RPORT=#{RPORT}"
284
+
285
+ threads = []
286
+ threads_mutex = Mutex.new
287
+ proxy = BwLimiterProxy.new(INCOMING_RATE, OUTGOING_RATE, IS_GLOBAL_LIMIT, TICKS)
288
+ server = TCPServer.new(LHOST, LPORT)
289
+ #server.setsockopt(Socket::SOL_SOCKET, Socket::SO_REUSEADDR, 1)
290
+ puts "Ready"
291
+ while (local_socket = server.accept)
292
+ begin
293
+ remote_socket = TCPSocket.new(RHOST, RPORT)
294
+ t = Thread.new {
295
+ proxy.session(local_socket, remote_socket)
296
+ threads_mutex.synchronize { threads.delete_if{|t| Thread.current == t}}
297
+ puts "Now serving #{threads.size} connections"
298
+ }
299
+ threads_mutex.synchronize { threads << t }
300
+ puts "Now serving #{threads.size} connections"
301
+ rescue => e
302
+ p e
303
+ end
304
+ end
305
+ end
@@ -0,0 +1,117 @@
1
+ #!/usr/bin/env ruby
2
+ LANGUAGE = 'as3' #TODO: un-hard-code
3
+ SCRIPT_PATH = File.join("script","lbi", LANGUAGE)
4
+ def available_templates
5
+ Dir.entries(SCRIPT_PATH).collect{|e| e unless e[0]==46}.compact
6
+ end
7
+
8
+ module LBi
9
+ require 'erb'
10
+ require 'fileutils'
11
+ class Template
12
+ attr_reader :args
13
+ def initialize(params)
14
+ @template_id = params[:template_id]
15
+ @force = params[:force]
16
+ @args = params[:args].collect{|arg| arg unless arg.match("--")}
17
+
18
+ create_template_binding
19
+ copy_files if @template_binding.valid?
20
+ end
21
+ def create_template_binding
22
+ require template_class
23
+ # the get_template_binding method is placed
24
+ # in the included template class
25
+ @template_binding = get_template_binding(self)
26
+ @template_binding.init!
27
+ end
28
+
29
+ def template_path
30
+ File.join(SCRIPT_PATH,@template_id)
31
+ end
32
+
33
+ def template_class
34
+ File.join(template_path,"#{@template_id}.rb")
35
+ end
36
+
37
+ def copy_files
38
+ pattern = File.join(template_path,"**/*.*")
39
+ files = Dir.glob(pattern)
40
+ files.each do |filename|
41
+ copy_file(filename) unless filename == template_class
42
+ end
43
+ end
44
+
45
+ def copy_file(filename)
46
+ contents = IO.read(filename)
47
+ destination = get_destination(filename)
48
+ make_dirs(File.split(destination)[0])
49
+
50
+ result = ERB.new(contents,0,"%").result(@template_binding.get_binding)
51
+ force = @force unless @force.nil?
52
+ if File.exists?(destination)
53
+ if(force.nil?)
54
+ puts "overwrite #{destination}? (yN)"
55
+ force = $stdin.gets.chomp.downcase == "y"
56
+ end
57
+ unless force
58
+ puts "skipping #{destination}"
59
+ else
60
+ File.delete(destination)
61
+ write_result(result,destination)
62
+ end
63
+ else
64
+ write_result(result,destination)
65
+ end
66
+ end
67
+
68
+ def write_result result,destination
69
+ File.open(destination,'a') do |file|
70
+ file << result
71
+ end
72
+ puts("created " + destination)
73
+ end
74
+
75
+ def make_dirs(dir)
76
+ FileUtils.mkdir_p(dir) unless File.exists? dir
77
+ end
78
+
79
+ def get_destination(file)
80
+ @template_binding.get_destination file.gsub(template_path,".")
81
+ end
82
+ end
83
+ class TemplateBinding
84
+ def initialize(template)
85
+ @template = template
86
+ @is_valid = true
87
+ end
88
+ def init!
89
+ #override this method to do extra curricular template activities
90
+ end
91
+ def valid?
92
+ @is_valid
93
+ end
94
+ def get_binding
95
+ return binding
96
+ end
97
+ def get_destination path
98
+ path
99
+ end
100
+ #COMMON stuff for templates
101
+ def credit
102
+ "Generated by LBi Useful"
103
+ end
104
+ end
105
+ end
106
+ params = {:force=>ARGV.find{|a| a=="--force"}!=nil, :template_id=>ARGV.shift, :args=>ARGV}
107
+
108
+ unless params[:template_id].nil?
109
+ LBi::Template.new(params)
110
+ else
111
+ puts <<-MSG
112
+ Please provide a template name, e.g.
113
+ $ ruby script/lbi/generate carousel
114
+ Available templates: #{available_templates.join(",")}
115
+ MSG
116
+ end
117
+
data/lib/script/server ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env bash
2
+ ./script/server.rb &
3
+ ./script/bwlimit.rb --lhost localhost --lport 2001 -i 99 -o 99 localhost 2000 &
4
+ open http://localhost:2001
@@ -0,0 +1,20 @@
1
+ #!/usr/local/bin/ruby
2
+ require 'webrick'
3
+ include WEBrick
4
+
5
+ s = HTTPServer.new(
6
+ :Port => 2000,
7
+ :DocumentRoot => File.join(File.dirname(__FILE__), "..", "bin"),
8
+ :MimeTypes => {:js=>"text/javascript"}
9
+ )
10
+
11
+ ## mount subdirectories
12
+ #s.mount("/ipr", HTTPServlet::FileHandler, "/proj/ipr/public_html")
13
+ #s.mount("/~gotoyuzo",
14
+ # HTTPServlet::FileHandler, "/home/gotoyuzo/public_html",
15
+ # true) #<= allow to show directory index.
16
+ #system_mime_table = Utils::load_mime_types('/etc/mime.types')
17
+
18
+
19
+ trap("INT"){ s.shutdown }
20
+ s.start()
@@ -0,0 +1,19 @@
1
+ require 'fileutils'
2
+ class TidyProject
3
+
4
+ LANGUAGE = 'as3'
5
+ def initialize(project_name)
6
+ @project_dir = project_name
7
+ folder('script', 'script')
8
+ folder("aslibs/#{LANGUAGE}/lbi", 'lib')
9
+ Dir.chdir(@project_dir){ `./script/generate project` }
10
+ end
11
+ def folder(source,dest)
12
+ puts "adding library to this project's #{dest} folder"
13
+ dest = "#{@project_dir}/#{dest}/"
14
+ FileUtils.mkdir_p(dest)
15
+ FileUtils.cp_r("#{File.dirname(File.expand_path(__FILE__))}/#{source}", dest)
16
+
17
+ end
18
+
19
+ end
data/tasks/build.rake ADDED
@@ -0,0 +1,4 @@
1
+ namespace :build do
2
+ desc "Does build_gemspec (doesn't show up in rake -T normally)"
3
+ task :gemspec => :build_gemspec
4
+ end
@@ -0,0 +1,8 @@
1
+ # this gets appended to the task defined by echoe
2
+ desc "release to github"
3
+ task :git_release=>[:clean, :manifest, 'build:gemspec'] do
4
+ puts "committing all changes"
5
+ `git commit -am "releasing"`
6
+ puts "pushing to github"
7
+ `git push`
8
+ end
@@ -0,0 +1,22 @@
1
+ require "test/unit"
2
+ require 'lib/tidy_project'
3
+ require 'ftools'
4
+ class TestTidyProject < Test::Unit::TestCase
5
+ PROJECT_FOLDER = 'tmp/TestProject'
6
+ def setup
7
+ # jump_into(PROJECT_FOLDER)
8
+
9
+ end
10
+ def test_add_libs
11
+ TidyProject.new(PROJECT_FOLDER)
12
+ Dir.chdir PROJECT_FOLDER do
13
+ assert File.exists?('script'), "No script folder"
14
+ assert File.exists?('rakefile'), "No rakefile"
15
+ end
16
+ end
17
+ #def jump_into(dir)
18
+ # #Dir.rmdir(dir)
19
+ # Dir.mkdir(dir) unless File.exists?(dir)
20
+ # Dir.chdir(dir)
21
+ #end
22
+ end
data/tidy.gemspec ADDED
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{tidy}
5
+ s.version = "0.1.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Michael Forrest"]
9
+ s.date = %q{2009-08-15}
10
+ s.default_executable = %q{tidyproject}
11
+ s.description = %q{Tidy Flash - an ActionScript framework for people who love Ruby}
12
+ s.email = %q{mf@grimaceworks.com}
13
+ s.executables = ["tidyproject"]
14
+ s.extra_rdoc_files = ["bin/tidyproject", "lib/aslibs/as3/lbi/com/lbi/animation/animator/Animator.as", "lib/aslibs/as3/lbi/com/lbi/animation/animator/Transition.as", "lib/aslibs/as3/lbi/com/lbi/animation/group/Parallel.as", "lib/aslibs/as3/lbi/com/lbi/animation/group/Queue.as", "lib/aslibs/as3/lbi/com/lbi/animation/group/Sequence.as", "lib/aslibs/as3/lbi/com/lbi/animation/group/Set.as", "lib/aslibs/as3/lbi/com/lbi/animation/group/Stack.as", "lib/aslibs/as3/lbi/com/lbi/animation/single/Animation.as", "lib/aslibs/as3/lbi/com/lbi/animation/single/Message.as", "lib/aslibs/as3/lbi/com/lbi/animation/single/MethodWithCompleteEvent.as", "lib/aslibs/as3/lbi/com/lbi/animation/single/OrphanEvent.as", "lib/aslibs/as3/lbi/com/lbi/animation/single/Pause.as", "lib/aslibs/as3/lbi/com/lbi/animation/single/Tween.as", "lib/aslibs/as3/lbi/com/lbi/animation/util/Easing.as", "lib/aslibs/as3/lbi/com/lbi/animation/util/Engine.as", "lib/aslibs/as3/lbi/com/lbi/animation/util/GroupCommon.as", "lib/aslibs/as3/lbi/com/lbi/animation/util/IAnimation.as", "lib/aslibs/as3/lbi/com/lbi/debug/DraggyClip.as", "lib/aslibs/as3/lbi/com/lbi/debug/FPSView.as", "lib/aslibs/as3/lbi/com/lbi/debug/KeySequenceTrigger.as", "lib/aslibs/as3/lbi/com/lbi/debug/Log.as", "lib/aslibs/as3/lbi/com/lbi/debug/LogItemType.as", "lib/aslibs/as3/lbi/com/lbi/debug/LogType.as", "lib/aslibs/as3/lbi/com/lbi/debug/ViewAnalysis.as", "lib/aslibs/as3/lbi/com/lbi/media/IBufferable.as", "lib/aslibs/as3/lbi/com/lbi/media/ITransportControllable.as", "lib/aslibs/as3/lbi/com/lbi/mvc/collection/Collection.as", "lib/aslibs/as3/lbi/com/lbi/mvc/collection/ISearchable.as", "lib/aslibs/as3/lbi/com/lbi/mvc/collection/ISelectable.as", "lib/aslibs/as3/lbi/com/lbi/mvc/collection/Matchable.as", "lib/aslibs/as3/lbi/com/lbi/mvc/collection/Searchable.as", "lib/aslibs/as3/lbi/com/lbi/mvc/collection/Selectable.as", "lib/aslibs/as3/lbi/com/lbi/mvc/helper/Cloner.as", "lib/aslibs/as3/lbi/com/lbi/mvc/helper/preloading/LoadProgressEvent.as", "lib/aslibs/as3/lbi/com/lbi/mvc/helper/TypographyBase.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/Application.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/ConcurrentDependencyLoader.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/EventMapper.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/Hyperlink.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/IEventMapper.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/Merge.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/SequentialDependencyLoader.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/StringFormatting.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/XMLListLoader.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/XMLListLoaderDispatcher.as", "lib/aslibs/as3/lbi/com/lbi/mvc/view/ViewBase.as", "lib/aslibs/as3/lbi/com/quasimondo/geom/ColorMatrix.as", "lib/script/as2/lib/as2_class.rb", "lib/script/as2/lib/test/as2_class_test.rb", "lib/script/as2/lib/test/SampleClass.as", "lib/script/as2/navigation/bin/xml/__model.xml", "lib/script/as2/navigation/navigation.rb", "lib/script/as2/navigation/src/app/models/__Model.as", "lib/script/as2/navigation/src/app/models/App.as", "lib/script/as2/navigation/src/app/views/__model/__ModelsView.as", "lib/script/as2/navigation/src/app/views/__model/__ModelView.as", "lib/script/as2/project/project.rb", "lib/script/as2/project/src/app/helpers/Colours.as", "lib/script/as2/project/src/app/helpers/Typography.as", "lib/script/as2/project/src/app/models/App.as", "lib/script/as2/project/src/app/models/FlashVars.as", "lib/script/as2/project/src/app/models/Linkages.as", "lib/script/as2/project/src/app/views/AppView.as", "lib/script/as3/project/project.rb", "lib/script/as3/project/src/app/helpers/Colours.as", "lib/script/as3/project/src/app/helpers/Typography.as", "lib/script/as3/project/src/app/models/App.as", "lib/script/as3/project/src/app/models/FlashVars.as", "lib/script/as3/project/src/app/views/AppView.as", "lib/script/as3/scaffold/bin/xml/__model.xml", "lib/script/as3/scaffold/scaffold.rb", "lib/script/as3/scaffold/src/models/__Model.as", "lib/script/as3/scaffold/src/views/__model/__ModelDetailView.as", "lib/script/as3/scaffold/src/views/__model/__ModelListItemView.as", "lib/script/as3/scaffold/src/views/__model/__ModelListView.as", "lib/script/bwlimit.rb", "lib/script/generate", "lib/script/server", "lib/script/server.rb", "lib/tidy_project.rb", "README", "tasks/build.rake", "tasks/release.rake"]
15
+ s.files = ["bin/tidyproject", "lib/aslibs/as3/lbi/com/lbi/animation/animator/Animator.as", "lib/aslibs/as3/lbi/com/lbi/animation/animator/Transition.as", "lib/aslibs/as3/lbi/com/lbi/animation/group/Parallel.as", "lib/aslibs/as3/lbi/com/lbi/animation/group/Queue.as", "lib/aslibs/as3/lbi/com/lbi/animation/group/Sequence.as", "lib/aslibs/as3/lbi/com/lbi/animation/group/Set.as", "lib/aslibs/as3/lbi/com/lbi/animation/group/Stack.as", "lib/aslibs/as3/lbi/com/lbi/animation/single/Animation.as", "lib/aslibs/as3/lbi/com/lbi/animation/single/Message.as", "lib/aslibs/as3/lbi/com/lbi/animation/single/MethodWithCompleteEvent.as", "lib/aslibs/as3/lbi/com/lbi/animation/single/OrphanEvent.as", "lib/aslibs/as3/lbi/com/lbi/animation/single/Pause.as", "lib/aslibs/as3/lbi/com/lbi/animation/single/Tween.as", "lib/aslibs/as3/lbi/com/lbi/animation/util/Easing.as", "lib/aslibs/as3/lbi/com/lbi/animation/util/Engine.as", "lib/aslibs/as3/lbi/com/lbi/animation/util/GroupCommon.as", "lib/aslibs/as3/lbi/com/lbi/animation/util/IAnimation.as", "lib/aslibs/as3/lbi/com/lbi/debug/DraggyClip.as", "lib/aslibs/as3/lbi/com/lbi/debug/FPSView.as", "lib/aslibs/as3/lbi/com/lbi/debug/KeySequenceTrigger.as", "lib/aslibs/as3/lbi/com/lbi/debug/Log.as", "lib/aslibs/as3/lbi/com/lbi/debug/LogItemType.as", "lib/aslibs/as3/lbi/com/lbi/debug/LogType.as", "lib/aslibs/as3/lbi/com/lbi/debug/ViewAnalysis.as", "lib/aslibs/as3/lbi/com/lbi/media/IBufferable.as", "lib/aslibs/as3/lbi/com/lbi/media/ITransportControllable.as", "lib/aslibs/as3/lbi/com/lbi/mvc/collection/Collection.as", "lib/aslibs/as3/lbi/com/lbi/mvc/collection/ISearchable.as", "lib/aslibs/as3/lbi/com/lbi/mvc/collection/ISelectable.as", "lib/aslibs/as3/lbi/com/lbi/mvc/collection/Matchable.as", "lib/aslibs/as3/lbi/com/lbi/mvc/collection/Searchable.as", "lib/aslibs/as3/lbi/com/lbi/mvc/collection/Selectable.as", "lib/aslibs/as3/lbi/com/lbi/mvc/helper/Cloner.as", "lib/aslibs/as3/lbi/com/lbi/mvc/helper/preloading/LoadProgressEvent.as", "lib/aslibs/as3/lbi/com/lbi/mvc/helper/TypographyBase.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/Application.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/ConcurrentDependencyLoader.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/EventMapper.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/Hyperlink.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/IEventMapper.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/Merge.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/SequentialDependencyLoader.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/StringFormatting.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/XMLListLoader.as", "lib/aslibs/as3/lbi/com/lbi/mvc/model/XMLListLoaderDispatcher.as", "lib/aslibs/as3/lbi/com/lbi/mvc/view/ViewBase.as", "lib/aslibs/as3/lbi/com/quasimondo/geom/ColorMatrix.as", "lib/script/as2/lib/as2_class.rb", "lib/script/as2/lib/test/as2_class_test.rb", "lib/script/as2/lib/test/SampleClass.as", "lib/script/as2/navigation/bin/xml/__model.xml", "lib/script/as2/navigation/navigation.rb", "lib/script/as2/navigation/src/app/models/__Model.as", "lib/script/as2/navigation/src/app/models/App.as", "lib/script/as2/navigation/src/app/views/__model/__ModelsView.as", "lib/script/as2/navigation/src/app/views/__model/__ModelView.as", "lib/script/as2/project/project.rb", "lib/script/as2/project/src/app/helpers/Colours.as", "lib/script/as2/project/src/app/helpers/Typography.as", "lib/script/as2/project/src/app/models/App.as", "lib/script/as2/project/src/app/models/FlashVars.as", "lib/script/as2/project/src/app/models/Linkages.as", "lib/script/as2/project/src/app/views/AppView.as", "lib/script/as3/project/project.rb", "lib/script/as3/project/src/app/helpers/Colours.as", "lib/script/as3/project/src/app/helpers/Typography.as", "lib/script/as3/project/src/app/models/App.as", "lib/script/as3/project/src/app/models/FlashVars.as", "lib/script/as3/project/src/app/views/AppView.as", "lib/script/as3/scaffold/bin/xml/__model.xml", "lib/script/as3/scaffold/scaffold.rb", "lib/script/as3/scaffold/src/models/__Model.as", "lib/script/as3/scaffold/src/views/__model/__ModelDetailView.as", "lib/script/as3/scaffold/src/views/__model/__ModelListItemView.as", "lib/script/as3/scaffold/src/views/__model/__ModelListView.as", "lib/script/bwlimit.rb", "lib/script/generate", "lib/script/server", "lib/script/server.rb", "lib/tidy_project.rb", "Manifest", "Rakefile", "README", "tasks/build.rake", "tasks/release.rake", "test/test_tidy_project.rb", "tidy.gemspec"]
16
+ s.homepage = %q{http://github.com/michaelforrest/tidy}
17
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Tidy", "--main", "README"]
18
+ s.require_paths = ["lib"]
19
+ s.rubyforge_project = %q{tidy}
20
+ s.rubygems_version = %q{1.3.4}
21
+ s.summary = %q{Tidy Flash - an ActionScript framework for people who love Ruby}
22
+ s.test_files = ["test/test_tidy_project.rb"]
23
+
24
+ if s.respond_to? :specification_version then
25
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
26
+ s.specification_version = 3
27
+
28
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
29
+ else
30
+ end
31
+ else
32
+ end
33
+ end