コード例 #1
0
        public void Can_emit_declaration_files(string[] sourceFiles, string label)
        {
            var    config  = new TypescriptGeneratorSettings();
            string results = UTF8(DeclarationFileGenerator.Emit(config, sourceFiles));

            Diff.Approve(results, ".ts", label);
        }
コード例 #2
0
        public bool Execute()
        {
            Enum.TryParse(OutputType, out FileType kind);

            var options = new TypescriptGeneratorSettings(Namespace, Prefix, Suffix, AsAbstract, (kind == FileType.KnockoutJs), References);

            if (_sourceFiles == null)
            {
                _sourceFiles = SourceFiles.Select(x => x.GetMetadata("FullPath")).ToArray();
            }

            BuildEngine.Debug("Generating typescript models ...");
            foreach (string filePath in _sourceFiles)
            {
                BuildEngine.Debug($"src: '{filePath}'");
            }

            byte[] data;
            switch (kind)
            {
            default:
            case FileType.Model:
                data = TypescriptGenerator.Emit(options, _sourceFiles);
                break;

            case FileType.KnockoutJs:
                data = KnockoutJsGenerator.Emit(options, _sourceFiles);
                break;

            case FileType.Declaration:
                data = DeclarationFileGenerator.Emit(options, _sourceFiles);
                break;
            }

            if (string.IsNullOrEmpty(_outputFile))
            {
                _outputFile = DestinationFile.GetMetadata("FullPath");
            }
            string folder = Path.GetDirectoryName(_outputFile);

            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }

            File.WriteAllBytes(_outputFile, data);
            BuildEngine.Info($"Generated typescript file at '{_outputFile}'.", nameof(GenerateTypescriptModels));
            return(true);
        }
コード例 #3
0
        public void Can_emit_enum_definition_as_as_dts()
        {
            // Arrange
            var declaration = new TypeDefinition("Foo", (Trait.Public | Trait.Enum))
                              .Add(new MemberDefinition("A", new TypeDefinition("int", (Trait.Enum | Trait.Public))))
                              .Add(new MemberDefinition("B", new TypeDefinition("int", (Trait.Enum | Trait.Public))));

            // Act + Assert
            string ts = UTF8(DeclarationFileGenerator.Emit(declaration));

            ts.ShouldMatch(@"declare enum Foo\s+{\s+A,\s+B\s+}");

            var config = new TypescriptGeneratorSettings(ns: "Foo");

            ts = UTF8(DeclarationFileGenerator.Emit(config, declaration));
            ts.ShouldMatch(@"declare namespace Foo\s+{\s+enum Foo\s+{\s+A,\s+B\s+}\s+}");
        }