Exemplo n.º 1
0
  function declare(request) {
    assert(request.hasOwnProperty("lhs"));

    fluke.splitAll(
      request.lhs,
      (type, req) => {
        if (isType(req.lhs)) {
          callback("declare type", req.lhs);
        } else if (isFunctionDeclaration(req.lhs)) {
          callback("declare function", req.lhs);
        } else if (req.lhs.length || req.stash.length) {
          const block = req.lhs + req.stash,
            type = isSpace(block) ? "format" : "code blob";
          callback(type, block);
        }
      },
      {
        statement: ";"
      }
    );
  }
Exemplo n.º 2
0
function split(code, callback) {
  let rules = {},
    emitter = new events.EventEmitter();

  mergeRules(Literalizer(emitter, callback));
  mergeRules(Commenter(emitter, callback));
  mergeRules(Preprocessor(emitter, callback));
  mergeRules(Definer(emitter, callback));
  mergeRules(Declarer(emitter, callback));
  mergeRules(Template(emitter, callback));

  forwardContent("define type");
  forwardContent("define function");
  forwardContent("define namespace");

  mergeRules(Formatter(emitter, callback));

  fluke.splitAll(
    code,
    (type, request) => {
      emitter.emit(type, request);
    },
    rules
  );

  function mergeRules(r) {
    rules = Object.assign(rules, r);
  }

  function forwardContent(event) {
    emitter.on(event, obj => {
      emitter.once("close", content => {
        obj.code = content;
        callback(event, obj);
      });
    });
  }
}
Exemplo n.º 3
0
function splitCheck(code, emitter, rules) {
  var scoper;

  if (typeof rules === "undefined") {
    rules = { open: "{", close: "}" };
  }

  scoper = new Scoper(rules);
  fluke.splitAll(
    code,
    function(type, request) {
      emitter.emit(type, request);
      if (type == "open" || type == "close") {
        scoper.process(request, function(type, content) {
          emitter.emit(type, content);
        });
      }
    },
    rules
  );

  tearDown(emitter);
}
Exemplo n.º 4
0
 this.split = function( code ) {
   fluke.splitAll( code, function( type, request ) {
       emitter.emit(type, request);
   }
   , rules );
 };