Class: Darkroom::JavaScriptDelegate

Inherits:
Delegate
  • Object
show all
Defined in:
lib/darkroom/delegates/javascript_delegate.rb

Overview

Delegate for handling JavaScript-specific asset processing.

Constant Summary collapse

IDENTIFIER_REGEX =
/[_$a-zA-Z][_$a-zA-Z0-9]*/.freeze
COMMA_REGEX =
/,/.freeze
QUOTED_REGEX =
/
  (?<quoted>
    (?<quote>['"])(?:
      (?<=[^\\])\\(?:\\\\)*\k<quote> |
      (?!\k<quote>).
    )*\k<quote>
  )
/x.freeze
IMPORT_REGEX =

Imports ##

/
  (?<=^|;|})[^\S\n]*
  import\s+(
    ((?<default>#{IDENTIFIER_REGEX.source})(?:\s*,\s*|(?=\s+from\s+)))?
    (
      \*\s+as\s+(?<module>#{IDENTIFIER_REGEX.source}) |
      \{(?<named>[\s\S]+?)\}
    )?
    \s+from\s+
  )?#{Asset::QUOTED_PATH_REGEX.source}
  [^\S\n]*;?[^\S\n]*(\n|\Z)
/x.freeze
IMPORT_ITEM_REGEX =
/
  \s*
  (?<name>#{IDENTIFIER_REGEX.source}|#{QUOTED_REGEX.source}(?=\s+as\s+))
  (\s+as\s+(?<alias>#{IDENTIFIER_REGEX.source}))?
  \s*
/x.freeze
EXPORT_REGEX =

Exports ##

/
  (?<=^|;|})[^\S\n]*
  export\s+(
    (?<default>default\s+)?
    (?<keep>(let|const|var|function\*?|class)\s+(?<name>#{IDENTIFIER_REGEX.source}))
  |
    \{(?<named>.+?)\}
    [^\S\n]*;?[^\S\n]*(\n|\Z)
  )
/x.freeze
EXPORT_ITEM_REGEX =
/
  \s*
  (?<name>#{IDENTIFIER_REGEX.source})
  (\s+as\s+(?<alias>#{IDENTIFIER_REGEX.source}|#{QUOTED_REGEX.source}))?
  \s*
/x.freeze

Constants inherited from Delegate

Delegate::IMPORT_REGEX_CAPTURES, Delegate::LIB_REQUIRES, Delegate::REFERENCE_REGEX_CAPTURES

Method Summary

Methods inherited from Delegate

compile, compile_delegate, compile_handler, compile_lib, content_type, each_parser, error, finalize, finalize_handler, finalize_lib, handler, import, minify, minify_handler, minify_lib, parse, parsers, reference, regex, validate_regex!