Sha256: 36a4e6b8ae6f5cfe7e8b70cb8bafcebfdcfe16015ed17857b87f3dd863a40f3c
Contents?: true
Size: 1.68 KB
Versions: 1
Compression:
Stored size: 1.68 KB
Contents
require 'crystal_ext/gems' 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
crystal_ext-0.0.7 | lib/crystal_ext/defer_js.rb |