当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript line-by-line.on函数代码示例

本文整理汇总了TypeScript中line-by-line.on函数的典型用法代码示例。如果您正苦于以下问题:TypeScript on函数的具体用法?TypeScript on怎么用?TypeScript on使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了on函数的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1: resolve

    return new Promise<Map<number, vscode.Position>>((resolve, reject) => {
        var lineNumbersIndexedByPosition = new Map<number, vscode.Position>();

        //Find the largest (last position we have to check)
        var largestPosition = 0;
        positions.forEach(pos => largestPosition = pos > largestPosition ? pos : largestPosition);

        //If the file is open use the editor to get the line number
        var docs = vscode.workspace.textDocuments.filter(doc => doc.uri.fsPath.toUpperCase() === filePath.toUpperCase());
        if (docs.length > 0) {
            var doc = docs[0];
            positions.forEach(pos => {
                lineNumbersIndexedByPosition.set(pos, doc.positionAt(pos));
            });
            return resolve(lineNumbersIndexedByPosition);
        }

        //Open the file and get the line numbers untill the last position required
        var lr = new LineByLineReader(filePath);
        var lineNumber = 0;
        var lengthOfEachLine = new Map<number, number>();
        var totalCharactersRead = 0;
        lr.on('error', reject);

        lr.on('line', (line: string) => {
            //Two characters for the charriage return and line feeds
            lengthOfEachLine.set(lineNumber, line.length + 2);

            var totalCharactersUntillPreviousLine = totalCharactersRead;
            totalCharactersRead += line.length + 2;

            positions.forEach(pos => {
                if (totalCharactersRead === pos) {
                    lineNumbersIndexedByPosition.set(pos, new vscode.Position(lineNumber, line.length));
                    return;
                }
                if (totalCharactersRead > pos && pos > totalCharactersUntillPreviousLine) {
                    lineNumbersIndexedByPosition.set(pos, new vscode.Position(lineNumber, pos - totalCharactersUntillPreviousLine));
                }
            });

            //If we have read untill the position required, then bugger off from here
            if (totalCharactersRead >= largestPosition) {
                lr.close();
                lineNumber++;
            }
        });

        lr.on('end', function () {
            resolve(lineNumbersIndexedByPosition);
        });
    });
开发者ID:DonJayamanne,项目名称:javaVSCode,代码行数:52,代码来源:lineUtils.ts

示例2: LineByLineReader

import * as LineByLineReader from "line-by-line";

let reader: LineByLineReader  = new LineByLineReader("index.d.ts");
reader.on("line", (line: any) => {
    console.log(line);
});
reader.on("end", () => {
    console.log("end");
});
reader.on("error", (err: any) => {
    throw("Error reading file");
});
开发者ID:Kroisse,项目名称:DefinitelyTyped,代码行数:12,代码来源:line-by-line-tests.ts

示例3: start

  start(jsonFilename: string, collection: Collection, callback: any ) {
      let fn = jsonFilename.substr(jsonFilename.lastIndexOf('\\')+1);
      let source = fn.split('-')[0]; // shopname

      let defaults = require("./"+source+"-defaults.json");
      let defaultCat = defaults.category;
      let defaultShipCost:number = defaults.shipCost;

      console.log("processing:",fn,', shopname:', source,', defaults:', defaults);

      let report:RefreshReport = new RefreshReport((new Date()).getTime(),[],source,"portia");

      var LineByLineReader = require('line-by-line'),
        lr = new LineByLineReader(jsonFilename);

      lr.on('error', function (err:any) {
        // 'err' contains error object
        console.log("error:", err);
        callback(report);
      });

      lr.on('line', function (line:string) {
        // 'line' contains the current line without the trailing newline character.
        let item = JSON.parse(line);
          report.total++;
          if (item.price === undefined) {
            report.errors++;
            report.errList[item.name] = 'no price';
            process.stdout.write("x");
            return;
          }
          process.stdout.write(".");
          let cItem:MsCartItem = new MsCartItem(undefined,item.name[0],getFloat(item.price,undefined));
          cItem.crawler = report.crawler;
          cItem.shopname = source;
          cItem.category = item.category[0] || defaultCat;
          if (cItem.category && report.categories.indexOf(cItem.category) === -1) report.categories.push(cItem.category);
          cItem.currency = 'EUR';
          cItem.description = buildDesc(item);
          let oprice:number = getFloat(item.oldPrice,undefined);
          cItem.discount = (oprice)?+((oprice - cItem.price)/oprice).toFixed(2):undefined;
          cItem.imgUrl = item.imgUrl[0];
          cItem.link = (item.buyLink)? item.buyLink[0] : item.url;
          cItem.BOPIS = (item.bopisLink)? item.bopisLink[0] : null;
          cItem.outOfStock = false;
          cItem.qty = 1;
          cItem.sku = item.sku || getSku(cItem.link);
          cItem.secondhand = false;
          cItem.shippedPrice = getFloat(item.shippedPrice,' ');
          cItem.shipCost = (cItem.shippedPrice>0)?cItem.shippedPrice-cItem.price:defaultShipCost;
          cItem.refresh = report.mills;
          if((report.skus[cItem.sku]===undefined)){
            report.skus[cItem.sku] = 1;
            collection.findOneAndReplace({"sku":cItem.sku,"shopname":cItem.shopname},cItem, { upsert : true }, function(err:any,result:any){
              if (!err){
                report.updates += (result.lastErrorObject.updatedExisting)?1:0;
                report.inserts += (result.lastErrorObject.updatedExisting)?0:1;
              }else
                report.errors++;        
            });
          }else{
            report.duplicates++;
            report.skus[cItem.sku]++;
          }
          
      });

      lr.on('end', function () {
        // All lines are read, file is closed now.
        console.log('stream ended. removing old...');
        report.categories.push("null");
        collection.remove({"shopname":report.shopname, "category": { $in: report.categories }, "refresh":{"$lt":report.mills}},function(err:any,res:any){
          if (!err) report.deletes = res.result.n;
          else report.errors++;
        });
        callback(report); 
      });
  }
开发者ID:mixxr,项目名称:18_aws_rest,代码行数:78,代码来源:portia.ts

示例4: populateObjects

export function populateObjects(file: string) : Q.Promise<{objSet: {[site:string]: Array<types.ObjectRecord>}; maxTime: number}> {
    var objectSet : {[site:string]: Array<types.ObjectRecord>} = {}, maxTime = 0;
    var recordArr: Array<types.ObjectRecord> = [];
    var lr = new LineByLineReader(file);
    var deferred = Q.defer<{objSet: {[site:string]: Array<types.ObjectRecord>}; maxTime: number}>();
    lr.on('line', (line:string) => {
        var data = JSON.parse(line);
        //[objectId,type,allocSite,allocTime,allocCallStack,lastUseTime,lastUseSite,unreachableTime,unreachableSite]
        var objectId = parseInt(data[0]),
            type = data[1],
            allocSite = data[2],
            allocTime = parseInt(data[3]),
            allocCallStack = data[4],
            lastUseTime = parseInt(data[5]),
            lastUseSite = data[6],
            unreachableTime = parseInt(data[7]),
            unreachableSite = data[8];
        if (recordArr[objectId]) {
            // this is an update record.  if we have a new lastUseTime, update it.
            // definitely update the unreachability time
            var oldRecord = recordArr[objectId];
            if (lastUseTime !== 0) {
                oldRecord.lastUseTime = lastUseTime;
            }
            oldRecord.unreachableTime = unreachableTime;
            oldRecord.staleness = oldRecord.lastUseTime === 0 ? unreachableTime - oldRecord.creationTime
                : unreachableTime - oldRecord.lastUseTime;
        } else {
            // first record for this object
            var staleness = lastUseTime === 0 ? unreachableTime - allocTime : unreachableTime - lastUseTime;
            var or = new types.ObjectRecord(
                objectId, type, allocSite, allocTime, unreachableTime, 1, staleness, lastUseTime, [], allocCallStack);
            recordArr[objectId] = or;
            var objs = objectSet[allocSite];
            if (!objs) {
                objectSet[allocSite] = objs = [];
            }
            objs.push(or);
        }
        if (unreachableTime > maxTime) {
            maxTime = unreachableTime;
        }
    });
    lr.on('error', (err: any) => {
        deferred.reject(err);
    });
    lr.on('end', () => {
        deferred.resolve({
            objSet: objectSet,
            maxTime: maxTime
        });
    });
    return deferred.promise;
    //for (var e in jsonObject["objectInfo"]) {
    //    //console.log(e);
    //    var ks = jsonObject["objectInfo"][e];
    //    objectSet[e] = [];
    //    for (var k in ks) {
    //        var or : types.ObjectRecord = new types.ObjectRecord(
    //            e.toString(),
    //            ks[k].type,
    //            ks[k].creationTime,
    //            ks[k].unreachableTime,
    //            ks[k].shallowSize,
    //            /* ks[k].freeableSize, */
    //            ks[k].staleness,
    //            ks[k].unreachableTime - ks[k].staleness,
    //            /* ks[k].leastChildStaleness, */
    //            [],
    //            ks[k].creationCallStack
    //        )
    //        objectSet[e].push(or);
    //    }
    //}
    //
    //return objectSet;
};
开发者ID:KrupaR,项目名称:meminsight,代码行数:77,代码来源:timeLine.ts

示例5: LineByLineReader

    return new Promise<ITryStatement[]>(resolve=> {
        var lr = new LineByLineReader(pythonFile);
        var lineNumber = 0;
        var tryStatements: ITryStatementEx[] = [];
        var tryColumnBlocks = new Map<number, ITryStatementEx>();

        lr.on('error', function(err) {
            resolve(tryStatements);
        });

        lr.on('line', function(line) {
            lineNumber++;
            
            //Valid parts of a try block include
            //try:, except <error>:, except: else: finally:
            //Anything other than this in the same column indicates a termination of the try block

            var trimmedLine = line.trim();
            var matches = line.match(/^\s*try(\s*):/);
            if (matches !== null && matches.length > 0) {
                let column = line.indexOf("try");
                if (column === -1) {
                    return;
                }
                
                //If the new try starts at the same column
                //Then the previous try block has ended
                if (tryColumnBlocks.has(column)) {
                    var tryBlockClosed = tryColumnBlocks.get(column);
                    tryColumnBlocks.delete(column);
                    tryStatements.push(tryBlockClosed);
                }

                var tryStatement: ITryStatementEx = {
                    Column: column,
                    EndLineNumber: 0,
                    Exceptions: [],
                    StartLineNumber: lineNumber
                };
                tryColumnBlocks.set(column, tryStatement);
                return;
            }
    
            //look for excepts
            matches = line.match(/^\s*except/);
            if (matches !== null && matches.length > 0 &&
                (trimmedLine.startsWith("except ") || trimmedLine.startsWith("except:"))) {
    
                //Oops something has gone wrong
                if (tryColumnBlocks.size === 0) {
                    resolve(tryStatements);
                    lr.close();
                    return;
                }
                let column = line.indexOf("except");
                
                //Do we have a try block for this same column                
                if (!tryColumnBlocks.has(column)) {
                    return;
                }

                let currentTryBlock = tryColumnBlocks.get(column);
                let exceptions = extractExceptions(line);
                currentTryBlock.Exceptions = currentTryBlock.Exceptions.concat(exceptions);
                if (currentTryBlock.EndLineNumber === 0) {
                    currentTryBlock.EndLineNumber = lineNumber;
                }
                return;
            }
    
            //look for else
            matches = line.match(/^\s*else(\s*):/);
            if (matches !== null && matches.length > 0 &&
                (trimmedLine.startsWith("else ") || trimmedLine.startsWith("else:"))) {
    
                //This is possibly an if else... 
                if (tryColumnBlocks.size === 0) {
                    return;
                }

                let column = line.indexOf("else");
                //Check if we have a try associated with this column
                //If not found, this is probably an if else block or something else
                if (!tryColumnBlocks.has(column)) {
                    return;
                }
                
                //Else marks the end of the try block (of course there could be a finally too)
                let currentTryBlock = tryColumnBlocks.get(column);
                if (currentTryBlock.EndLineNumber === 0) {
                    currentTryBlock.EndLineNumber = lineNumber;
                }
                tryColumnBlocks.delete(column);
                tryStatements.push(currentTryBlock);
                return;
            }    
    
            //look for finally
            matches = line.match(/^\s*finally(\s*):/);
            if (matches !== null && matches.length > 0 &&
//.........这里部分代码省略.........
开发者ID:Erguotou,项目名称:pythonVSCode,代码行数:101,代码来源:TryParser.ts


注:本文中的line-by-line.on函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。