class Isomorfeus::AssetManager::JsImport

Public Class Methods

new(package, js_constant = nil, imported_constants = nil, js_sub_constant = nil, import_assignment = nil) click to toggle source
# File lib/isomorfeus/asset_manager/js_import.rb, line 4
def initialize(package, js_constant = nil, imported_constants = nil, js_sub_constant = nil, import_assignment = nil)
  @package = package
  @js_constant = js_constant
  @js_sub_constant = js_sub_constant
  @imported_constants = imported_constants
  @import_assignment = import_assignment
end

Public Instance Methods

to_s() click to toggle source
# File lib/isomorfeus/asset_manager/js_import.rb, line 12
def to_s
  js = ''
  if @imported_constants
    if @js_sub_constant
      js << "import { #{@imported_constants} as #{@js_constant}_#{@js_sub_constant} } from \"#{@package}\";\n"
    else
      if @imported_constants.is_a?(String)
        if @imported_constants == '*'
          js << "import * as #{@js_constant} from \"#{@package}\";\n"
        else
          js << "import #{@imported_constants} from \"#{@package}\";\n"
        end
      else
        js << "import { #{@imported_constants.join(", ")} } from \"#{@package}\";\n"
      end
    end
    if @js_constant
      js << "if (!global.#{@js_constant}) { global.#{@js_constant} = {}; }\n" if @js_sub_constant
      if @js_constant
        if @js_sub_constant
          js << "global.#{@js_constant}.#{@js_sub_constant} = #{@js_constant}_#{@js_sub_constant};\n"
        else
          if @imported_constants.is_a?(String)
            if @imported_constants == '*'
              js << "global.#{@js_constant} = #{@js_constant};\n"
            else
              js << "global.#{@js_constant}.#{@import_assignment ? @import_assignment : @imported_constants} = #{@imported_constants};\n"
            end
          else
            @imported_constants.each do |imported_constant|
              js << "global.#{@js_constant}.#{@import_assignment ? @import_assignment : imported_constant} = #{imported_constant};\n"
            end
          end
        end
      end
    else
      @imported_constants.each do |imported_constant|
        js << "global.#{imported_constant} = #{imported_constant};\n"
      end
    end
  elsif @js_constant.nil?
    js << "import \"#{@package}\";\n"
  else
    js << "import #{@js_constant} from \"#{@package}\";\n"
    js << "global.#{@js_constant} = #{@js_constant};\n"
  end
  js
end