From 17b60b81afe9aefb80449aa553c708049b8690b7 Mon Sep 17 00:00:00 2001 From: Peter van der Woude Date: Sat, 6 Oct 2018 19:49:37 +1000 Subject: [PATCH] #71 fix most mono incompatibilities fix spellings in code and comments add stub to settings to prevent missing parameter error --- .gitignore | 2 ++ Reinforced.Typings.Cli/Bootstrapper.cs | 14 +++++++------- Reinforced.Typings.Cli/ConsoleHelpAttribute.cs | 6 +++--- .../ExporterConsoleParameters.cs | 14 +++++++------- .../BasicTypesResolvationTests.cs | 2 +- .../ClassicMultiFileResolvationTests.cs | 8 ++++++-- .../ConfigurationBuilderTestBase.cs | 5 +++-- .../SpecificTestCases.ConstantProperties.cs | 3 +++ .../SpecificTestCases.ReferencesPart1.cs | 9 +++++---- .../SpecificTestCases.ReferencesPart2.cs | 9 +++++---- .../SpecificTestCases.ReferencesPart3.cs | 9 +++++---- .../SpecificTestCases.ReferencesPart4.cs | 7 ++++--- .../SpecificTestCases.ReferencesPart5.cs | 7 ++++--- ...cificTestCases.ReferencesPart6ByDanielWest.cs | 7 ++++--- .../Tokenizing/SimpleTokenizer.cs | 7 ++++--- Reinforced.Typings/Ast/RtClass.cs | 4 +++- Reinforced.Typings/ExportContext.cs | 2 -- .../Generators/NamespaceCodeGenerator.cs | 2 +- .../Generators/PropertyCodeGenerator.cs | 4 ++-- .../ReferencesInspection/ReferenceInspector.cs | 16 +++++++--------- Reinforced.Typings/TsExporter.cs | 2 +- .../Reinforced.Typings.settings.xml | 5 +++-- .../Scripts/MyApplication/.gitignore | 1 + TestFluentAssembly/TwoInterfaces.cs | 8 +------- 24 files changed, 82 insertions(+), 71 deletions(-) create mode 100644 Samples/Simple/Reinforced.Typings.Samples.Simple.Quickstart/Scripts/MyApplication/.gitignore diff --git a/.gitignore b/.gitignore index b7dfc567..8cacc7e8 100644 --- a/.gitignore +++ b/.gitignore @@ -210,3 +210,5 @@ docplan.txt /Reinforced.Typings/Reinforced.snk /Reinforced.Typings.Cli/Reinforced.snk /Reinforced.Typings.Integrate/Reinforced.snk + +\.idea/ diff --git a/Reinforced.Typings.Cli/Bootstrapper.cs b/Reinforced.Typings.Cli/Bootstrapper.cs index 5a5f41fd..6b061df4 100644 --- a/Reinforced.Typings.Cli/Bootstrapper.cs +++ b/Reinforced.Typings.Cli/Bootstrapper.cs @@ -61,7 +61,7 @@ public static class Bootstrapper /// public static void Main(string[] args) { - Console.WriteLine("Reinforced.Typings CLI generator (c) 2015 by Pavel B. Novikov"); + Console.WriteLine("Reinforced.Typings CLI generator (c) 2015-2018 by Pavel B. Novikov"); if (args.Length == 0) { @@ -240,7 +240,7 @@ private static string LookupAssemblyPathInternal(string assemblyNameOrFullPath, { if (storeIfFullName) { - var lastAssemblyLocalDir = Path.GetDirectoryName(assemblyNameOrFullPath) + "\\"; + var lastAssemblyLocalDir = Path.GetDirectoryName(assemblyNameOrFullPath) + Path.DirectorySeparatorChar; if (!_allAssembliesDirs.Contains(lastAssemblyLocalDir)) _allAssembliesDirs.Add(lastAssemblyLocalDir); } #if DEBUG @@ -397,14 +397,14 @@ public static void PrintHelp() string requiredText = null; switch (req) { - case Required.NotReuired: - requiredText = "(not requred)"; + case Required.Not: + requiredText = "(not required)"; break; - case Required.Reuired: - requiredText = "(requred)"; + case Required.Is: + requiredText = "(required)"; break; case Required.Partially: - requiredText = "(sometimes requred)"; + requiredText = "(sometimes required)"; break; } Console.WriteLine(propertyInfo.Name + " " + requiredText); diff --git a/Reinforced.Typings.Cli/ConsoleHelpAttribute.cs b/Reinforced.Typings.Cli/ConsoleHelpAttribute.cs index 980f4a94..8e908b55 100644 --- a/Reinforced.Typings.Cli/ConsoleHelpAttribute.cs +++ b/Reinforced.Typings.Cli/ConsoleHelpAttribute.cs @@ -15,7 +15,7 @@ public class ConsoleHelpAttribute : Attribute public Required RequiredType { get; set; } - public ConsoleHelpAttribute(string helpText,Required requiredType = Required.NotReuired) + public ConsoleHelpAttribute(string helpText,Required requiredType = Required.Not) { HelpText = helpText; RequiredType = requiredType; @@ -24,8 +24,8 @@ public ConsoleHelpAttribute(string helpText,Required requiredType = Required.Not public enum Required { - Reuired, - NotReuired, + Is, + Not, Partially } } diff --git a/Reinforced.Typings.Cli/ExporterConsoleParameters.cs b/Reinforced.Typings.Cli/ExporterConsoleParameters.cs index 0adcca21..c6deea2b 100644 --- a/Reinforced.Typings.Cli/ExporterConsoleParameters.cs +++ b/Reinforced.Typings.Cli/ExporterConsoleParameters.cs @@ -16,9 +16,9 @@ public class ExporterConsoleParameters /// The assemblies to extract typings from /// [ConsoleHelp(@" -The semicolon-separated assemblies list to extract typings from. +The semicolon-separated assembly list to extract typings from. Example: rtcli.exe SourceAssemblies=""C:\TestProject\Assembly1.dll;C:\TestProject\Assembly2.dll"" -", Required.Reuired)] +", Required.Is)] public string[] SourceAssemblies { get; set; } /// @@ -27,18 +27,18 @@ public class ExporterConsoleParameters /// [ConsoleHelp(@" Target file where to store generated sources. -Not required if Hirarchy=""true"" specified. Otherwise required. +Not required if Hierarchy=""true"" is specified. Otherwise required. Example: rtcli.exe TargetFile=""C:\path\to\target\file.ts""", Required.Partially)] public string TargetFile { get; set; } /// /// Target directory where to store generated typing files. - /// This parameter is not used when Hierarcy is false + /// This parameter is not used when Hierarchy is false /// [ConsoleHelp(@" Target directory where to store generated typing files. -Not required if Hirarchy=""false"" or not specified. Otherwise required. -Example: rtcli.exe TargetDirectory=""C:\path\to\project\"" (regardless ending slash)", Required.Partially)] +Not required if Hierarchy=""false"" is not specified. Otherwise required. +Example: rtcli.exe TargetDirectory=""C:\path\to\project\"" (ending slash optional)", Required.Partially)] public string TargetDirectory { get; set; } /// @@ -100,7 +100,7 @@ public void Validate() throw new Exception("Target directory must be specified in case of hierarchy generation"); if (SourceAssemblies == null || SourceAssemblies.Length == 0) - throw new Exception("Source assemblies is not specified. Nothing to export"); + throw new Exception("No source assemblies specified. Nothing to export"); } public ExporterConsoleParameters() diff --git a/Reinforced.Typings.Tests/BasicTypesResolvationTests.cs b/Reinforced.Typings.Tests/BasicTypesResolvationTests.cs index 4d9bfed6..bd60f81c 100644 --- a/Reinforced.Typings.Tests/BasicTypesResolvationTests.cs +++ b/Reinforced.Typings.Tests/BasicTypesResolvationTests.cs @@ -26,7 +26,7 @@ public BasicTypesResolvationTests() _context = new ExportContext() { SourceAssemblies = new[] { Assembly.GetExecutingAssembly() }, - TargetDirectory = "D:\\" + TargetDirectory = "targetDir/" }; var exporter = new TsExporter(_context); exporter.Initialize(); diff --git a/Reinforced.Typings.Tests/ClassicMultiFileResolvationTests.cs b/Reinforced.Typings.Tests/ClassicMultiFileResolvationTests.cs index 11bcbca6..5795c2a3 100644 --- a/Reinforced.Typings.Tests/ClassicMultiFileResolvationTests.cs +++ b/Reinforced.Typings.Tests/ClassicMultiFileResolvationTests.cs @@ -1,5 +1,6 @@ -using System; +using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -23,7 +24,7 @@ protected ExportedFile Setup2Files(string filePath1, string filePath2, Action().ExportTo(filePath2); }); - return setup.Exporter.SetupExportedFile("D:\\" + filePath1); + return setup.Exporter.SetupExportedFile(Path.Combine(TargetDir, filePath1)); } [Fact] @@ -43,6 +44,7 @@ public void SimpleModuleResolvationTestSingleDir() { var file = Setup2Files("File1.ts", "File2.ts", x => x.Global(a => a.UseModules())); + //todo this fails in mono, the Prefix property of this below is "" - but Prefix of one below is null var typeName = file.TypeResolver.ResolveTypeName(typeof(TestFluentAssembly.TwoInterfaces.IInterface2)); Assert.Equal(new RtSimpleTypeName("IInterface2"), typeName, _comparer); @@ -81,11 +83,13 @@ public void SimpleReferenceResolvationTestDifferentDirs() Assert.Equal("Another/File2.ts", rf.Path); } + [Fact] public void SimpleModuleResolvationTestDifferentDirs() { var file = Setup2Files("File1.ts", "Another/File2.ts", x => x.Global(a => a.UseModules())); + //todo this fails in mono, the Prefix property of this below is "" - but Prefix of one below is null var typeName = file.TypeResolver.ResolveTypeName(typeof(TestFluentAssembly.TwoInterfaces.IInterface2)); Assert.Equal(new RtSimpleTypeName("IInterface2"), typeName, _comparer); diff --git a/Reinforced.Typings.Tests/ConfigurationBuilderTestBase.cs b/Reinforced.Typings.Tests/ConfigurationBuilderTestBase.cs index e3430b27..8864d137 100644 --- a/Reinforced.Typings.Tests/ConfigurationBuilderTestBase.cs +++ b/Reinforced.Typings.Tests/ConfigurationBuilderTestBase.cs @@ -11,6 +11,7 @@ namespace Reinforced.Typings.Tests { public abstract class ConfigurationBuilderTestBase { + protected const string TargetDir = "targetDir"; protected const string Sample = "target.ts"; protected TestInitializationData InitializeSingleFile(Action configuration) @@ -22,7 +23,7 @@ protected TestInitializationData InitializeSingleFile(Action().ExportTo("Indirect/File2.ts"); s.ExportAsClass().ExportTo("Fluently/File3.ts"); - }, new Dictionary() + }, new Dictionary { - {"D:\\Exported\\File1.ts", file1}, - {"D:\\Indirect\\File2.ts", file2}, - {"D:\\Fluently\\File3.ts", file3}, + { Path.Combine(TargetDir, "Exported", "File1.ts"), file1 }, + { Path.Combine(TargetDir, "Indirect", "File2.ts"), file2 }, + { Path.Combine(TargetDir, "Fluently", "File3.ts"), file3 } }, compareComments: true); } } diff --git a/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart2.cs b/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart2.cs index 58587bf6..c67bbce2 100644 --- a/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart2.cs +++ b/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart2.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.IO; using Reinforced.Typings.Fluent; using Xunit; @@ -57,11 +58,11 @@ public void ReferencesPart2() ; s.ExportAsClass().ExportTo("Indirect/File2.ts"); s.ExportAsClass().ExportTo("Fluently/File3.ts"); - }, new Dictionary() + }, new Dictionary { - {"D:\\Exported\\File1.ts", file1}, - {"D:\\Indirect\\File2.ts", file2}, - {"D:\\Fluently\\File3.ts", file3}, + { Path.Combine(TargetDir, "Exported", "File1.ts"), file1 }, + { Path.Combine(TargetDir, "Indirect", "File2.ts"), file2 }, + { Path.Combine(TargetDir, "Fluently", "File3.ts"), file3 } }, compareComments: true); } } diff --git a/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart3.cs b/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart3.cs index f9fc2073..efdd45e3 100644 --- a/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart3.cs +++ b/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart3.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.IO; using Reinforced.Typings.Fluent; using Xunit; @@ -70,11 +71,11 @@ public void ReferencesPart3() ; s.ExportAsClass().ExportTo("Indirect/File2.ts"); s.ExportAsClass().ExportTo("Fluently/File3.ts"); - }, new Dictionary() + }, new Dictionary { - {"D:\\Exported\\File1.ts", file1}, - {"D:\\Indirect\\File2.ts", file2}, - {"D:\\Fluently\\File3.ts", file3}, + { Path.Combine(TargetDir, "Exported", "File1.ts"), file1 }, + { Path.Combine(TargetDir, "Indirect", "File2.ts"), file2 }, + { Path.Combine(TargetDir, "Fluently", "File3.ts"), file3 } }, compareComments: true); } } diff --git a/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart4.cs b/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart4.cs index 514fe380..c2084461 100644 --- a/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart4.cs +++ b/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart4.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.IO; using Reinforced.Typings.Fluent; using Xunit; @@ -59,10 +60,10 @@ public void ReferencesPart4() ; s.ExportAsClass().ExportTo("Stuff/Stuff.ts"); s.ExportAsClass().ExportTo("Stuff/Stuff.ts"); - }, new Dictionary() + }, new Dictionary { - {"D:\\Exported\\File1.ts", file1}, - {"D:\\Stuff\\Stuff.ts", file2}, + { Path.Combine(TargetDir, "Exported", "File1.ts"), file1}, + { Path.Combine(TargetDir, "Stuff", "Stuff.ts"), file2} }, compareComments: true); } } diff --git a/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart5.cs b/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart5.cs index 56c4c2bc..a506c524 100644 --- a/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart5.cs +++ b/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart5.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.IO; using Reinforced.Typings.Fluent; using Xunit; @@ -69,10 +70,10 @@ public void ReferencesPart5() s.ExportAsClass().ExportTo("Stuff/Stuff.ts"); s.ExportAsClass().DontIncludeToNamespace().ExportTo("Stuff/Stuff.ts"); s.ExportAsEnum().DontIncludeToNamespace().ExportTo("Stuff/Stuff.ts"); - }, new Dictionary() + }, new Dictionary { - {"D:\\Exported\\File1.ts", file1}, - {"D:\\Stuff\\Stuff.ts", file2}, + { Path.Combine(TargetDir, "Exported", "File1.ts"), file1}, + { Path.Combine(TargetDir, "Stuff", "Stuff.ts"), file2} }, compareComments: true); } } diff --git a/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart6ByDanielWest.cs b/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart6ByDanielWest.cs index a55dfeab..1bc36a59 100644 --- a/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart6ByDanielWest.cs +++ b/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.ReferencesPart6ByDanielWest.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.IO; using Reinforced.Typings.Fluent; using Xunit; @@ -36,10 +37,10 @@ public void ReferencesPart6ByDanielWest() s.ExportAsEnum().ExportTo("Areas/APIv2/Models/TimeAndAttendance/Enum.ts"); s.ExportAsClass().WithPublicProperties().ExportTo("Areas/Reporting/Models/Model.ts"); - }, new Dictionary() + }, new Dictionary { - {"D:\\Areas\\APIv2\\Models\\TimeAndAttendance\\Enum.ts", file1}, - {"D:\\Areas\\Reporting\\Models\\Model.ts", file2}, + { Path.Combine(TargetDir, "Areas", "APIv2", "Models", "TimeAndAttendance", "Enum.ts"), file1 }, + { Path.Combine(TargetDir, "Areas", "Reporting", "Models", "Model.ts"), file2 } }, compareComments: true); } } diff --git a/Reinforced.Typings.Tests/Tokenizing/SimpleTokenizer.cs b/Reinforced.Typings.Tests/Tokenizing/SimpleTokenizer.cs index 29f61c2e..e0b57a38 100644 --- a/Reinforced.Typings.Tests/Tokenizing/SimpleTokenizer.cs +++ b/Reinforced.Typings.Tests/Tokenizing/SimpleTokenizer.cs @@ -7,9 +7,10 @@ namespace Reinforced.Typings.Tests.Tokenizing { sealed class SimpleTokenizer { + private const string CommentSyntax = "//"; + private const string TokenSeparators = ".,;:{[()]}=,+-/*%@!&|"; private readonly TextReader _reader; private readonly bool _tokenizeComments; - private const string TokenSeparators = ".,;:{[()]}=,+-/*%@!&|"; private bool _inComment; private readonly StringBuilder _buffer = new StringBuilder(); @@ -26,7 +27,7 @@ public IEnumerable Tokenize() { foreach (var token in TokenizeLine(line)) { - if (!_tokenizeComments&&token.StartsWith("//")) continue; + if (!_tokenizeComments && token.StartsWith(CommentSyntax)) continue; yield return token; } line = _reader.ReadLine(); @@ -44,7 +45,7 @@ private IEnumerable TokenizeLine(string s) bool readingToken = false; for (int i = 0; i < s.Length; i++) { - if (Ahead(s, "//", i)) + if (Ahead(s, CommentSyntax, i)) { if (_buffer.Length > 0) yield return _buffer.ToString(); _buffer.Clear(); diff --git a/Reinforced.Typings/Ast/RtClass.cs b/Reinforced.Typings/Ast/RtClass.cs index c52f81e2..badc46df 100644 --- a/Reinforced.Typings/Ast/RtClass.cs +++ b/Reinforced.Typings/Ast/RtClass.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using Reinforced.Typings.Ast.TypeNames; namespace Reinforced.Typings.Ast @@ -24,7 +25,7 @@ public class RtClass : RtCompilationUnit, ITypeMember, IDecoratable public RtTypeName Extendee { get; set; } /// - public List Members { get; private set; } + public List Members { get; private set; } //todo this needs to be sorted to be cross-platform, it's returning different order for Mono /// /// Constructs new instance of AST node @@ -53,6 +54,7 @@ public override IEnumerable Children { yield return implementee; } + yield return Extendee; foreach (var rtMember in Members) { diff --git a/Reinforced.Typings/ExportContext.cs b/Reinforced.Typings/ExportContext.cs index ca49dcc8..8f535433 100644 --- a/Reinforced.Typings/ExportContext.cs +++ b/Reinforced.Typings/ExportContext.cs @@ -1,10 +1,8 @@ using System; using System.Collections.Generic; using System.Reflection; -using Reinforced.Typings.Attributes; using Reinforced.Typings.Exceptions; using Reinforced.Typings.Fluent; -using Reinforced.Typings.Fluent.Interfaces; using Reinforced.Typings.Xmldoc; namespace Reinforced.Typings diff --git a/Reinforced.Typings/Generators/NamespaceCodeGenerator.cs b/Reinforced.Typings/Generators/NamespaceCodeGenerator.cs index b3e820fe..71bf49fc 100644 --- a/Reinforced.Typings/Generators/NamespaceCodeGenerator.cs +++ b/Reinforced.Typings/Generators/NamespaceCodeGenerator.cs @@ -33,7 +33,7 @@ public virtual RtNamespace Generate(IEnumerable types, string namespaceNam foreach (var type in types) { var converter = Context.Generators.GeneratorFor(type, Context); - if (converter==null) continue; + if (converter == null) continue; var member = converter.Generate(type, resolver); var m = member as RtCompilationUnit; if (m != null) diff --git a/Reinforced.Typings/Generators/PropertyCodeGenerator.cs b/Reinforced.Typings/Generators/PropertyCodeGenerator.cs index 73935607..b7e6032b 100644 --- a/Reinforced.Typings/Generators/PropertyCodeGenerator.cs +++ b/Reinforced.Typings/Generators/PropertyCodeGenerator.cs @@ -125,7 +125,7 @@ protected virtual void FillInitialization(MemberInfo element, RtField result, Ty { var val = GetStaticValue(element); if (val == null) result.InitializationExpression = "null"; - else result.InitializationExpression = ((bool)val) ? "true" : "false"; + else result.InitializationExpression = (bool)val ? "true" : "false"; } if (memberType == typeof(string)) @@ -162,7 +162,7 @@ protected virtual void FillInitialization(MemberInfo element, RtField result, Ty } } - if (attr != null && attr.InitializerEvaluator != null) + if (attr?.InitializerEvaluator != null) { var val = element.IsStatic() ? GetStaticValue(element) : null; result.InitializationExpression = attr.InitializerEvaluator(element, resolver, val); diff --git a/Reinforced.Typings/ReferencesInspection/ReferenceInspector.cs b/Reinforced.Typings/ReferencesInspection/ReferenceInspector.cs index 037000fb..ce8e7e1e 100644 --- a/Reinforced.Typings/ReferencesInspection/ReferenceInspector.cs +++ b/Reinforced.Typings/ReferencesInspection/ReferenceInspector.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -118,7 +118,7 @@ public string GetPathForType(Type t, bool stripExtension = true) if (fromConfiguration.EndsWith(".ts")) fromConfiguration = fromConfiguration.Substring(0, fromConfiguration.Length - 3); } - var r = Path.Combine(_context.TargetDirectory, fromConfiguration.Replace("/", "\\")).Replace("/", "\\"); + var r = Path.Combine(_context.TargetDirectory, fromConfiguration); return r; } @@ -138,7 +138,7 @@ public string GetPathForType(Type t, bool stripExtension = true) { ns = ns.Replace(_context.Global.RootNamespace, string.Empty); } - ns = ns.Trim('.').Replace('.', '\\'); + ns = ns.Trim('.').Replace('.', Path.DirectorySeparatorChar); var pth = Path.Combine( @@ -163,7 +163,6 @@ private string GetRelativePathForType(Type typeToReference, string currentFile) Path.GetDirectoryName(desiredFile)); relPath = Path.Combine(relPath, desiredFileName); - relPath = relPath.Replace('\\', '/'); if (_context.Global.UseModules) { if (!relPath.StartsWith(".")) relPath = "./" + relPath; @@ -177,14 +176,13 @@ private string GetRelativeNamespacePath(string currentNamespace, string desiredN if (currentNamespace == desiredNamespace) return string.Empty; if (string.IsNullOrEmpty(currentNamespace)) return desiredNamespace; - - var current = currentNamespace.Split(new[] { '\\' }, StringSplitOptions.RemoveEmptyEntries); - var desired = desiredNamespace.Split(new[] { '\\' }, StringSplitOptions.RemoveEmptyEntries); + var current = currentNamespace.Split(new[] { Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries); + var desired = desiredNamespace.Split(new[] { Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries); var result = new StringBuilder(); if (string.IsNullOrEmpty(desiredNamespace)) { - for (var i = 0; i < current.Length; i++) result.Append("..\\"); + for (var i = 0; i < current.Length; i++) result.Append("../"); } else { @@ -205,7 +203,7 @@ private string GetRelativeNamespacePath(string currentNamespace, string desiredN result.AppendFormat("{0}/", desired[level]); } } - return result.ToString().Trim('/'); + return result.ToString().Trim(Path.DirectorySeparatorChar); } diff --git a/Reinforced.Typings/TsExporter.cs b/Reinforced.Typings/TsExporter.cs index e4c9d1be..349eab7c 100644 --- a/Reinforced.Typings/TsExporter.cs +++ b/Reinforced.Typings/TsExporter.cs @@ -121,7 +121,7 @@ public void Initialize() /// Exported file dummy public ExportedFile SetupExportedFile(string fileName = null) { - if ((!_context.Hierarchical) && fileName == _context.TargetFile) fileName = null; + if (!_context.Hierarchical && fileName == _context.TargetFile) fileName = null; IEnumerable types = null; if (!string.IsNullOrEmpty(fileName)) { diff --git a/Samples/Simple/Reinforced.Typings.Samples.Simple.Quickstart/Reinforced.Typings.settings.xml b/Samples/Simple/Reinforced.Typings.Samples.Simple.Quickstart/Reinforced.Typings.settings.xml index a4d7e599..6a92067a 100644 --- a/Samples/Simple/Reinforced.Typings.Samples.Simple.Quickstart/Reinforced.Typings.settings.xml +++ b/Samples/Simple/Reinforced.Typings.Samples.Simple.Quickstart/Reinforced.Typings.settings.xml @@ -11,7 +11,8 @@ --> - + net45 + Stub - false + true