plugin method

Options plugin ()

A @plugin directive, used to import plugins dynamically.

@plugin (args) "lib";

Differs from standard implementation. Here is Options and not import.

Implementation

Options plugin() {
  final int index = parserInput.i;
  Quoted value;

  final String dir = parserInput.$re(_pluginRegExp1);
  if (dir != null) {
    final String args = pluginArgs();
    if ((value = entities.quoted()) != null) {
      if (parserInput.$char(';') == null) {
        parserInput
          ..i = index
          ..error('missing semi-colon on @plugin');
      }
      if (value.value.contains('clean-css')) {
        context.cleanCss = true; //parser needs this
      }
      return Options(value, index, fileInfo,
          isPlugin: true, pluginArgs: args);
    } else {
      parserInput
        ..i = index
        ..error('malformed @plugin statement');
    }
  }
  return null;

//2.8.0 20160713
// plugin: function () {
//     var path, args, options,
//         index = parserInput.i,
//         dir   = parserInput.$re(/^@plugin?\s+/);
//
//     if (dir) {
//         args = this.pluginArgs();
//
//         if (args) {
//             options = {
//                 pluginArgs: args,
//                 isPlugin: true
//             };
//         }
//         else {
//             options = { isPlugin: true };
//         }
//
//         if ((path = this.entities.quoted() || this.entities.url())) {
//
//             if (!parserInput.$char(';')) {
//                 parserInput.i = index;
//                 error("missing semi-colon on @plugin");
//             }
//             return new(tree.Import)(path, null, options, index, fileInfo);
//         }
//         else {
//             parserInput.i = index;
//             error("malformed @plugin statement");
//         }
//     }
// },
}