TypeScript @angular-compiler-src-output-ts_emitter.TypeScriptEmitter类(方法)实例源码

下面列出了TypeScript @angular-compiler-src-output-ts_emitter.TypeScriptEmitter 类(方法)源码代码实例,从而了解它的用法。

作者:diestri    项目:angula   
describe('TypeScriptEmitter', () => {
    let importResolver: ImportResolver;
    let emitter: TypeScriptEmitter;
    let someVar: o.ReadVarExpr;

    beforeEach(() => {
      importResolver = new SimpleJsImportGenerator();
      emitter = new TypeScriptEmitter(importResolver);
      someVar = o.variable('someVar');
    });

    function emitSourceMap(
        stmt: o.Statement | o.Statement[], exportedVars: string[] | null = null,
        preamble?: string): SourceMap {
      const stmts = Array.isArray(stmt) ? stmt : [stmt];
      const source = emitter.emitStatements(
          someSourceFilePath, someGenFilePath, stmts, exportedVars || [], preamble);
      return extractSourceMap(source) !;
    }

    describe('source maps', () => {
      it('should emit an inline source map', () => {
        const source = new ParseSourceFile(';;;var', 'in.js');
        const startLocation = new ParseLocation(source, 0, 0, 3);
        const endLocation = new ParseLocation(source, 7, 0, 6);
        const sourceSpan = new ParseSourceSpan(startLocation, endLocation);
        const someVar = o.variable('someVar', null, sourceSpan);
        const sm = emitSourceMap(someVar.toStmt(), [], '/* MyPreamble \n */');

        expect(sm.sources).toEqual([someSourceFilePath, 'in.js']);
        expect(sm.sourcesContent).toEqual([' ', ';;;var']);
        expect(originalPositionFor(sm, {line: 3, column: 0}))
            .toEqual({line: 1, column: 3, source: 'in.js'});
      });
    });
  });

作者:WimpyKnigh    项目:angula   
describe('TypeScriptEmitter', () => {
    var emitter: TypeScriptEmitter;
    var someVar: o.ReadVarExpr;

    beforeEach(() => {
      emitter = new TypeScriptEmitter(new SimpleJsImportGenerator());
      someVar = o.variable('someVar');
    });

    function emitStmt(stmt: o.Statement, exportedVars: string[] = null): string {
      if (isBlank(exportedVars)) {
        exportedVars = [];
      }
      return emitter.emitStatements(someModuleUrl, [stmt], exportedVars);
    }

    it('should declare variables', () => {
      expect(emitStmt(someVar.set(o.literal(1)).toDeclStmt())).toEqual(`var someVar:any = 1;`);
      expect(emitStmt(someVar.set(o.literal(1)).toDeclStmt(null, [o.StmtModifier.Final])))
          .toEqual(`const someVar:any = 1;`);
      expect(emitStmt(someVar.set(o.literal(1)).toDeclStmt(), ['someVar']))
          .toEqual(`export var someVar:any = 1;`);
      expect(emitStmt(someVar.set(o.literal(1)).toDeclStmt(o.INT_TYPE)))
          .toEqual(`var someVar:number = 1;`);
    });

    it('should read and write variables', () => {
      expect(emitStmt(someVar.toStmt())).toEqual(`someVar;`);
      expect(emitStmt(someVar.set(o.literal(1)).toStmt())).toEqual(`someVar = 1;`);
      expect(emitStmt(someVar.set(o.variable('someOtherVar').set(o.literal(1))).toStmt()))
          .toEqual(`someVar = (someOtherVar = 1);`);
    });

    it('should read and write keys', () => {
      expect(emitStmt(o.variable('someMap').key(o.variable('someKey')).toStmt()))
          .toEqual(`someMap[someKey];`);
      expect(emitStmt(o.variable('someMap').key(o.variable('someKey')).set(o.literal(1)).toStmt()))
          .toEqual(`someMap[someKey] = 1;`);
    });

    it('should read and write properties', () => {
      expect(emitStmt(o.variable('someObj').prop('someProp').toStmt()))
          .toEqual(`someObj.someProp;`);
      expect(emitStmt(o.variable('someObj').prop('someProp').set(o.literal(1)).toStmt()))
          .toEqual(`someObj.someProp = 1;`);
    });

    it('should invoke functions and methods and constructors', () => {
      expect(emitStmt(o.variable('someFn').callFn([o.literal(1)]).toStmt())).toEqual('someFn(1);');
      expect(emitStmt(o.variable('someObj').callMethod('someMethod', [o.literal(1)]).toStmt()))
          .toEqual('someObj.someMethod(1);');
      expect(emitStmt(o.variable('SomeClass').instantiate([o.literal(1)]).toStmt()))
          .toEqual('new SomeClass(1);');
    });

    it('should support builtin methods', () => {
      expect(emitStmt(o.variable('arr1')
                          .callMethod(o.BuiltinMethod.ConcatArray, [o.variable('arr2')])
                          .toStmt()))
          .toEqual('arr1.concat(arr2);');

      expect(emitStmt(o.variable('observable')
                          .callMethod(o.BuiltinMethod.SubscribeObservable, [o.variable('listener')])
                          .toStmt()))
          .toEqual('observable.subscribe(listener);');

      expect(
          emitStmt(
              o.variable('fn').callMethod(o.BuiltinMethod.bind, [o.variable('someObj')]).toStmt()))
          .toEqual('fn.bind(someObj);');
    });

    it('should support literals', () => {
      expect(emitStmt(o.literal(0).toStmt())).toEqual('0;');
      expect(emitStmt(o.literal(true).toStmt())).toEqual('true;');
      expect(emitStmt(o.literal('someStr').toStmt())).toEqual(`'someStr';`);
      expect(emitStmt(o.literalArr([o.literal(1)]).toStmt())).toEqual(`[1];`);
      expect(emitStmt(o.literalMap([['someKey', o.literal(1)]]).toStmt()))
          .toEqual(`{'someKey': 1};`);
    });

    it('should support external identifiers', () => {
      expect(emitStmt(o.importExpr(sameModuleIdentifier).toStmt())).toEqual('someLocalId;');
      expect(emitStmt(o.importExpr(externalModuleIdentifier).toStmt())).toEqual([
        `import * as import0 from 'somePackage/someOtherPath';`, `import0.someExternalId;`
      ].join('\n'));
    });

    it('should support operators', () => {
      var lhs = o.variable('lhs');
      var rhs = o.variable('rhs');
      expect(emitStmt(someVar.cast(o.INT_TYPE).toStmt())).toEqual('(<number>someVar);');
      expect(emitStmt(o.not(someVar).toStmt())).toEqual('!someVar;');
      expect(
          emitStmt(someVar.conditional(o.variable('trueCase'), o.variable('falseCase')).toStmt()))
          .toEqual('(someVar? trueCase: falseCase);');

      expect(emitStmt(lhs.equals(rhs).toStmt())).toEqual('(lhs == rhs);');
      expect(emitStmt(lhs.notEquals(rhs).toStmt())).toEqual('(lhs != rhs);');
      expect(emitStmt(lhs.identical(rhs).toStmt())).toEqual('(lhs === rhs);');
//.........这里部分代码省略.........

作者:DanielKuca    项目:angula   
describe('TypeScriptEmitter', () => {
    let emitter: TypeScriptEmitter;
    let someVar: o.ReadVarExpr;

    beforeEach(() => {
      emitter = new TypeScriptEmitter();
      someVar = o.variable('someVar', null, null);
    });

    function emitStmt(stmt: o.Statement | o.Statement[], preamble?: string): string {
      const stmts = Array.isArray(stmt) ? stmt : [stmt];
      const source = emitter.emitStatements(someSourceFilePath, someGenFilePath, stmts, preamble);
      return stripSourceMapAndNewLine(source);
    }

    it('should declare variables', () => {
      expect(emitStmt(someVar.set(o.literal(1)).toDeclStmt())).toEqual(`var someVar:any = 1;`);
      expect(emitStmt(someVar.set(o.literal(1)).toDeclStmt(null, [o.StmtModifier.Final])))
          .toEqual(`const someVar:any = 1;`);
      expect(emitStmt(someVar.set(o.literal(1)).toDeclStmt(null, [o.StmtModifier.Exported])))
          .toEqual(`export var someVar:any = 1;`);
      expect(emitStmt(someVar.set(o.literal(1)).toDeclStmt(o.INT_TYPE)))
          .toEqual(`var someVar:number = 1;`);
      expect(emitStmt(someVar.set(o.literal(1)).toDeclStmt(o.INFERRED_TYPE)))
          .toEqual(`var someVar = 1;`);
    });

    describe('declare variables with ExternExpressions as values', () => {
      it('should create no reexport if the identifier is in the same module', () => {
        // identifier is in the same module -> no reexport
        expect(emitStmt(someVar.set(o.importExpr(sameModuleIdentifier)).toDeclStmt(null, [
          o.StmtModifier.Exported
        ]))).toEqual('export var someVar:any = someLocalId;');
      });

      it('should create no reexport if the variable is not exported', () => {
        expect(emitStmt(someVar.set(o.importExpr(externalModuleIdentifier)).toDeclStmt())).toEqual([
          `import * as i0 from 'somePackage/someOtherPath';`, `var someVar:any = i0.someExternalId;`
        ].join('\n'));
      });

      it('should create no reexport if the variable is typed', () => {
        expect(emitStmt(someVar.set(o.importExpr(externalModuleIdentifier))
                            .toDeclStmt(o.DYNAMIC_TYPE, [o.StmtModifier.Exported])))
            .toEqual([
              `import * as i0 from 'somePackage/someOtherPath';`,
              `export var someVar:any = i0.someExternalId;`
            ].join('\n'));
      });

      it('should create a reexport', () => {
        expect(emitStmt(someVar.set(o.importExpr(externalModuleIdentifier))
                            .toDeclStmt(null, [o.StmtModifier.Exported])))
            .toEqual([
              `export {someExternalId as someVar} from 'somePackage/someOtherPath';`, ``
            ].join('\n'));
      });

      it('should create multiple reexports from the same file', () => {
        const someVar2 = o.variable('someVar2');
        const externalModuleIdentifier2 =
            new o.ExternalReference(anotherModuleUrl, 'someExternalId2', null);
        expect(emitStmt([
          someVar.set(o.importExpr(externalModuleIdentifier))
              .toDeclStmt(null, [o.StmtModifier.Exported]),
          someVar2.set(o.importExpr(externalModuleIdentifier2))
              .toDeclStmt(null, [o.StmtModifier.Exported])
        ]))
            .toEqual([
              `export {someExternalId as someVar,someExternalId2 as someVar2} from 'somePackage/someOtherPath';`,
              ``
            ].join('\n'));
      });
    });

    it('should read and write variables', () => {
      expect(emitStmt(someVar.toStmt())).toEqual(`someVar;`);
      expect(emitStmt(someVar.set(o.literal(1)).toStmt())).toEqual(`someVar = 1;`);
      expect(emitStmt(someVar.set(o.variable('someOtherVar').set(o.literal(1))).toStmt()))
          .toEqual(`someVar = (someOtherVar = 1);`);
    });

    it('should read and write keys', () => {
      expect(emitStmt(o.variable('someMap').key(o.variable('someKey')).toStmt()))
          .toEqual(`someMap[someKey];`);
      expect(emitStmt(o.variable('someMap').key(o.variable('someKey')).set(o.literal(1)).toStmt()))
          .toEqual(`someMap[someKey] = 1;`);
    });

    it('should read and write properties', () => {
      expect(emitStmt(o.variable('someObj').prop('someProp').toStmt()))
          .toEqual(`someObj.someProp;`);
      expect(emitStmt(o.variable('someObj').prop('someProp').set(o.literal(1)).toStmt()))
          .toEqual(`someObj.someProp = 1;`);
    });

    it('should invoke functions and methods and constructors', () => {
      expect(emitStmt(o.variable('someFn').callFn([o.literal(1)]).toStmt())).toEqual('someFn(1);');
      expect(emitStmt(o.variable('someObj').callMethod('someMethod', [o.literal(1)]).toStmt()))
          .toEqual('someObj.someMethod(1);');
//.........这里部分代码省略.........

作者:doxiaodon    项目:angula   
describe('TypeScriptEmitter', () => {
    let importResolver: ImportResolver;
    let emitter: TypeScriptEmitter;
    let someVar: o.ReadVarExpr;

    beforeEach(() => {
      importResolver = new SimpleJsImportGenerator();
      emitter = new TypeScriptEmitter(importResolver);
      someVar = o.variable('someVar');
    });

    function emitStmt(stmt: o.Statement | o.Statement[], exportedVars: string[] = null): string {
      if (!exportedVars) {
        exportedVars = [];
      }
      const stmts = Array.isArray(stmt) ? stmt : [stmt];
      return emitter.emitStatements(someModuleUrl, stmts, exportedVars);
    }

    it('should declare variables', () => {
      expect(emitStmt(someVar.set(o.literal(1)).toDeclStmt())).toEqual(`var someVar:any = 1;`);
      expect(emitStmt(someVar.set(o.literal(1)).toDeclStmt(null, [o.StmtModifier.Final])))
          .toEqual(`const someVar:any = 1;`);
      expect(emitStmt(someVar.set(o.literal(1)).toDeclStmt(), ['someVar']))
          .toEqual(`export var someVar:any = 1;`);
      expect(emitStmt(someVar.set(o.literal(1)).toDeclStmt(o.INT_TYPE)))
          .toEqual(`var someVar:number = 1;`);
    });

    describe('declare variables with ExternExpressions as values', () => {
      it('should create no reexport if the identifier is in the same module', () => {
        // identifier is in the same module -> no reexport
        expect(emitStmt(someVar.set(o.importExpr(sameModuleIdentifier)).toDeclStmt(), ['someVar']))
            .toEqual('export var someVar:any = someLocalId;');
      });

      it('should create no reexport if the variable is not exported', () => {
        expect(emitStmt(someVar.set(o.importExpr(externalModuleIdentifier)).toDeclStmt())).toEqual([
          `import * as import0 from 'somePackage/someOtherPath';`,
          `var someVar:any = import0.someExternalId;`
        ].join('\n'));
      });

      it('should create no reexport if the variable is typed', () => {
        expect(emitStmt(
                   someVar.set(o.importExpr(externalModuleIdentifier)).toDeclStmt(o.DYNAMIC_TYPE),
                   ['someVar']))
            .toEqual([
              `import * as import0 from 'somePackage/someOtherPath';`,
              `export var someVar:any = import0.someExternalId;`
            ].join('\n'));
      });

      it('should create no reexport if the identifier has members', () => {
        const externalModuleIdentifierWithMembers: CompileIdentifierMetadata = {
          reference: new StaticSymbol(anotherModuleUrl, 'someExternalId', ['a'])
        };
        expect(emitStmt(
                   someVar.set(o.importExpr(externalModuleIdentifierWithMembers)).toDeclStmt(),
                   ['someVar']))
            .toEqual([
              `import * as import0 from 'somePackage/someOtherPath';`,
              `export var someVar:any = import0.someExternalId.a;`
            ].join('\n'));
      });

      it('should create a reexport', () => {
        expect(
            emitStmt(someVar.set(o.importExpr(externalModuleIdentifier)).toDeclStmt(), ['someVar']))
            .toEqual([
              `export {someExternalId as someVar} from 'somePackage/someOtherPath';`, ``
            ].join('\n'));
      });

      it('should create multiple reexports from the same file', () => {
        const someVar2 = o.variable('someVar2');
        const externalModuleIdentifier2: CompileIdentifierMetadata = {
          reference: new StaticSymbol(anotherModuleUrl, 'someExternalId2', [])
        };
        expect(emitStmt(
                   [
                     someVar.set(o.importExpr(externalModuleIdentifier)).toDeclStmt(),
                     someVar2.set(o.importExpr(externalModuleIdentifier2)).toDeclStmt()
                   ],
                   ['someVar', 'someVar2']))
            .toEqual([
              `export {someExternalId as someVar,someExternalId2 as someVar2} from 'somePackage/someOtherPath';`,
              ``
            ].join('\n'));
      });

      it('should use `importAs` for reexports', () => {
        spyOn(importResolver, 'getImportAs')
            .and.returnValue(new StaticSymbol('somePackage/importAsModule', 'importAsName', []));
        expect(
            emitStmt(someVar.set(o.importExpr(externalModuleIdentifier)).toDeclStmt(), ['someVar']))
            .toEqual([
              `export {importAsName as someVar} from 'somePackage/importAsModule';`, ``
            ].join('\n'));
      });
//.........这里部分代码省略.........

作者:JohnnyQQQ    项目:angula   
function emitStmt(
     stmt: o.Statement | o.Statement[], exportedVars: string[] = null,
     preamble?: string): string {
   const stmts = Array.isArray(stmt) ? stmt : [stmt];
   const source = emitter.emitStatements(
       someSourceFilePath, someGenFilePath, stmts, exportedVars || [], preamble);
   return stripSourceMapAndNewLine(source);
 }

作者:WimpyKnigh    项目:angula   
function emitStmt(stmt: o.Statement, exportedVars: string[] = null): string {
   if (isBlank(exportedVars)) {
     exportedVars = [];
   }
   return emitter.emitStatements(someModuleUrl, [stmt], exportedVars);
 }

作者:manekinekk    项目:angula   
function emitSourceMap(
     stmt: o.Statement | o.Statement[], exportedVars: string[] = null): SourceMap {
   const stmts = Array.isArray(stmt) ? stmt : [stmt];
   const source = emitter.emitStatements(someModuleUrl, stmts, exportedVars || []);
   return extractSourceMap(source);
 }

作者:Cammisul    项目:angula   
function emitSourceMap(stmt: o.Statement | o.Statement[], preamble?: string): SourceMap {
   const stmts = Array.isArray(stmt) ? stmt : [stmt];
   const source = emitter.emitStatements(someGenFilePath, stmts, preamble);
   return extractSourceMap(source) !;
 }

作者:acramatt    项目:angula   
function emitStmt(stmt: o.Statement | o.Statement[], exportedVars: string[] = null): string {
   const stmts = Array.isArray(stmt) ? stmt : [stmt];
   const source = emitter.emitStatements(someModuleUrl, stmts, exportedVars || []);
   return stripSourceMapAndNewLine(source);
 }


问题


面经


文章

微信
公众号

扫码关注公众号