sprokovuln 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +26 -0
- data/README.md +35 -0
- data/Rakefile +2 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/sprokovuln/version.rb +3 -0
- data/lib/sprokovuln.rb +5 -0
- data/sprokovuln.gemspec +26 -0
- data/vendor/ruby/bin/rackup +27 -0
- data/vendor/ruby/bin/rake +27 -0
- data/vendor/ruby/bin/sprockets +27 -0
- data/vendor/ruby/cache/concurrent-ruby-1.0.5.gem +0 -0
- data/vendor/ruby/cache/rack-2.0.5.gem +0 -0
- data/vendor/ruby/cache/rake-10.5.0.gem +0 -0
- data/vendor/ruby/cache/sprockets-3.7.1.gem +0 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/CHANGELOG.md +387 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/LICENSE.txt +21 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/README.md +247 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/agent.rb +587 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/array.rb +39 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/async.rb +445 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atom.rb +222 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/abstract_thread_local_var.rb +66 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/atomic_boolean.rb +122 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/atomic_fixnum.rb +139 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/atomic_reference.rb +51 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/count_down_latch.rb +100 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/cyclic_barrier.rb +128 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/event.rb +109 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/java_count_down_latch.rb +39 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/java_thread_local_var.rb +37 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/mutex_atomic_boolean.rb +60 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/mutex_atomic_fixnum.rb +75 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/mutex_count_down_latch.rb +43 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/mutex_semaphore.rb +115 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/read_write_lock.rb +253 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/reentrant_read_write_lock.rb +377 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/ruby_thread_local_var.rb +161 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/semaphore.rb +145 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic/thread_local_var.rb +104 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic_reference/concurrent_update_error.rb +8 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic_reference/direct_update.rb +81 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic_reference/jruby+truffle.rb +2 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic_reference/jruby.rb +16 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic_reference/mutex_atomic.rb +61 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic_reference/numeric_cas_wrapper.rb +28 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic_reference/rbx.rb +22 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomic_reference/ruby.rb +32 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/atomics.rb +53 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/collection/copy_on_notify_observer_set.rb +107 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/collection/copy_on_write_observer_set.rb +111 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/collection/java_non_concurrent_priority_queue.rb +84 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/collection/map/atomic_reference_map_backend.rb +927 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/collection/map/mri_map_backend.rb +66 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/collection/map/non_concurrent_map_backend.rb +141 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/collection/map/synchronized_map_backend.rb +82 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/collection/non_concurrent_priority_queue.rb +143 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb +150 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/concern/deprecation.rb +34 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/concern/dereferenceable.rb +73 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/concern/logging.rb +27 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/concern/obligation.rb +220 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/concern/observable.rb +110 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/configuration.rb +188 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/constants.rb +8 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/dataflow.rb +80 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/delay.rb +197 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/edge.rb +26 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/errors.rb +69 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/exchanger.rb +356 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/abstract_executor_service.rb +134 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/cached_thread_pool.rb +62 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/executor_service.rb +185 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/fixed_thread_pool.rb +206 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/immediate_executor.rb +66 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/indirect_immediate_executor.rb +44 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/java_executor_service.rb +100 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/java_single_thread_executor.rb +29 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/java_thread_pool_executor.rb +120 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/ruby_executor_service.rb +78 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/ruby_single_thread_executor.rb +22 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/ruby_thread_pool_executor.rb +362 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/safe_task_executor.rb +35 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/serial_executor_service.rb +34 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/serialized_execution.rb +107 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/serialized_execution_delegator.rb +28 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/simple_executor_service.rb +100 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/single_thread_executor.rb +56 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/thread_pool_executor.rb +87 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executor/timer_set.rb +175 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/executors.rb +20 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/future.rb +138 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/hash.rb +36 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/immutable_struct.rb +93 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/ivar.rb +208 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/lazy_register.rb +81 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/map.rb +240 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/maybe.rb +229 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/mutable_struct.rb +228 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/mvar.rb +242 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/options.rb +42 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/promise.rb +547 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/scheduled_task.rb +318 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/settable_struct.rb +128 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/abstract_lockable_object.rb +98 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/abstract_object.rb +24 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/abstract_struct.rb +157 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/condition.rb +58 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/jruby_lockable_object.rb +13 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/jruby_object.rb +44 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/lock.rb +34 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/lockable_object.rb +74 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/mri_lockable_object.rb +71 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/mri_object.rb +43 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/object.rb +153 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/rbx_lockable_object.rb +65 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/rbx_object.rb +48 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/truffle_lockable_object.rb +9 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/truffle_object.rb +31 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization/volatile.rb +34 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/synchronization.rb +31 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/thread_safe/synchronized_delegator.rb +50 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/thread_safe/util/adder.rb +74 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/thread_safe/util/array_hash_rbx.rb +30 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/thread_safe/util/cheap_lockable.rb +118 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/thread_safe/util/power_of_two_tuple.rb +38 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/thread_safe/util/striped64.rb +241 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/thread_safe/util/volatile.rb +75 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/thread_safe/util/xor_shift_random.rb +50 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/thread_safe/util.rb +16 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/timer_task.rb +331 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/tuple.rb +86 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/tvar.rb +258 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/utility/at_exit.rb +97 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/utility/engine.rb +56 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/utility/monotonic_time.rb +58 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/utility/native_extension_loader.rb +73 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/utility/native_integer.rb +53 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/utility/processor_counter.rb +160 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent/version.rb +4 -0
- data/vendor/ruby/gems/concurrent-ruby-1.0.5/lib/concurrent.rb +130 -0
- data/vendor/ruby/gems/rack-2.0.5/COPYING +18 -0
- data/vendor/ruby/gems/rack-2.0.5/HISTORY.md +505 -0
- data/vendor/ruby/gems/rack-2.0.5/README.rdoc +302 -0
- data/vendor/ruby/gems/rack-2.0.5/Rakefile +116 -0
- data/vendor/ruby/gems/rack-2.0.5/SPEC +263 -0
- data/vendor/ruby/gems/rack-2.0.5/bin/rackup +4 -0
- data/vendor/ruby/gems/rack-2.0.5/contrib/rack.png +0 -0
- data/vendor/ruby/gems/rack-2.0.5/contrib/rack.svg +150 -0
- data/vendor/ruby/gems/rack-2.0.5/contrib/rack_logo.svg +164 -0
- data/vendor/ruby/gems/rack-2.0.5/contrib/rdoc.css +412 -0
- data/vendor/ruby/gems/rack-2.0.5/example/lobster.ru +4 -0
- data/vendor/ruby/gems/rack-2.0.5/example/protectedlobster.rb +14 -0
- data/vendor/ruby/gems/rack-2.0.5/example/protectedlobster.ru +8 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/auth/abstract/handler.rb +37 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/auth/abstract/request.rb +47 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/auth/basic.rb +58 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/auth/digest/md5.rb +129 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/auth/digest/nonce.rb +51 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/auth/digest/params.rb +52 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/auth/digest/request.rb +41 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/body_proxy.rb +44 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/builder.rb +164 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/cascade.rb +52 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/chunked.rb +69 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/common_logger.rb +72 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/conditional_get.rb +79 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/config.rb +20 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/content_length.rb +37 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/content_type.rb +29 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/deflater.rb +119 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/directory.rb +179 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/etag.rb +74 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/events.rb +154 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/file.rb +176 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/handler/cgi.rb +60 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/handler/fastcgi.rb +100 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/handler/lsws.rb +61 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/handler/scgi.rb +70 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/handler/thin.rb +36 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/handler/webrick.rb +120 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/handler.rb +99 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/head.rb +25 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/lint.rb +760 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/lobster.rb +70 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/lock.rb +31 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/logger.rb +18 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/media_type.rb +38 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/method_override.rb +50 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/mime.rb +677 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/mock.rb +196 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/multipart/generator.rb +93 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/multipart/parser.rb +369 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/multipart/uploaded_file.rb +33 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/multipart.rb +63 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/null_logger.rb +37 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/query_parser.rb +192 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/recursive.rb +62 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/reloader.rb +110 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/request.rb +487 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/response.rb +235 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/rewindable_input.rb +93 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/runtime.rb +32 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/sendfile.rb +158 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/server.rb +395 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/session/abstract/id.rb +445 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/session/cookie.rb +195 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/session/memcache.rb +93 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/session/pool.rb +76 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/show_exceptions.rb +386 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/show_status.rb +113 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/static.rb +175 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/tempfile_reaper.rb +22 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/urlmap.rb +91 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack/utils.rb +620 -0
- data/vendor/ruby/gems/rack-2.0.5/lib/rack.rb +147 -0
- data/vendor/ruby/gems/rack-2.0.5/rack.gemspec +34 -0
- data/vendor/ruby/gems/rack-2.0.5/test/builder/an_underscore_app.rb +5 -0
- data/vendor/ruby/gems/rack-2.0.5/test/builder/anything.rb +5 -0
- data/vendor/ruby/gems/rack-2.0.5/test/builder/comment.ru +4 -0
- data/vendor/ruby/gems/rack-2.0.5/test/builder/end.ru +5 -0
- data/vendor/ruby/gems/rack-2.0.5/test/builder/line.ru +1 -0
- data/vendor/ruby/gems/rack-2.0.5/test/builder/options.ru +2 -0
- data/vendor/ruby/gems/rack-2.0.5/test/cgi/assets/folder/test.js +1 -0
- data/vendor/ruby/gems/rack-2.0.5/test/cgi/assets/fonts/font.eot +1 -0
- data/vendor/ruby/gems/rack-2.0.5/test/cgi/assets/images/image.png +1 -0
- data/vendor/ruby/gems/rack-2.0.5/test/cgi/assets/index.html +1 -0
- data/vendor/ruby/gems/rack-2.0.5/test/cgi/assets/javascripts/app.js +1 -0
- data/vendor/ruby/gems/rack-2.0.5/test/cgi/assets/stylesheets/app.css +1 -0
- data/vendor/ruby/gems/rack-2.0.5/test/cgi/lighttpd.conf +26 -0
- data/vendor/ruby/gems/rack-2.0.5/test/cgi/rackup_stub.rb +6 -0
- data/vendor/ruby/gems/rack-2.0.5/test/cgi/sample_rackup.ru +5 -0
- data/vendor/ruby/gems/rack-2.0.5/test/cgi/test +9 -0
- data/vendor/ruby/gems/rack-2.0.5/test/cgi/test+directory/test+file +1 -0
- data/vendor/ruby/gems/rack-2.0.5/test/cgi/test.fcgi +9 -0
- data/vendor/ruby/gems/rack-2.0.5/test/cgi/test.gz +0 -0
- data/vendor/ruby/gems/rack-2.0.5/test/cgi/test.ru +5 -0
- data/vendor/ruby/gems/rack-2.0.5/test/gemloader.rb +10 -0
- data/vendor/ruby/gems/rack-2.0.5/test/helper.rb +34 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/bad_robots +259 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/binary +0 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/content_type_and_no_filename +6 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/empty +10 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/fail_16384_nofile +814 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/file1.txt +1 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/filename_and_modification_param +7 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/filename_and_no_name +6 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/filename_with_encoded_words +7 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/filename_with_escaped_quotes +6 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/filename_with_escaped_quotes_and_modification_param +7 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/filename_with_null_byte +7 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/filename_with_percent_escaped_quotes +6 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/filename_with_single_quote +7 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/filename_with_unescaped_percentages +6 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/filename_with_unescaped_percentages2 +6 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/filename_with_unescaped_percentages3 +6 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/filename_with_unescaped_quotes +6 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/ie +6 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/invalid_character +6 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/mixed_files +21 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/nested +10 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/none +9 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/quoted +15 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/rack-logo.png +0 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/semicolon +6 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/text +15 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/three_files_three_fields +31 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/unity3d_wwwform +11 -0
- data/vendor/ruby/gems/rack-2.0.5/test/multipart/webkit +32 -0
- data/vendor/ruby/gems/rack-2.0.5/test/rackup/config.ru +31 -0
- data/vendor/ruby/gems/rack-2.0.5/test/registering_handler/rack/handler/registering_myself.rb +8 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_auth_basic.rb +89 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_auth_digest.rb +260 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_body_proxy.rb +85 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_builder.rb +233 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_cascade.rb +63 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_cgi.rb +84 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_chunked.rb +103 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_common_logger.rb +95 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_conditional_get.rb +103 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_config.rb +23 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_content_length.rb +86 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_content_type.rb +46 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_deflater.rb +375 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_directory.rb +148 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_etag.rb +108 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_events.rb +133 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_fastcgi.rb +85 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_file.rb +264 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_handler.rb +57 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_head.rb +46 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_lint.rb +515 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_lobster.rb +59 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_lock.rb +204 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_logger.rb +24 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_media_type.rb +42 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_method_override.rb +110 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_mime.rb +51 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_mock.rb +359 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_multipart.rb +722 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_null_logger.rb +21 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_recursive.rb +75 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_request.rb +1393 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_response.rb +510 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_rewindable_input.rb +128 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_runtime.rb +50 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_sendfile.rb +125 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_server.rb +193 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_session_abstract_id.rb +31 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_session_abstract_session_hash.rb +45 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_session_cookie.rb +442 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_session_memcache.rb +320 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_session_pool.rb +210 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_show_exceptions.rb +80 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_show_status.rb +104 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_static.rb +184 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_tempfile_reaper.rb +64 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_thin.rb +96 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_urlmap.rb +237 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_utils.rb +742 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_version.rb +11 -0
- data/vendor/ruby/gems/rack-2.0.5/test/spec_webrick.rb +206 -0
- data/vendor/ruby/gems/rack-2.0.5/test/static/another/index.html +1 -0
- data/vendor/ruby/gems/rack-2.0.5/test/static/foo.html +1 -0
- data/vendor/ruby/gems/rack-2.0.5/test/static/index.html +1 -0
- data/vendor/ruby/gems/rack-2.0.5/test/testrequest.rb +78 -0
- data/vendor/ruby/gems/rack-2.0.5/test/unregistered_handler/rack/handler/unregistered.rb +7 -0
- data/vendor/ruby/gems/rack-2.0.5/test/unregistered_handler/rack/handler/unregistered_long_one.rb +7 -0
- data/vendor/ruby/gems/rake-10.5.0/.autotest +7 -0
- data/vendor/ruby/gems/rake-10.5.0/.rubocop.yml +27 -0
- data/vendor/ruby/gems/rake-10.5.0/.togglerc +7 -0
- data/vendor/ruby/gems/rake-10.5.0/CONTRIBUTING.rdoc +38 -0
- data/vendor/ruby/gems/rake-10.5.0/History.rdoc +659 -0
- data/vendor/ruby/gems/rake-10.5.0/MIT-LICENSE +21 -0
- data/vendor/ruby/gems/rake-10.5.0/Manifest.txt +166 -0
- data/vendor/ruby/gems/rake-10.5.0/README.rdoc +139 -0
- data/vendor/ruby/gems/rake-10.5.0/Rakefile +81 -0
- data/vendor/ruby/gems/rake-10.5.0/bin/rake +33 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/command_line_usage.rdoc +158 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/example/Rakefile1 +38 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/example/Rakefile2 +35 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/example/a.c +6 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/example/b.c +6 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/example/main.c +11 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/glossary.rdoc +42 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/jamis.rb +591 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/proto_rake.rdoc +127 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/rake.1 +141 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/rakefile.rdoc +624 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/rational.rdoc +151 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.4.14.rdoc +23 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.4.15.rdoc +35 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.5.0.rdoc +53 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.5.3.rdoc +78 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.5.4.rdoc +46 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.6.0.rdoc +141 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.7.0.rdoc +119 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.7.1.rdoc +59 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.7.2.rdoc +121 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.7.3.rdoc +47 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.8.0.rdoc +114 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.8.2.rdoc +165 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.8.3.rdoc +112 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.8.4.rdoc +147 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.8.5.rdoc +53 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.8.6.rdoc +37 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.8.7.rdoc +55 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.9.0.rdoc +112 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.9.1.rdoc +52 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.rdoc +49 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.9.3.rdoc +102 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.9.4.rdoc +60 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.9.5.rdoc +55 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-0.9.6.rdoc +64 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-10.0.0.rdoc +178 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-10.0.1.rdoc +58 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-10.0.2.rdoc +53 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-10.0.3.rdoc +191 -0
- data/vendor/ruby/gems/rake-10.5.0/doc/release_notes/rake-10.1.0.rdoc +61 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/alt_system.rb +110 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/application.rb +790 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/backtrace.rb +23 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/clean.rb +76 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/cloneable.rb +16 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/contrib/.document +1 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb +21 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb +137 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/contrib/publisher.rb +81 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb +18 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb +61 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/contrib/sys.rb +4 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/cpu_counter.rb +125 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/default_loader.rb +14 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/dsl_definition.rb +201 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/early_time.rb +21 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/ext/core.rb +25 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/ext/module.rb +2 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/ext/pathname.rb +25 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/ext/string.rb +175 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/ext/time.rb +18 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/file_creation_task.rb +24 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/file_list.rb +428 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/file_task.rb +46 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/file_utils.rb +128 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/file_utils_ext.rb +144 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/gempackagetask.rb +4 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/invocation_chain.rb +56 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb +16 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/late_time.rb +17 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/linked_list.rb +103 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/loaders/makefile.rb +53 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/multi_task.rb +13 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/name_space.rb +38 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/packagetask.rb +199 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/pathmap.rb +3 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/phony.rb +15 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/private_reader.rb +20 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/promise.rb +99 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/pseudo_status.rb +29 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/rake_module.rb +38 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/rake_test_loader.rb +22 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/rdoctask.rb +4 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb +29 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/runtest.rb +27 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/scope.rb +42 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/task.rb +383 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/task_argument_error.rb +7 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/task_arguments.rb +98 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/task_manager.rb +307 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/tasklib.rb +24 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/testtask.rb +213 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/thread_history_display.rb +48 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/thread_pool.rb +164 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/trace_output.rb +22 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/version.rb +7 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake/win32.rb +56 -0
- data/vendor/ruby/gems/rake-10.5.0/lib/rake.rb +79 -0
- data/vendor/ruby/gems/rake-10.5.0/rakelib/publish.rake +20 -0
- data/vendor/ruby/gems/rake-10.5.0/rakelib/test_times.rake +25 -0
- data/vendor/ruby/gems/rake-10.5.0/test/file_creation.rb +34 -0
- data/vendor/ruby/gems/rake-10.5.0/test/helper.rb +129 -0
- data/vendor/ruby/gems/rake-10.5.0/test/support/rakefile_definitions.rb +478 -0
- data/vendor/ruby/gems/rake-10.5.0/test/support/ruby_runner.rb +34 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_private_reader.rb +42 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake.rb +40 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_application.rb +643 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_application_options.rb +468 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_backtrace.rb +119 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_clean.rb +61 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_cpu_counter.rb +68 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_definitions.rb +84 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_directory_task.rb +76 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_dsl.rb +40 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_early_time.rb +31 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_extension.rb +59 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_file_creation_task.rb +56 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_file_list.rb +670 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb +8 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_file_task.rb +197 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_file_utils.rb +314 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_ftp_file.rb +74 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_functional.rb +482 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_invocation_chain.rb +64 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_late_time.rb +18 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_linked_list.rb +84 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_makefile_loader.rb +46 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_multi_task.rb +64 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_name_space.rb +57 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_package_task.rb +79 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_path_map.rb +168 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_path_map_explode.rb +34 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_path_map_partial.rb +18 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb +15 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_pseudo_status.rb +21 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb +20 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_reduce_compat.rb +26 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_require.rb +40 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_rules.rb +388 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_scope.rb +44 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_task.rb +393 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb +119 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_task_arguments.rb +127 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_task_lib.rb +9 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_task_manager.rb +178 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb +19 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb +172 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_test_task.rb +146 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_thread_pool.rb +145 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_top_level_functions.rb +71 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_rake_win32.rb +72 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_thread_history_display.rb +101 -0
- data/vendor/ruby/gems/rake-10.5.0/test/test_trace_output.rb +52 -0
- data/vendor/ruby/gems/sprockets-3.7.1/CHANGELOG.md +292 -0
- data/vendor/ruby/gems/sprockets-3.7.1/LICENSE +21 -0
- data/vendor/ruby/gems/sprockets-3.7.1/README.md +509 -0
- data/vendor/ruby/gems/sprockets-3.7.1/bin/sprockets +89 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/rake/sprocketstask.rb +152 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/asset.rb +200 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/autoload/closure.rb +7 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/autoload/coffee_script.rb +7 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/autoload/eco.rb +7 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/autoload/ejs.rb +7 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/autoload/sass.rb +7 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/autoload/uglifier.rb +7 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/autoload/yui.rb +7 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/autoload.rb +11 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/base.rb +110 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/bower.rb +58 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/bundle.rb +69 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/cache/file_store.rb +186 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/cache/memory_store.rb +66 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/cache/null_store.rb +46 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/cache.rb +236 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb +69 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/closure_compressor.rb +47 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/coffee_script_processor.rb +25 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/coffee_script_template.rb +17 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/compressing.rb +94 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/configuration.rb +83 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/context.rb +231 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/dependencies.rb +73 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/deprecation.rb +90 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/digest_utils.rb +180 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/directive_processor.rb +404 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/eco_processor.rb +32 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/eco_template.rb +17 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/ejs_processor.rb +31 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/ejs_template.rb +17 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/encoding_utils.rb +261 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/engines.rb +92 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/environment.rb +41 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/erb_processor.rb +30 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/erb_template.rb +11 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/errors.rb +11 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/file_reader.rb +15 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/http_utils.rb +117 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/jst_processor.rb +49 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/legacy.rb +330 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/legacy_proc_processor.rb +35 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/legacy_tilt_processor.rb +29 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/loader.rb +325 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/manifest.rb +335 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/manifest_utils.rb +45 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/mime.rb +130 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/path_dependency_utils.rb +85 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/path_digest_utils.rb +47 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb +287 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/paths.rb +81 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/processing.rb +258 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb +180 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/resolve.rb +211 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/sass_cache_store.rb +34 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/sass_compressor.rb +51 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/sass_functions.rb +2 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/sass_importer.rb +2 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/sass_processor.rb +292 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/sass_template.rb +19 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/server.rb +292 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/transformers.rb +145 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/uglifier_compressor.rb +56 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/unloaded_asset.rb +137 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/uri_tar.rb +98 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/uri_utils.rb +188 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/utils/gzip.rb +67 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/utils.rb +235 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/version.rb +3 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets/yui_compressor.rb +55 -0
- data/vendor/ruby/gems/sprockets-3.7.1/lib/sprockets.rb +169 -0
- data/vendor/ruby/specifications/concurrent-ruby-1.0.5.gemspec +23 -0
- data/vendor/ruby/specifications/rack-2.0.5.gemspec +42 -0
- data/vendor/ruby/specifications/rake-10.5.0.gemspec +43 -0
- data/vendor/ruby/specifications/sprockets-3.7.1.gemspec +78 -0
- metadata +660 -0
@@ -0,0 +1,145 @@
|
|
1
|
+
require 'sprockets/http_utils'
|
2
|
+
require 'sprockets/processor_utils'
|
3
|
+
require 'sprockets/utils'
|
4
|
+
|
5
|
+
module Sprockets
|
6
|
+
module Transformers
|
7
|
+
include HTTPUtils, ProcessorUtils, Utils
|
8
|
+
|
9
|
+
# Public: Two level mapping of a source mime type to a target mime type.
|
10
|
+
#
|
11
|
+
# environment.transformers
|
12
|
+
# # => { 'text/coffeescript' => {
|
13
|
+
# 'application/javascript' => ConvertCoffeeScriptToJavaScript
|
14
|
+
# }
|
15
|
+
# }
|
16
|
+
#
|
17
|
+
def transformers
|
18
|
+
config[:transformers]
|
19
|
+
end
|
20
|
+
|
21
|
+
# Public: Register a transformer from and to a mime type.
|
22
|
+
#
|
23
|
+
# from - String mime type
|
24
|
+
# to - String mime type
|
25
|
+
# proc - Callable block that accepts an input Hash.
|
26
|
+
#
|
27
|
+
# Examples
|
28
|
+
#
|
29
|
+
# register_transformer 'text/coffeescript', 'application/javascript',
|
30
|
+
# ConvertCoffeeScriptToJavaScript
|
31
|
+
#
|
32
|
+
# register_transformer 'image/svg+xml', 'image/png', ConvertSvgToPng
|
33
|
+
#
|
34
|
+
# Returns nothing.
|
35
|
+
def register_transformer(from, to, proc)
|
36
|
+
self.config = hash_reassoc(config, :registered_transformers, from) do |transformers|
|
37
|
+
transformers.merge(to => proc)
|
38
|
+
end
|
39
|
+
compute_transformers!
|
40
|
+
end
|
41
|
+
|
42
|
+
# Internal: Resolve target mime type that the source type should be
|
43
|
+
# transformed to.
|
44
|
+
#
|
45
|
+
# type - String from mime type
|
46
|
+
# accept - String accept type list (default: '*/*')
|
47
|
+
#
|
48
|
+
# Examples
|
49
|
+
#
|
50
|
+
# resolve_transform_type('text/plain', 'text/plain')
|
51
|
+
# # => 'text/plain'
|
52
|
+
#
|
53
|
+
# resolve_transform_type('image/svg+xml', 'image/png, image/*')
|
54
|
+
# # => 'image/png'
|
55
|
+
#
|
56
|
+
# resolve_transform_type('text/css', 'image/png')
|
57
|
+
# # => nil
|
58
|
+
#
|
59
|
+
# Returns String mime type or nil is no type satisfied the accept value.
|
60
|
+
def resolve_transform_type(type, accept)
|
61
|
+
find_best_mime_type_match(accept || '*/*', [type].compact + config[:transformers][type].keys)
|
62
|
+
end
|
63
|
+
|
64
|
+
# Internal: Expand accept type list to include possible transformed types.
|
65
|
+
#
|
66
|
+
# parsed_accepts - Array of accept q values
|
67
|
+
#
|
68
|
+
# Examples
|
69
|
+
#
|
70
|
+
# expand_transform_accepts([['application/javascript', 1.0]])
|
71
|
+
# # => [['application/javascript', 1.0], ['text/coffeescript', 0.8]]
|
72
|
+
#
|
73
|
+
# Returns an expanded Array of q values.
|
74
|
+
def expand_transform_accepts(parsed_accepts)
|
75
|
+
accepts = []
|
76
|
+
parsed_accepts.each do |(type, q)|
|
77
|
+
accepts.push([type, q])
|
78
|
+
config[:inverted_transformers][type].each do |subtype|
|
79
|
+
accepts.push([subtype, q * 0.8])
|
80
|
+
end
|
81
|
+
end
|
82
|
+
accepts
|
83
|
+
end
|
84
|
+
|
85
|
+
# Internal: Compose multiple transformer steps into a single processor
|
86
|
+
# function.
|
87
|
+
#
|
88
|
+
# transformers - Two level Hash of a source mime type to a target mime type
|
89
|
+
# types - Array of mime type steps
|
90
|
+
#
|
91
|
+
# Returns Processor.
|
92
|
+
def compose_transformers(transformers, types)
|
93
|
+
if types.length < 2
|
94
|
+
raise ArgumentError, "too few transform types: #{types.inspect}"
|
95
|
+
end
|
96
|
+
|
97
|
+
i = 0
|
98
|
+
processors = []
|
99
|
+
|
100
|
+
loop do
|
101
|
+
src = types[i]
|
102
|
+
dst = types[i+1]
|
103
|
+
break unless src && dst
|
104
|
+
|
105
|
+
unless processor = transformers[src][dst]
|
106
|
+
raise ArgumentError, "missing transformer for type: #{src} to #{dst}"
|
107
|
+
end
|
108
|
+
processors.concat config[:postprocessors][src]
|
109
|
+
processors << processor
|
110
|
+
processors.concat config[:preprocessors][dst]
|
111
|
+
|
112
|
+
i += 1
|
113
|
+
end
|
114
|
+
|
115
|
+
if processors.size > 1
|
116
|
+
compose_processors(*processors.reverse)
|
117
|
+
elsif processors.size == 1
|
118
|
+
processors.first
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
private
|
123
|
+
def compute_transformers!
|
124
|
+
registered_transformers = self.config[:registered_transformers]
|
125
|
+
transformers = Hash.new { {} }
|
126
|
+
inverted_transformers = Hash.new { Set.new }
|
127
|
+
|
128
|
+
registered_transformers.keys.flat_map do |key|
|
129
|
+
dfs_paths([key]) { |k| registered_transformers[k].keys }
|
130
|
+
end.each do |types|
|
131
|
+
src, dst = types.first, types.last
|
132
|
+
processor = compose_transformers(registered_transformers, types)
|
133
|
+
|
134
|
+
transformers[src] = {} unless transformers.key?(src)
|
135
|
+
transformers[src][dst] = processor
|
136
|
+
|
137
|
+
inverted_transformers[dst] = Set.new unless inverted_transformers.key?(dst)
|
138
|
+
inverted_transformers[dst] << src
|
139
|
+
end
|
140
|
+
|
141
|
+
self.config = hash_reassoc(config, :transformers) { transformers }
|
142
|
+
self.config = hash_reassoc(config, :inverted_transformers) { inverted_transformers }
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'sprockets/autoload'
|
2
|
+
require 'sprockets/digest_utils'
|
3
|
+
|
4
|
+
module Sprockets
|
5
|
+
# Public: Uglifier/Uglify compressor.
|
6
|
+
#
|
7
|
+
# To accept the default options
|
8
|
+
#
|
9
|
+
# environment.register_bundle_processor 'application/javascript',
|
10
|
+
# Sprockets::UglifierCompressor
|
11
|
+
#
|
12
|
+
# Or to pass options to the Uglifier class.
|
13
|
+
#
|
14
|
+
# environment.register_bundle_processor 'application/javascript',
|
15
|
+
# Sprockets::UglifierCompressor.new(comments: :copyright)
|
16
|
+
#
|
17
|
+
class UglifierCompressor
|
18
|
+
VERSION = '1'
|
19
|
+
|
20
|
+
# Public: Return singleton instance with default options.
|
21
|
+
#
|
22
|
+
# Returns UglifierCompressor object.
|
23
|
+
def self.instance
|
24
|
+
@instance ||= new
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.call(input)
|
28
|
+
instance.call(input)
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.cache_key
|
32
|
+
instance.cache_key
|
33
|
+
end
|
34
|
+
|
35
|
+
attr_reader :cache_key
|
36
|
+
|
37
|
+
def initialize(options = {})
|
38
|
+
# Feature detect Uglifier 2.0 option support
|
39
|
+
if Autoload::Uglifier::DEFAULTS[:copyright]
|
40
|
+
# Uglifier < 2.x
|
41
|
+
options[:copyright] ||= false
|
42
|
+
else
|
43
|
+
# Uglifier >= 2.x
|
44
|
+
options[:comments] ||= :none
|
45
|
+
end
|
46
|
+
|
47
|
+
@options = options
|
48
|
+
@cache_key = "#{self.class.name}:#{Autoload::Uglifier::VERSION}:#{VERSION}:#{DigestUtils.digest(options)}".freeze
|
49
|
+
end
|
50
|
+
|
51
|
+
def call(input)
|
52
|
+
@uglifier ||= Autoload::Uglifier.new(@options)
|
53
|
+
@uglifier.compile(input[:data])
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,137 @@
|
|
1
|
+
require 'sprockets/uri_utils'
|
2
|
+
require 'sprockets/uri_tar'
|
3
|
+
|
4
|
+
module Sprockets
|
5
|
+
# Internal: Used to parse and store the URI to an unloaded asset
|
6
|
+
# Generates keys used to store and retrieve items from cache
|
7
|
+
class UnloadedAsset
|
8
|
+
|
9
|
+
# Internal: Initialize object for generating cache keys
|
10
|
+
#
|
11
|
+
# uri - A String containing complete URI to a file including scheme
|
12
|
+
# and full path such as
|
13
|
+
# "file:///Path/app/assets/js/app.js?type=application/javascript"
|
14
|
+
# env - The current "environment" that assets are being loaded into.
|
15
|
+
# We need it so we know where the +root+ (directory where sprockets
|
16
|
+
# is being invoked). We also need for the `file_digest` method,
|
17
|
+
# since, for some strange reason, memoization is provided by
|
18
|
+
# overriding methods such as `stat` in the `PathUtils` module.
|
19
|
+
#
|
20
|
+
# Returns UnloadedAsset.
|
21
|
+
def initialize(uri, env)
|
22
|
+
@uri = uri.to_s
|
23
|
+
@env = env
|
24
|
+
@compressed_path = URITar.new(uri, env).compressed_path
|
25
|
+
@params = nil # lazy loaded
|
26
|
+
@filename = nil # lazy loaded
|
27
|
+
end
|
28
|
+
attr_reader :compressed_path, :uri
|
29
|
+
|
30
|
+
# Internal: Full file path without schema
|
31
|
+
#
|
32
|
+
# This returns a string containing the full path to the asset without the schema.
|
33
|
+
# Information is loaded lazilly since we want `UnloadedAsset.new(dep, self).relative_path`
|
34
|
+
# to be fast. Calling this method the first time allocates an array and a hash.
|
35
|
+
#
|
36
|
+
# Example
|
37
|
+
#
|
38
|
+
# If the URI is `file:///Full/path/app/assets/javascripts/application.js"` then the
|
39
|
+
# filename would be `"/Full/path/app/assets/javascripts/application.js"`
|
40
|
+
#
|
41
|
+
# Returns a String.
|
42
|
+
def filename
|
43
|
+
unless @filename
|
44
|
+
load_file_params
|
45
|
+
end
|
46
|
+
@filename
|
47
|
+
end
|
48
|
+
|
49
|
+
# Internal: Hash of param values
|
50
|
+
#
|
51
|
+
# This information is generated and used internally by sprockets.
|
52
|
+
# Known keys include `:type` which store the asset's mime-type, `:id` which is a fully resolved
|
53
|
+
# digest for the asset (includes dependency digest as opposed to a digest of only file contents)
|
54
|
+
# and `:pipeline`. Hash may be empty.
|
55
|
+
#
|
56
|
+
# Example
|
57
|
+
#
|
58
|
+
# If the URI is `file:///Full/path/app/assets/javascripts/application.js"type=application/javascript`
|
59
|
+
# Then the params would be `{type: "application/javascript"}`
|
60
|
+
#
|
61
|
+
# Returns a Hash.
|
62
|
+
def params
|
63
|
+
unless @params
|
64
|
+
load_file_params
|
65
|
+
end
|
66
|
+
@params
|
67
|
+
end
|
68
|
+
|
69
|
+
# Internal: Key of asset
|
70
|
+
#
|
71
|
+
# Used to retrieve an asset from the cache based on "compressed" path to asset.
|
72
|
+
# A "compressed" path can either be relative to the root of the project or an
|
73
|
+
# absolute path.
|
74
|
+
#
|
75
|
+
# Returns a String.
|
76
|
+
def asset_key
|
77
|
+
"asset-uri:#{compressed_path}"
|
78
|
+
end
|
79
|
+
|
80
|
+
# Public: Dependency History key
|
81
|
+
#
|
82
|
+
# Used to retrieve an array of "histories" each of which contain a set of stored dependencies
|
83
|
+
# for a given asset path and filename digest.
|
84
|
+
#
|
85
|
+
# A dependency can refer to either an asset i.e. index.js
|
86
|
+
# may rely on jquery.js (so jquery.js is a dependency), or other factors that may affect
|
87
|
+
# compilation, such as the VERSION of sprockets (i.e. the environment) and what "processors"
|
88
|
+
# are used.
|
89
|
+
#
|
90
|
+
# For example a history array with one Set of dependencies may look like:
|
91
|
+
#
|
92
|
+
# [["environment-version", "environment-paths", "processors:type=text/css&file_type=text/css",
|
93
|
+
# "file-digest:///Full/path/app/assets/stylesheets/application.css",
|
94
|
+
# "processors:type=text/css&file_type=text/css&pipeline=self",
|
95
|
+
# "file-digest:///Full/path/app/assets/stylesheets"]]
|
96
|
+
#
|
97
|
+
# This method of asset lookup is used to ensure that none of the dependencies have been modified
|
98
|
+
# since last lookup. If one of them has, the key will be different and a new entry must be stored.
|
99
|
+
#
|
100
|
+
# URI depndencies are later converted to "compressed" paths
|
101
|
+
#
|
102
|
+
# Returns a String.
|
103
|
+
def dependency_history_key
|
104
|
+
"asset-uri-cache-dependencies:#{compressed_path}:#{ @env.file_digest(filename) }"
|
105
|
+
end
|
106
|
+
|
107
|
+
# Internal: Digest key
|
108
|
+
#
|
109
|
+
# Used to retrieve a string containing the "compressed" path to an asset based on
|
110
|
+
# a digest. The digest is generated from dependencies stored via information stored in
|
111
|
+
# the `dependency_history_key` after each of the "dependencies" is "resolved" for example
|
112
|
+
# "environment-version" may be resolved to "environment-1.0-3.2.0" for version "3.2.0" of sprockets
|
113
|
+
#
|
114
|
+
# Returns a String.
|
115
|
+
def digest_key(digest)
|
116
|
+
"asset-uri-digest:#{compressed_path}:#{digest}"
|
117
|
+
end
|
118
|
+
|
119
|
+
# Internal: File digest key
|
120
|
+
#
|
121
|
+
# The digest for a given file won't change if the path and the stat time hasn't changed
|
122
|
+
# We can save time by not re-computing this information and storing it in the cache
|
123
|
+
#
|
124
|
+
# Returns a String.
|
125
|
+
def file_digest_key(stat)
|
126
|
+
"file_digest:#{compressed_path}:#{stat}"
|
127
|
+
end
|
128
|
+
|
129
|
+
private
|
130
|
+
# Internal: Parses uri into filename and params hash
|
131
|
+
#
|
132
|
+
# Returns Array with filename and params hash
|
133
|
+
def load_file_params
|
134
|
+
@filename, @params = URIUtils.parse_asset_uri(uri)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require 'sprockets/path_utils'
|
2
|
+
|
3
|
+
module Sprockets
|
4
|
+
# Internal: used to "expand" and "compress" values for storage
|
5
|
+
class URITar
|
6
|
+
attr_reader :scheme, :root, :path
|
7
|
+
|
8
|
+
# Internal: Initialize object for compression or expansion
|
9
|
+
#
|
10
|
+
# uri - A String containing URI that may or may not contain the scheme
|
11
|
+
# env - The current "environment" that assets are being loaded into.
|
12
|
+
def initialize(uri, env)
|
13
|
+
@root = env.root
|
14
|
+
@env = env
|
15
|
+
uri = uri.to_s
|
16
|
+
if uri.include?("://".freeze)
|
17
|
+
@scheme, _, @path = uri.partition("://".freeze)
|
18
|
+
@scheme << "://".freeze
|
19
|
+
else
|
20
|
+
@scheme = "".freeze
|
21
|
+
@path = uri
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Internal: Converts full uri to a "compressed" uri
|
26
|
+
#
|
27
|
+
# If a uri is inside of an environment's root it will
|
28
|
+
# be shortened to be a relative path.
|
29
|
+
#
|
30
|
+
# If a uri is outside of the environment's root the original
|
31
|
+
# uri will be returned.
|
32
|
+
#
|
33
|
+
# Returns String
|
34
|
+
def compress
|
35
|
+
scheme + compressed_path
|
36
|
+
end
|
37
|
+
|
38
|
+
# Internal: Tells us if we are using an absolute path
|
39
|
+
#
|
40
|
+
# Nix* systems start with a `/` like /Users/schneems.
|
41
|
+
# Windows systems start with a drive letter than colon and slash
|
42
|
+
# like C:/Schneems.
|
43
|
+
def absolute_path?
|
44
|
+
PathUtils.absolute_path?(path)
|
45
|
+
end
|
46
|
+
|
47
|
+
# Internal: Convert a "compressed" uri to an absolute path
|
48
|
+
#
|
49
|
+
# If a uri is inside of the environment's root it will not
|
50
|
+
# start with a slash for example:
|
51
|
+
#
|
52
|
+
# file://this/is/a/relative/path
|
53
|
+
#
|
54
|
+
# If a uri is outside the root, it will start with a slash:
|
55
|
+
#
|
56
|
+
# file:///This/is/an/absolute/path
|
57
|
+
#
|
58
|
+
# Returns String
|
59
|
+
def expand
|
60
|
+
if absolute_path?
|
61
|
+
# Stored path was absolute, don't add root
|
62
|
+
scheme + path
|
63
|
+
else
|
64
|
+
if scheme.empty?
|
65
|
+
File.join(root, path)
|
66
|
+
else
|
67
|
+
# We always want to return an absolute uri,
|
68
|
+
# make sure the path starts with a slash.
|
69
|
+
scheme + File.join("/".freeze, root, path)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
# Internal: Returns "compressed" path
|
75
|
+
#
|
76
|
+
# If the input uri is relative to the environment root
|
77
|
+
# it will return a path relative to the environment root.
|
78
|
+
# Otherwise an absolute path will be returned.
|
79
|
+
#
|
80
|
+
# Only path information is returned, and not scheme.
|
81
|
+
#
|
82
|
+
# Returns String
|
83
|
+
def compressed_path
|
84
|
+
# windows
|
85
|
+
if !@root.start_with?("/".freeze) && path.start_with?("/".freeze)
|
86
|
+
consistent_root = "/".freeze + @root
|
87
|
+
else
|
88
|
+
consistent_root = @root
|
89
|
+
end
|
90
|
+
|
91
|
+
if compressed_path = PathUtils.split_subpath(consistent_root, path)
|
92
|
+
compressed_path
|
93
|
+
else
|
94
|
+
path
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,188 @@
|
|
1
|
+
require 'uri'
|
2
|
+
|
3
|
+
module Sprockets
|
4
|
+
# Internal: Asset URI related parsing utilities. Mixed into Environment.
|
5
|
+
#
|
6
|
+
# An Asset URI identifies the compiled Asset result. It shares the file:
|
7
|
+
# scheme and requires an absolute path.
|
8
|
+
#
|
9
|
+
# Other query parameters
|
10
|
+
#
|
11
|
+
# type - String output content type. Otherwise assumed from file extension.
|
12
|
+
# This maybe different than the extension if the asset is transformed
|
13
|
+
# from one content type to another. For an example .coffee -> .js.
|
14
|
+
#
|
15
|
+
# id - Unique fingerprint of the entire asset and all its metadata. Assets
|
16
|
+
# will only have the same id if they serialize to an identical value.
|
17
|
+
#
|
18
|
+
# pipeline - String name of pipeline.
|
19
|
+
#
|
20
|
+
module URIUtils
|
21
|
+
extend self
|
22
|
+
|
23
|
+
# Internal: Parse URI into component parts.
|
24
|
+
#
|
25
|
+
# uri - String uri
|
26
|
+
#
|
27
|
+
# Returns Array of components.
|
28
|
+
def split_uri(uri)
|
29
|
+
URI.split(uri)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Internal: Join URI component parts into String.
|
33
|
+
#
|
34
|
+
# Returns String.
|
35
|
+
def join_uri(scheme, userinfo, host, port, registry, path, opaque, query, fragment)
|
36
|
+
URI::Generic.new(scheme, userinfo, host, port, registry, path, opaque, query, fragment).to_s
|
37
|
+
end
|
38
|
+
|
39
|
+
# Internal: Parse file: URI into component parts.
|
40
|
+
#
|
41
|
+
# uri - String uri
|
42
|
+
#
|
43
|
+
# Returns [scheme, host, path, query].
|
44
|
+
def split_file_uri(uri)
|
45
|
+
scheme, _, host, _, _, path, _, query, _ = URI.split(uri)
|
46
|
+
|
47
|
+
path = URI::Generic::DEFAULT_PARSER.unescape(path)
|
48
|
+
path.force_encoding(Encoding::UTF_8)
|
49
|
+
|
50
|
+
# Hack for parsing Windows "file:///C:/Users/IEUser" paths
|
51
|
+
path.gsub!(/^\/([a-zA-Z]:)/, '\1'.freeze)
|
52
|
+
|
53
|
+
[scheme, host, path, query]
|
54
|
+
end
|
55
|
+
|
56
|
+
# Internal: Join file: URI component parts into String.
|
57
|
+
#
|
58
|
+
# Returns String.
|
59
|
+
def join_file_uri(scheme, host, path, query)
|
60
|
+
str = "#{scheme}://"
|
61
|
+
str << host if host
|
62
|
+
path = "/#{path}" unless path.start_with?("/")
|
63
|
+
str << URI::Generic::DEFAULT_PARSER.escape(path)
|
64
|
+
str << "?#{query}" if query
|
65
|
+
str
|
66
|
+
end
|
67
|
+
|
68
|
+
# Internal: Check if String is a valid Asset URI.
|
69
|
+
#
|
70
|
+
# str - Possible String asset URI.
|
71
|
+
#
|
72
|
+
# Returns true or false.
|
73
|
+
def valid_asset_uri?(str)
|
74
|
+
# Quick prefix check before attempting a full parse
|
75
|
+
str.start_with?("file://") && parse_asset_uri(str) ? true : false
|
76
|
+
rescue URI::InvalidURIError
|
77
|
+
false
|
78
|
+
end
|
79
|
+
|
80
|
+
# Internal: Parse Asset URI.
|
81
|
+
#
|
82
|
+
# Examples
|
83
|
+
#
|
84
|
+
# parse("file:///tmp/js/application.coffee?type=application/javascript")
|
85
|
+
# # => "/tmp/js/application.coffee", {type: "application/javascript"}
|
86
|
+
#
|
87
|
+
# uri - String asset URI
|
88
|
+
#
|
89
|
+
# Returns String path and Hash of symbolized parameters.
|
90
|
+
def parse_asset_uri(uri)
|
91
|
+
scheme, _, path, query = split_file_uri(uri)
|
92
|
+
|
93
|
+
unless scheme == 'file'
|
94
|
+
raise URI::InvalidURIError, "expected file:// scheme: #{uri}"
|
95
|
+
end
|
96
|
+
|
97
|
+
return path, parse_uri_query_params(query)
|
98
|
+
end
|
99
|
+
|
100
|
+
# Internal: Build Asset URI.
|
101
|
+
#
|
102
|
+
# Examples
|
103
|
+
#
|
104
|
+
# build("/tmp/js/application.coffee", type: "application/javascript")
|
105
|
+
# # => "file:///tmp/js/application.coffee?type=application/javascript"
|
106
|
+
#
|
107
|
+
# path - String file path
|
108
|
+
# params - Hash of optional parameters
|
109
|
+
#
|
110
|
+
# Returns String URI.
|
111
|
+
def build_asset_uri(path, params = {})
|
112
|
+
join_file_uri("file", nil, path, encode_uri_query_params(params))
|
113
|
+
end
|
114
|
+
|
115
|
+
# Internal: Parse file-digest dependency URI.
|
116
|
+
#
|
117
|
+
# Examples
|
118
|
+
#
|
119
|
+
# parse("file-digest:/tmp/js/application.js")
|
120
|
+
# # => "/tmp/js/application.js"
|
121
|
+
#
|
122
|
+
# uri - String file-digest URI
|
123
|
+
#
|
124
|
+
# Returns String path.
|
125
|
+
def parse_file_digest_uri(uri)
|
126
|
+
scheme, _, path, _ = split_file_uri(uri)
|
127
|
+
|
128
|
+
unless scheme == 'file-digest'.freeze
|
129
|
+
raise URI::InvalidURIError, "expected file-digest scheme: #{uri}"
|
130
|
+
end
|
131
|
+
|
132
|
+
path
|
133
|
+
end
|
134
|
+
|
135
|
+
# Internal: Build file-digest dependency URI.
|
136
|
+
#
|
137
|
+
# Examples
|
138
|
+
#
|
139
|
+
# build("/tmp/js/application.js")
|
140
|
+
# # => "file-digest:/tmp/js/application.js"
|
141
|
+
#
|
142
|
+
# path - String file path
|
143
|
+
#
|
144
|
+
# Returns String URI.
|
145
|
+
def build_file_digest_uri(path)
|
146
|
+
join_file_uri('file-digest'.freeze, nil, path, nil)
|
147
|
+
end
|
148
|
+
|
149
|
+
# Internal: Serialize hash of params into query string.
|
150
|
+
#
|
151
|
+
# params - Hash of params to serialize
|
152
|
+
#
|
153
|
+
# Returns String query or nil if empty.
|
154
|
+
def encode_uri_query_params(params)
|
155
|
+
query = []
|
156
|
+
|
157
|
+
params.each do |key, value|
|
158
|
+
case value
|
159
|
+
when Integer
|
160
|
+
query << "#{key}=#{value}"
|
161
|
+
when String, Symbol
|
162
|
+
query << "#{key}=#{URI::Generic::DEFAULT_PARSER.escape(value.to_s)}"
|
163
|
+
when TrueClass
|
164
|
+
query << "#{key}"
|
165
|
+
when FalseClass, NilClass
|
166
|
+
else
|
167
|
+
raise TypeError, "unexpected type: #{value.class}"
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
"#{query.join('&')}" if query.any?
|
172
|
+
end
|
173
|
+
|
174
|
+
# Internal: Parse query string into hash of params
|
175
|
+
#
|
176
|
+
# query - String query string
|
177
|
+
#
|
178
|
+
# Return Hash of params.
|
179
|
+
def parse_uri_query_params(query)
|
180
|
+
query.to_s.split('&').reduce({}) do |h, p|
|
181
|
+
k, v = p.split('=', 2)
|
182
|
+
v = URI::Generic::DEFAULT_PARSER.unescape(v) if v
|
183
|
+
h[k.to_sym] = v || true
|
184
|
+
h
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Sprockets
|
2
|
+
module Utils
|
3
|
+
class Gzip
|
4
|
+
# Private: Generates a gzipped file based off of reference file.
|
5
|
+
def initialize(asset)
|
6
|
+
@content_type = asset.content_type
|
7
|
+
@source = asset.source
|
8
|
+
@charset = asset.charset
|
9
|
+
end
|
10
|
+
|
11
|
+
# What non-text mime types should we compress? This list comes from:
|
12
|
+
# https://www.fastly.com/blog/new-gzip-settings-and-deciding-what-compress
|
13
|
+
COMPRESSABLE_MIME_TYPES = {
|
14
|
+
"application/vnd.ms-fontobject" => true,
|
15
|
+
"application/x-font-opentype" => true,
|
16
|
+
"application/x-font-ttf" => true,
|
17
|
+
"image/x-icon" => true,
|
18
|
+
"image/svg+xml" => true
|
19
|
+
}
|
20
|
+
|
21
|
+
# Private: Returns whether or not an asset can be compressed.
|
22
|
+
#
|
23
|
+
# We want to compress any file that is text based.
|
24
|
+
# You do not want to compress binary
|
25
|
+
# files as they may already be compressed and running them
|
26
|
+
# through a compression algorithm would make them larger.
|
27
|
+
#
|
28
|
+
# Return Boolean.
|
29
|
+
def can_compress?(mime_types)
|
30
|
+
# The "charset" of a mime type is present if the value is
|
31
|
+
# encoded text. We can check this value to see if the asset
|
32
|
+
# can be compressed.
|
33
|
+
#
|
34
|
+
# We also check against our list of non-text compressible mime types
|
35
|
+
@charset || COMPRESSABLE_MIME_TYPES.include?(@content_type)
|
36
|
+
end
|
37
|
+
|
38
|
+
# Private: Opposite of `can_compress?`.
|
39
|
+
#
|
40
|
+
# Returns Boolean.
|
41
|
+
def cannot_compress?(mime_types)
|
42
|
+
!can_compress?(mime_types)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Private: Generates a gzipped file based off of reference asset.
|
46
|
+
#
|
47
|
+
# Compresses the target asset's contents and puts it into a file with
|
48
|
+
# the same name plus a `.gz` extension in the same folder as the original.
|
49
|
+
# Does not modify the target asset.
|
50
|
+
#
|
51
|
+
# Returns nothing.
|
52
|
+
def compress(target)
|
53
|
+
mtime = PathUtils.stat(target).mtime
|
54
|
+
PathUtils.atomic_write("#{target}.gz") do |f|
|
55
|
+
gz = Zlib::GzipWriter.new(f, Zlib::BEST_COMPRESSION)
|
56
|
+
gz.mtime = mtime
|
57
|
+
gz.write(@source)
|
58
|
+
gz.close
|
59
|
+
|
60
|
+
File.utime(mtime, mtime, f.path)
|
61
|
+
end
|
62
|
+
|
63
|
+
nil
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|