protected override IEnumerable <GeneratedFile> GetGeneratedFiles(CodeStringBuilder builder, string baseFilename)
 {
     yield return(new GeneratedFile()
     {
         Filename = baseFilename + ".cs", Content = builder.GetString()
     });
 }
Example #2
0
        public IEnumerable <GeneratedFile> GetGeneratedFiles(string baseFilename, StronglyTypedClass info, ResourceInfo.ResourceFileInfo resourceFileInfo)
        {
            var builder = new CodeStringBuilder(resourceFileInfo.Project.GetIndentString());

            GenerateHeaders(builder, info.IsAdvanced);
            AddNewLine(builder);
            OpenNamespace(builder, info.Namespaces);
            OpenStronglyTypedClass(builder, info.ResoureFile, info.ClassName);

            foreach (var item in info.Localizations)
            {
                AddNewLine(builder);

                OpenRegion(builder, item.Key);

                CreateFormatMethod(
                    builder,
                    item.Key,
                    item.IsProperty,
                    item.Parameters,
                    item.Summary,
                    item.ExtraParameters,
                    (item as PluralLocalization)?.ParameterToUseForPluralization,
                    (item as PluralLocalization)?.SupportNoneState ?? false,
                    (item as IVariantLocalization)?.ParameterToUseForVariant);

                CloseRegion(builder, item.Key);
            }

            CloseStronglyTypedClass(builder);
            AddNewLine(builder);
            CreateMarkupExtension(builder, info.ResoureFile, info.ClassName + "Extension", info.Localizations.Where(i => i is Localization).Select(s => s.Key));
            CloseNamespace(builder, info.Namespaces);
            return(GetGeneratedFiles(builder, baseFilename));
        }
        protected override void CppFileGenerateHeaders(CodeStringBuilder builderHeader, string precompiledHeader, string headerFilePath, string localNamespace, string className, IEnumerable <string> namespaces, bool supportPluralization)
        {
            //Header
            builderHeader.AppendLine("// File generated automatically by ReswPlus. https://github.com/rudyhuyn/ReswPlus");
            if (supportPluralization)
            {
                builderHeader.AppendLine("// The NuGet package ReswPlusLib is necessary to support Pluralization.");
            }
            if (!string.IsNullOrEmpty(precompiledHeader))
            {
                builderHeader.AppendLine($"#include <{precompiledHeader}>");
            }
            builderHeader.AppendLine($"#include \"{headerFilePath}\"");

            var baseNamespace = namespaces == null || namespaces.Count() <= 1 ? "" : namespaces.Skip(1).Aggregate((a, b) => a + "." + b) + ".";
            var gheader       = baseNamespace + className;

            builderHeader.AppendLine($"#include \"{gheader}.g.cpp\"");
            builderHeader.AppendLine($"#include \"{gheader}Extension.g.cpp\"");
            builderHeader.AppendLine("#include <stdio.h>");
            builderHeader.AppendLine("#include <winrt/Windows.Foundation.h>");
            builderHeader.AppendLine("#include <winrt/Windows.UI.Xaml.Interop.h>");
            builderHeader.AppendLine("using namespace winrt;");
            builderHeader.AppendLine("using namespace std;");
            if (namespaces != null && namespaces.Any())
            {
                builderHeader.AppendLine($"using namespace winrt::{namespaces.Aggregate((a, b) => a + "::" + b)};");
            }
            builderHeader.AppendLine("using namespace winrt::Windows::Foundation;");
            builderHeader.AppendLine("using namespace winrt::Windows::ApplicationModel::Resources;");
            builderHeader.AppendLine("using namespace winrt::Windows::UI::Xaml::Interop;");
            builderHeader.AppendLine($"namespace {LocalNamespaceName} = {localNamespace};");
        }
Example #4
0
        protected override void HeaderCreateFormatMethod(CodeStringBuilder builderHeader, string key, bool isProperty, IEnumerable <FunctionFormatTagParameter> parameters, string summary = null, IEnumerable <FunctionFormatTagParameter> extraParameters = null)
        {
            IEnumerable <FunctionFormatTagParameter> functionParameters;

            if (extraParameters != null)
            {
                var list = new List <FunctionFormatTagParameter>(parameters);
                list.InsertRange(0, extraParameters);
                functionParameters = list;
            }
            else
            {
                functionParameters = parameters;
            }

            if (isProperty)
            {
                HeaderCreateAccessor(builderHeader, key, summary);
            }
            else
            {
                builderHeader.AppendLine("public:");
                builderHeader.AddLevel();
                builderHeader.AppendLine("/// <summary>");
                builderHeader.AppendLine($"///   {summary}");
                builderHeader.AppendLine("/// </summary>");

                var parametersStr = functionParameters == null || !functionParameters.Any() ?
                                    "" :
                                    functionParameters.Select(p => GetParameterTypeString(p.Type, true) + " " + p.Name).Aggregate((a, b) => a + ", " + b); builderHeader.AppendLine($"static Platform::String^ {key}({parametersStr});");
                builderHeader.RemoveLevel();
            }
        }
Example #5
0
 protected override void HeaderCreateMarkupExtension(CodeStringBuilder builderHeader, string resourceFileName, string className, IEnumerable <string> keys, IEnumerable <string> namespaces)
 {
     builderHeader.AppendLine("public enum class KeyEnum");
     builderHeader.AppendLine("{");
     builderHeader.AddLevel();
     builderHeader.AppendLine("__Undefined = 0,");
     foreach (var key in keys)
     {
         builderHeader.AppendLine($"{key},");
     }
     builderHeader.RemoveLevel();
     builderHeader.AppendLine("};");
     builderHeader.AppendEmptyLine();
     builderHeader.AppendLine($"public ref class {className} sealed: public Windows::UI::Xaml::Markup::MarkupExtension");
     builderHeader.AppendLine("{");
     builderHeader.AppendLine("private:");
     builderHeader.AddLevel();
     builderHeader.AppendLine("Windows::ApplicationModel::Resources::ResourceLoader^ _resourceLoader;");
     builderHeader.RemoveLevel();
     builderHeader.AppendLine("public:");
     builderHeader.AddLevel();
     builderHeader.AppendLine($"{className}();");
     builderHeader.AppendLine("property KeyEnum Key;");
     builderHeader.AppendLine("property Windows::UI::Xaml::Data::IValueConverter^ Converter;");
     builderHeader.AppendLine("property Platform::Object^ ConverterParameter;");
     builderHeader.RemoveLevel();
     builderHeader.AppendLine("protected:");
     builderHeader.AddLevel();
     builderHeader.AppendLine("virtual Platform::Object^ ProvideValue() override;");
     builderHeader.RemoveLevel();
     builderHeader.RemoveLevel();
     builderHeader.AppendLine("};");
 }
        public override IEnumerable <GeneratedFile> GetGeneratedFiles(string baseFilename, StronglyTypedClass info, ResourceInfo.ResourceFileInfo resourceFileInfo)
        {
            // Generate .cpp and .h files
            var namespaces = new List <string>
            {
                "winrt"
            };

            if (info.Namespaces != null)
            {
                namespaces.AddRange(info.Namespaces);
            }
            namespaces.Add("implementation");

            var generatedFiles = GeneratedFiles(baseFilename, info, resourceFileInfo, namespaces);

            foreach (var file in generatedFiles)
            {
                yield return(file);
            }
            var builderIdl = new CodeStringBuilder(resourceFileInfo.ParentProject.GetIndentString());

            // Generate .idl file
            yield return(GenerateIdlFile(builderIdl, baseFilename, info));
        }
Example #7
0
 protected override void CppCreateMarkupExtension(CodeStringBuilder builderHeader, string computedNamespace, string resourceFileName, string className, IEnumerable <string> keys)
 {
     builderHeader.AppendLine($"{computedNamespace}{className}()");
     builderHeader.AppendLine("{");
     builderHeader.AddLevel();
     builderHeader.AppendLine($"_resourceLoader = ResourceLoader::GetForViewIndependentUse(L\"{resourceFileName}\");");
     builderHeader.RemoveLevel();
     builderHeader.AppendLine("}");
     builderHeader.AppendEmptyLine();
     builderHeader.AppendLine($"Object^ {computedNamespace}ProvideValue()");
     builderHeader.AppendLine("{");
     builderHeader.AddLevel();
     builderHeader.AppendLine("String^ res;");
     builderHeader.AppendLine("if(Key == KeyEnum::__Undefined)");
     builderHeader.AppendLine("{");
     builderHeader.AddLevel();
     builderHeader.AppendLine("res = L\"\";");
     builderHeader.RemoveLevel();
     builderHeader.AppendLine("}");
     builderHeader.AppendLine("else");
     builderHeader.AppendLine("{");
     builderHeader.AddLevel();
     builderHeader.AppendLine("res = _resourceLoader->GetString(Key.ToString());");
     builderHeader.RemoveLevel();
     builderHeader.AppendLine("}");
     builderHeader.AppendLine("return Converter == nullptr ? res : Converter->Convert(res, TypeName(String::typeid), ConverterParameter, nullptr);");
     builderHeader.RemoveLevel();
     builderHeader.AppendLine("}");
 }
        protected override void HeaderAddExtra(CodeStringBuilder builderHeader, StronglyTypedClass info)
        {
            var namespaces = new List <string>
            {
                "winrt"
            };

            if (info.Namespaces != null)
            {
                namespaces.AddRange(info.Namespaces);
            }
            namespaces.Add("factory_implementation");

            builderHeader.AppendEmptyLine();

            HeaderOpenNamespace(builderHeader, namespaces, true);
            builderHeader.AppendLine($"struct {info.ClassName} : {info.ClassName}T<{info.ClassName}, implementation::{info.ClassName}>");
            builderHeader.AppendLine("{");
            builderHeader.AppendLine("};");
            builderHeader.AppendEmptyLine();
            builderHeader.AppendLine($"struct {info.ClassName}Extension : {info.ClassName}ExtensionT<{info.ClassName}Extension, implementation::{info.ClassName}Extension>");
            builderHeader.AppendLine("{");
            builderHeader.AppendLine("};");
            HeaderCloseNamespace(builderHeader, namespaces, true);
        }
        private void IdlCreateFormatMethod(CodeStringBuilder builderHeader, string key, bool isProperty, IEnumerable <FunctionFormatTagParameter> parameters, string summary = null, IEnumerable <FunctionFormatTagParameter> extraParameters = null)
        {
            if (isProperty)
            {
                IdlCreateAccessor(builderHeader, key, summary);
                return;
            }

            IEnumerable <FunctionFormatTagParameter> functionParameters;

            if (extraParameters != null)
            {
                var list = new List <FunctionFormatTagParameter>(parameters);
                list.InsertRange(0, extraParameters);
                functionParameters = list;
            }
            else
            {
                functionParameters = parameters;
            }

            var parametersStr = functionParameters.Any() ?
                                functionParameters.Select(p => IdlGetParameterTypeString(p.Type) + " " + p.Name).Aggregate((a, b) => a + ", " + b) :
                                "";

            builderHeader.AppendLine($"static String {key}({parametersStr});");
        }
        protected override void HeaderCreateMarkupExtension(CodeStringBuilder builderHeader, string resourceFileName, string className, IEnumerable <string> keys, IEnumerable <string> namespaces)
        {
            var namespacesToUse = namespaces == null || !namespaces.Any() ? "" : namespaces.Aggregate((a, b) => a + "::" + b) + "::";

            builderHeader.AppendLine($"struct {className}: {className}T<{className}>");
            builderHeader.AppendLine("{");
            builderHeader.AppendLine("private:");
            builderHeader.AddLevel();
            builderHeader.AppendLine("Windows::ApplicationModel::Resources::ResourceLoader _resourceLoader;");
            builderHeader.AppendLine($"{namespacesToUse}KeyEnum _key;");
            builderHeader.AppendLine("Windows::UI::Xaml::Data::IValueConverter _converter;");
            builderHeader.AppendLine("Windows::Foundation::IInspectable _converterParameter;");
            builderHeader.RemoveLevel();
            builderHeader.AppendLine("public:");
            builderHeader.AddLevel();
            builderHeader.AppendLine($"{className}();");
            builderHeader.AppendLine($"{namespacesToUse}KeyEnum Key(){{ return _key; }}");
            builderHeader.AppendLine($"void Key({namespacesToUse}KeyEnum value){{ _key = value; }}");
            builderHeader.AppendLine("Windows::UI::Xaml::Data::IValueConverter Converter(){{ return _converter; }}");
            builderHeader.AppendLine("void Converter(Windows::UI::Xaml::Data::IValueConverter value){{ _converter = value; }}");
            builderHeader.AppendLine("Windows::Foundation::IInspectable ConverterParameter(){{ return _converterParameter; }}");
            builderHeader.AppendLine("void ConverterParameter(Windows::Foundation::IInspectable value){{ _converterParameter = value; }}");
            builderHeader.AppendLine("Windows::Foundation::IInspectable ProvideValue();");
            builderHeader.RemoveLevel();
            builderHeader.AppendLine("private:");
            builderHeader.AddLevel();
            builderHeader.AppendLine($"static hstring KeyEnumToString(KeyEnum key);");
            builderHeader.RemoveLevel();
            builderHeader.AppendLine("};");
        }
 protected override void OpenNamespace(CodeStringBuilder builder, IEnumerable <string> namespaces)
 {
     if (namespaces != null && namespaces.Any())
     {
         builder.AppendLine($"namespace {namespaces.Aggregate((a, b) => a + "." + b)}{{");
         builder.AddLevel();
     }
 }
 protected override void CloseNamespace(CodeStringBuilder builder, IEnumerable <string> namespaces)
 {
     if (namespaces != null && namespaces.Any())
     {
         builder.RemoveLevel();
         builder.AppendLine($"}} //{namespaces.Aggregate((a, b) => a + "." + b)}");
     }
 }
Example #13
0
 protected override void CppCreateAccessor(CodeStringBuilder builderHeader, string computedNamespace, string key)
 {
     builderHeader.AppendLine($"String^ {computedNamespace}{key}::get()");
     builderHeader.AppendLine("{");
     builderHeader.AddLevel();
     builderHeader.AppendLine($"return GetResourceLoader()->GetString(L\"{key}\");");
     builderHeader.RemoveLevel();
     builderHeader.AppendLine("}");
 }
Example #14
0
 protected override void HeaderFileGenerateHeaders(CodeStringBuilder builderHeader, string className, IEnumerable <string> namespacesOverride, bool supportPluralization)
 {
     //Header
     builderHeader.AppendLine("// File generated automatically by ReswPlus. https://github.com/DotNetPlus/ReswPlus");
     if (supportPluralization)
     {
         builderHeader.AppendLine("// The NuGet package ReswPlusLib is necessary to support Pluralization.");
     }
     builderHeader.AppendLine("#pragma once");
 }
 protected override void HeaderCreateAccessor(CodeStringBuilder builderHeader, string key, string summary)
 {
     builderHeader.AppendLine("public:");
     builderHeader.AddLevel();
     builderHeader.AppendLine("/// <summary>");
     builderHeader.AppendLine($"///   {summary}");
     builderHeader.AppendLine("/// </summary>");
     builderHeader.AppendLine($"static hstring {key}();");
     builderHeader.RemoveLevel();
 }
 protected override void GenerateHeaders(CodeStringBuilder builder, bool supportPluralization)
 {
     builder.AppendLine("// File generated automatically by ReswPlus. https://github.com/DotNetPlus/ReswPlus");
     if (supportPluralization)
     {
         builder.AppendLine("// The NuGet package ReswPlusLib is necessary to support Pluralization.");
     }
     builder.AppendLine("using System;");
     builder.AppendLine("using Windows.ApplicationModel.Resources;");
     builder.AppendLine("using Windows.UI.Xaml.Markup;");
     builder.AppendLine("using Windows.UI.Xaml.Data;");
 }
Example #17
0
 protected override void GenerateHeaders(CodeStringBuilder builder, bool supportPluralization)
 {
     builder.AppendLine("' File generated automatically by ReswPlus. https://github.com/rudyhuyn/ReswPlus");
     if (supportPluralization)
     {
         builder.AppendLine("' The NuGet package ReswPlusLib is necessary to support Pluralization.");
     }
     builder.AppendLine("Imports System");
     builder.AppendLine("Imports Windows.ApplicationModel.Resources");
     builder.AppendLine("Imports Windows.UI.Xaml.Markup");
     builder.AppendLine("Imports Windows.UI.Xaml.Data");
 }
 protected override void CreateMarkupExtension(CodeStringBuilder builder, string resourceFileName, string className, IEnumerable <string> keys)
 {
     builder.AppendLine($"[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{Constants.ReswPlusName}\", \"{Constants.ReswPlusExtensionVersion}\")]");
     builder.AppendLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
     builder.AppendLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
     builder.AppendLine("[MarkupExtensionReturnType(ReturnType = typeof(string))]");
     builder.AppendLine($"public class {className}: MarkupExtension");
     builder.AppendLine("{");
     builder.AddLevel();
     builder.AppendLine("public enum KeyEnum");
     builder.AppendLine("{");
     builder.AddLevel();
     builder.AppendLine("__Undefined = 0,");
     foreach (var key in keys)
     {
         builder.AppendLine($"{key},");
     }
     builder.RemoveLevel();
     builder.AppendLine("}");
     builder.AppendEmptyLine();
     builder.AppendLine("private static ResourceLoader _resourceLoader;");
     builder.AppendLine($"static {className}()");
     builder.AppendLine("{");
     builder.AddLevel();
     builder.AppendLine($"_resourceLoader = ResourceLoader.GetForViewIndependentUse(\"{resourceFileName}\");");
     builder.RemoveLevel();
     builder.AppendLine("}");
     builder.AppendLine("public KeyEnum Key { get; set;}");
     builder.AppendLine("public IValueConverter Converter { get; set;}");
     builder.AppendLine("public object ConverterParameter { get; set;}");
     builder.AppendLine("protected override object ProvideValue()");
     builder.AppendLine("{");
     builder.AddLevel();
     builder.AppendLine("string res;");
     builder.AppendLine("if(Key == KeyEnum.__Undefined)");
     builder.AppendLine("{");
     builder.AddLevel();
     builder.AppendLine("res = \"\";");
     builder.RemoveLevel();
     builder.AppendLine("}");
     builder.AppendLine("else");
     builder.AppendLine("{");
     builder.AddLevel();
     builder.AppendLine("res = _resourceLoader.GetString(Key.ToString());");
     builder.RemoveLevel();
     builder.AppendLine("}");
     builder.AppendLine("return Converter == null ? res : Converter.Convert(res, typeof(String), ConverterParameter, null);");
     builder.RemoveLevel();
     builder.AppendLine("}");
     builder.RemoveLevel();
     builder.AppendLine("}");
 }
Example #19
0
 protected override void HeaderOpenStronglyTypedClass(CodeStringBuilder builderHeader, string resourceFilename, string className)
 {
     builderHeader.AppendLine($"public ref class {className} sealed");
     builderHeader.AppendLine("{");
     builderHeader.AppendLine("private:");
     builderHeader.AddLevel();
     builderHeader.AppendLine("static Windows::ApplicationModel::Resources::ResourceLoader^ _resourceLoader;");
     builderHeader.AppendLine("static Windows::ApplicationModel::Resources::ResourceLoader^ GetResourceLoader();");
     builderHeader.RemoveLevel();
     builderHeader.AppendLine("public:");
     builderHeader.AddLevel();
     builderHeader.AppendLine($"{className}() {{}}");
     builderHeader.RemoveLevel();
 }
Example #20
0
 protected override void OpenStronglyTypedClass(CodeStringBuilder builder, string resourceFilename, string className)
 {
     builder.AppendLine($"<System.CodeDom.Compiler.GeneratedCodeAttribute(\"{Constants.ReswPlusName}\", \"{Constants.ReswPlusExtensionVersion}\")>");
     builder.AppendLine("<System.Diagnostics.DebuggerNonUserCodeAttribute()>");
     builder.AppendLine("<System.Runtime.CompilerServices.CompilerGeneratedAttribute()>");
     builder.AppendLine($"Public Class {className}");
     builder.AddLevel();
     builder.AppendLine("Private Shared _resourceLoader as ResourceLoader");
     builder.AppendEmptyLine();
     builder.AppendLine($"Shared Sub New()");
     builder.AddLevel();
     builder.AppendLine($"_resourceLoader = ResourceLoader.GetForViewIndependentUse(\"{resourceFilename}\")");
     builder.RemoveLevel();
     builder.AppendLine("End Sub");
 }
Example #21
0
 protected override void HeaderCreateAccessor(CodeStringBuilder builderHeader, string key, string summary)
 {
     builderHeader.AppendLine("public:");
     builderHeader.AddLevel();
     builderHeader.AppendLine("/// <summary>");
     builderHeader.AppendLine($"///   {summary}");
     builderHeader.AppendLine("/// </summary>");
     builderHeader.AppendLine($"static property Platform::String^ {key}");
     builderHeader.AppendLine("{");
     builderHeader.AddLevel();
     builderHeader.AppendLine("Platform::String^ get();");
     builderHeader.RemoveLevel();
     builderHeader.AppendLine("}");
     builderHeader.RemoveLevel();
 }
 protected override void OpenStronglyTypedClass(CodeStringBuilder builder, string resourceFilename, string className)
 {
     builder.AppendLine($"[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{Constants.ReswPlusName}\", \"{Constants.ReswPlusExtensionVersion}\")]");
     builder.AppendLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
     builder.AppendLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
     builder.AppendLine($"public static class {className} {{");
     builder.AddLevel();
     builder.AppendLine("private static ResourceLoader _resourceLoader;");
     builder.AppendLine($"static {className}()");
     builder.AppendLine("{");
     builder.AddLevel();
     builder.AppendLine($"_resourceLoader = ResourceLoader.GetForViewIndependentUse(\"{resourceFilename}\");");
     builder.RemoveLevel();
     builder.AppendLine("}");
 }
Example #23
0
 protected override void CppGenerateStronglyTypedClassStaticFunc(CodeStringBuilder builderHeader, string computedNamespace, string resourceFilename)
 {
     builderHeader.AppendLine($"ResourceLoader^ {computedNamespace}_resourceLoader = nullptr;");
     builderHeader.AppendLine($"ResourceLoader^ {computedNamespace}GetResourceLoader()");
     builderHeader.AppendLine("{");
     builderHeader.AddLevel();
     builderHeader.AppendLine("if (_resourceLoader == nullptr)");
     builderHeader.AppendLine("{");
     builderHeader.AddLevel();
     builderHeader.AppendLine($"_resourceLoader = ResourceLoader::GetForViewIndependentUse(L\"{resourceFilename}\");");
     builderHeader.RemoveLevel();
     builderHeader.AppendLine("}");
     builderHeader.AppendLine("return _resourceLoader;");
     builderHeader.RemoveLevel();
     builderHeader.AppendLine("}");
 }
Example #24
0
 protected override void CreateMarkupExtension(CodeStringBuilder builder, string resourceFileName, string className, IEnumerable <string> keys)
 {
     builder.AppendLine($"<System.CodeDom.Compiler.GeneratedCodeAttribute(\"{Constants.ReswPlusName}\", \"{Constants.ReswPlusExtensionVersion}\")>");
     builder.AppendLine("<System.Diagnostics.DebuggerNonUserCodeAttribute()>");
     builder.AppendLine("<System.Runtime.CompilerServices.CompilerGeneratedAttribute()>");
     builder.AppendLine("<MarkupExtensionReturnType(ReturnType:=GetType(String))>");
     builder.AppendLine($"Public Class {className}");
     builder.AddLevel();
     builder.AppendLine("Inherits MarkupExtension");
     builder.AppendLine("Public Enum KeyEnum");
     builder.AddLevel();
     builder.AppendLine("__Undefined = 0");
     foreach (var key in keys)
     {
         builder.AppendLine(key);
     }
     builder.RemoveLevel();
     builder.AppendLine("End Enum");
     builder.AppendEmptyLine();
     builder.AppendLine("Private Shared _resourceLoader as ResourceLoader");
     builder.AppendLine("Shared Sub New()");
     builder.AddLevel();
     builder.AppendLine($"_resourceLoader = ResourceLoader.GetForViewIndependentUse(\"{resourceFileName}\")");
     builder.RemoveLevel();
     builder.AppendLine("End Sub");
     builder.AppendEmptyLine();
     builder.AppendLine("Public Property Key As KeyEnum");
     builder.AppendLine("Public Property Converter As IValueConverter");
     builder.AppendLine("Public Property ConverterParameter As Object");
     builder.AppendLine("Protected Overrides Function ProvideValue() As Object");
     builder.AddLevel();
     builder.AppendLine("Dim res As String");
     builder.AppendLine("If Key = KeyEnum.__Undefined Then");
     builder.AddLevel();
     builder.AppendLine("res = \"\"");
     builder.RemoveLevel();
     builder.AppendLine("Else");
     builder.AddLevel();
     builder.AppendLine("res = _resourceLoader.GetString(Key.ToString())");
     builder.RemoveLevel();
     builder.AppendLine("End If");
     builder.AppendLine("Return If(Converter Is Nothing, res, Converter.Convert(res, GetType(String), ConverterParameter, Nothing))");
     builder.RemoveLevel();
     builder.AppendLine("End Function");
     builder.RemoveLevel();
     builder.AppendLine("End Class");
 }
Example #25
0
 public void HeaderCloseNamespace(CodeStringBuilder builderHeader, IEnumerable <string> namespaces, bool supportNestedMamespacesAtOnce)
 {
     if (namespaces != null && namespaces.Any())
     {
         if (supportNestedMamespacesAtOnce)
         {
             builderHeader.RemoveLevel();
             builderHeader.AppendLine($"}} // namespace {namespaces.Aggregate((a, b) => a + "::" + b)}");
         }
         else
         {
             foreach (var n in namespaces.Reverse())
             {
                 builderHeader.RemoveLevel();
                 builderHeader.AppendLine($"}} // namespace {n}");
             }
         }
     }
 }
Example #26
0
 protected override void CppFileGenerateHeaders(CodeStringBuilder builderHeader, string precompiledHeader, string headerFilePath, string localNamespace, string className, IEnumerable <string> namespaces, bool supportPluralization)
 {
     //Header
     builderHeader.AppendLine("// File generated automatically by ReswPlus. https://github.com/DotNetPlus/ReswPlus");
     if (supportPluralization)
     {
         builderHeader.AppendLine("// The NuGet package ReswPlusLib is necessary to support Pluralization.");
     }
     if (!string.IsNullOrEmpty(precompiledHeader))
     {
         builderHeader.AppendLine($"#include <{precompiledHeader}>");
     }
     builderHeader.AppendLine($"#include \"{headerFilePath}\"");
     builderHeader.AppendLine("#include <stdio.h>");
     builderHeader.AppendEmptyLine();
     builderHeader.AppendLine("using namespace Platform;");
     builderHeader.AppendLine("using namespace Windows::ApplicationModel::Resources;");
     builderHeader.AppendLine("using namespace Windows::UI::Xaml::Interop;");
     builderHeader.AppendLine($"namespace {LocalNamespaceName} = {localNamespace};");
 }
        private GeneratedFile GenerateIdlFile(CodeStringBuilder builderIdl, string baseFilename, StronglyTypedClass info)
        {
            HeaderOpenNamespace(builderIdl, info.Namespaces, false);
            IdlOpenStronglyTypedClass(builderIdl, info.ClassName);

            foreach (var item in info.Localizations)
            {
                IdlCreateFormatMethod(builderIdl, item.Key, item.IsProperty, item.Parameters.OfType <FunctionFormatTagParameter>(), item.Summary, item.ExtraParameters);
            }
            IdlCloseStronglyTypedClass(builderIdl);
            builderIdl.AppendEmptyLine();

            IdlCreateMarkupExtension(builderIdl, info.ClassName + "Extension", info.Localizations.Where(i => i is Localization).Select(s => s.Key));
            HeaderCloseNamespace(builderIdl, info.Namespaces, false);

            return(new GeneratedFile()
            {
                Filename = baseFilename + ".idl", Content = builderIdl.GetString()
            });
        }
        protected override void HeaderFileGenerateHeaders(CodeStringBuilder builderHeader, string className, IEnumerable <string> namespacesOverride, bool supportPluralization)
        {
            //Header
            builderHeader.AppendLine("// File generated automatically by ReswPlus. https://github.com/rudyhuyn/ReswPlus");
            if (supportPluralization)
            {
                builderHeader.AppendLine("// The NuGet package ReswPlusLib is necessary to support Pluralization.");
            }

            var baseGeneratedFileName = (namespacesOverride == null || namespacesOverride.Count() <= 1 ? "" : namespacesOverride.Skip(1).Aggregate((a, b) => a + "." + b) + ".");

            builderHeader.AppendLine("#pragma once");
            builderHeader.AppendLine($"#include \"{baseGeneratedFileName}{className}.g.h\"");
            builderHeader.AppendLine($"#include \"{baseGeneratedFileName}{className}Extension.g.h\"");
            builderHeader.AppendLine("#include <winrt/Windows.ApplicationModel.Resources.h>");
            builderHeader.AppendLine("#include <winrt/Windows.UI.Xaml.Markup.h>");
            if (supportPluralization)
            {
                builderHeader.AppendLine("#include <winrt/ReswPlusLib.h>");
            }
        }
Example #29
0
 public void HeaderOpenNamespace(CodeStringBuilder builderHeader, IEnumerable <string> namespaces, bool supportNestedMamespacesAtOnce)
 {
     if (namespaces != null && namespaces.Any())
     {
         if (supportNestedMamespacesAtOnce)
         {
             builderHeader.AppendLine($"namespace {namespaces.Aggregate((a, b) => a + "::" + b)}");
             builderHeader.AppendLine("{");
             builderHeader.AddLevel();
         }
         else
         {
             foreach (var subNamespace in namespaces)
             {
                 builderHeader.AppendLine($"namespace {subNamespace}");
                 builderHeader.AppendLine("{");
                 builderHeader.AddLevel();
             }
         }
     }
 }
 private void IdlCreateMarkupExtension(CodeStringBuilder builderHeader, string className, IEnumerable <string> keys)
 {
     builderHeader.AppendLine("enum KeyEnum");
     builderHeader.AppendLine("{");
     builderHeader.AddLevel();
     builderHeader.AppendLine("__Undefined = 0,");
     foreach (var key in keys)
     {
         builderHeader.AppendLine($"{key},");
     }
     builderHeader.RemoveLevel();
     builderHeader.AppendLine("};");
     builderHeader.AppendEmptyLine();
     builderHeader.AppendLine($"runtimeclass {className}: Windows.UI.Xaml.Markup.MarkupExtension");
     builderHeader.AppendLine("{");
     builderHeader.AddLevel();
     builderHeader.AppendLine($"{className}();");
     builderHeader.AppendLine("KeyEnum Key;");
     builderHeader.AppendLine("Windows.UI.Xaml.Data.IValueConverter Converter;");
     builderHeader.AppendLine("Object ConverterParameter;");
     builderHeader.AppendLine("overridable Object ProvideValue();");
     builderHeader.RemoveLevel();
     builderHeader.AppendLine("};");
 }