Sha256: 500aded9232331958a41ef4c48d10915796f606e0d257842ba0c73aa35e13858
Contents?: true
Size: 1.65 KB
Versions: 2
Compression:
Stored size: 1.65 KB
Contents
module Crystal JavascriptHelper.class_eval do def javascript_tag_with_defer value = nil, &block if @defer_js and !@deferred_js_called @deffered_js_initialized.must_be.true value = capture &block if block value = <<END deferred_static_scripts.push(function(){ #{value} }); END value = javascript_tag_without_defer value if block concat value else value end else javascript_tag_without_defer value, &block end end alias_method_chain :javascript_tag, :defer def initialize_deferred_js return "" unless @defer_js @deffered_js_initialized.must_be.false @deffered_js_initialized = true dont_defer_js do javascript_tag "var deferred_static_scripts = [];" end end def call_deferred_js return "" unless @defer_js @deffered_js_initialized.must_be.true @deferred_js_called.must_be.false @deferred_js_called = true content = <<END var i; for(i in deferred_static_scripts){deferred_static_scripts[i]()} deferred_static_scripts = []; END dont_defer_js do javascript_tag content end end def dont_defer_js &block before = @defer_js begin @defer_js = false block.call ensure @defer_js = before end end def defer_js! @defer_js.must_be.false workspace.params.format.must == 'html' @defer_js = true @deferred_js_called = false # @defer_static_scripts = workspace.params.format.js? ? false : true end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
crystal_ext-0.0.5 | lib/crystal_ext/defer_js.rb |
crystal_ext-0.0.4 | lib/crystal_ext/defer_js.rb |