/// <summary> /// Initialize a <see cref="ModelConverter"/> to work with ECMAScript with a specific <paramref name="version"/>. /// </summary> /// <param name="this">The <see cref="ConversionKernel"/> to use.</param> /// <param name="version">The ECMAScript <paramref name="version"/>.</param> /// <param name="wrap">If a specific <see cref="Wrap"/> should be used for the generated script model(s).</param> /// <returns></returns> public static ModelConverter CreateConverterForJavaScript(this ConversionKernel @this, JavaScriptVersion version, Wrap wrap = Wrap.None) { ILanguageSpecification language; switch (version) { case JavaScriptVersion.V6: language = new JavaScriptSpecification("JavaScript", new Version(6, 0)).UseTemplate(Resources.V6); break; case JavaScriptVersion.V5: language = new JavaScriptSpecification("JavaScript", new Version(5, 0)).UseTemplate(Resources.V5); break; default: throw Errors.LanguageNotFound(); } switch (wrap) { case Wrap.AMD: language = language.UseWrapTemplate(Resources.dependency_injection, WrapTemplateUsage.Global); break; case Wrap.SIAF: language = language.UseWrapTemplate(Resources.isolated_self_invokation, WrapTemplateUsage.Global); break; case Wrap.None: break; default: throw new ArgumentOutOfRangeException(nameof(wrap), wrap, null); } var converter = @this.CreateConverterForTemplate(language); return(converter); }
/// <summary> /// Initialize a <see cref="ModelConverter"/> to work with TypeScript. /// </summary> /// <param name="this">The <see cref="ConversionKernel"/> to use.</param> /// <param name="specification">What <see cref="TypeScriptSpecification"/> you want to use.</param> /// <returns></returns> public static ModelConverter CreateConverterForTypeScript(this ConversionKernel @this, Enum.TypeScriptSpecification specification) { ILanguageSpecification language; switch (specification) { case Enum.TypeScriptSpecification.TypeScript: language = new TypeScriptSpecification(new Version(1, 0, 0)) .UseTemplate(Resources.template.GetString()); break; case Enum.TypeScriptSpecification.Declaration: language = new DefinitelyTypedSpecification() .UseTemplate(Resources.reference.GetString()); break; default: throw new ArgumentOutOfRangeException(nameof(specification), specification, null); } var converter = @this.CreateConverterForTemplate(language); return(converter); }