class Jekyll::WebmentionIO::CompileJS

Public Instance Methods

generate(site) click to toggle source
# File lib/jekyll/generators/compile_js.rb, line 25
def generate(site)
  handler = WebmentionIO.js_handler
  @site = site
  @file_name = handler.resource_name

  if handler.disabled?
    WebmentionIO.log "info", "Skipping JavaScript inclusion."
    return
  end

  if @site.config['serving']
    Jekyll::WebmentionIO.log "msg", "A WebmentionIO.js source file will not be generated during `jekyll serve`."
  end

  @source_file_destination = if handler.source? && !@site.config['serving'] 
                               @site.in_source_dir(handler.destination)
                             else
                               Dir.mktmpdir
                             end

  @javascript = +"" # unfrozen String

  concatenate_asset_files
  add_webmention_types

  uglify if handler.uglify?
  create_js_file
  deploy_js_file if handler.deploy?
end

Private Instance Methods

add_webmention_types() click to toggle source
# File lib/jekyll/generators/compile_js.rb, line 57
      def add_webmention_types
        js_types = []
        WebmentionIO.types.each do |type|
          js_types.push "'#{type}': '#{type.to_singular}'"
        end
        types_js = <<-EOF
          ;(function(window,JekyllWebmentionIO){
            if ( ! ( \'JekyllWebmentionIO\' in window ) ){ window.JekyllWebmentionIO = {}; }
            JekyllWebmentionIO.types = { TYPES };
          }(this, this.JekyllWebmentionIO));
        EOF
        @javascript << types_js.sub("TYPES", js_types.join(","))
      end
concatenate_asset_files() click to toggle source
# File lib/jekyll/generators/compile_js.rb, line 71
def concatenate_asset_files
  assets_dir = File.expand_path("../assets/", __dir__)
  Dir["#{assets_dir}/*.js"].each do |file|
    file_handler = File.open(file, "rb")
    @javascript << File.read(file_handler)
  end
end
create_js_file() click to toggle source
# File lib/jekyll/generators/compile_js.rb, line 83
def create_js_file
  Dir.mkdir(@source_file_destination) unless File.exist?(@source_file_destination)
  File.open(File.join(@source_file_destination, @file_name), "wb") { |f| f.write(@javascript) }
end
deploy_js_file() click to toggle source
# File lib/jekyll/generators/compile_js.rb, line 88
def deploy_js_file
  js_file = WebmentionIO::JavaScriptFile.new(@site, @source_file_destination, "", @file_name)
  @site.static_files << js_file
end
uglify() click to toggle source
# File lib/jekyll/generators/compile_js.rb, line 79
def uglify
  @javascript = Uglifier.new(:harmony => true).compile(@javascript)
end