Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }