private static LGResource ConstantResolver(LGResource lgResource, string resourceId)
        {
            var id      = lgResource.Id + resourceId;
            var content = $"# myTemplate\r\n - content with id: {resourceId} from source: {lgResource.Id}";

            return(new LGResource(id, id, content));
        }
        public TemplateEngineLanguageGenerator(string lgText, string id, Dictionary <string, IList <Resource> > resourceMapping)
        {
            this.Id        = id ?? DEFAULTLABEL;
            var(_, locale) = LGResourceLoader.ParseLGFileName(id);
            var importResolver = LanguageGeneratorManager.ResourceExplorerResolver(locale, resourceMapping);
            var lgResource     = new LGResource(Id, Id, lgText ?? string.Empty);

            this.lg = LanguageGeneration.Templates.ParseResource(lgResource, importResolver);
        }
        public TemplateEngineLanguageGenerator(string filePath, Dictionary <string, IList <Resource> > resourceMapping)
        {
            filePath = PathUtils.NormalizePath(filePath);
            this.Id  = Path.GetFileName(filePath);

            var(_, locale) = LGResourceLoader.ParseLGFileName(Id);
            var importResolver = LanguageGeneratorManager.ResourceExplorerResolver(locale, resourceMapping);
            var resource       = new LGResource(Id, filePath, File.ReadAllText(filePath));

            this.lg = LanguageGeneration.Templates.ParseResource(resource, importResolver);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="TemplateEngineLanguageGenerator"/> class.
        /// </summary>
        /// <param name="resource">Resource.</param>
        /// <param name="resourceMapping">template resource loader delegate (locale) -> <see cref="ImportResolverDelegate"/>.</param>
        public TemplateEngineLanguageGenerator(Resource resource, Dictionary <string, IList <Resource> > resourceMapping)
        {
            this.Id = resource.Id;

            var(_, locale) = LGResourceLoader.ParseLGFileName(Id);
            var importResolver = LanguageGeneratorManager.ResourceExplorerResolver(locale, resourceMapping);
            var content        = resource.ReadTextAsync().GetAwaiter().GetResult();
            var lgResource     = new LGResource(Id, resource.FullName, content);

            this.lg = LanguageGeneration.Templates.ParseResource(lgResource, importResolver);
        }
        /// <summary>
        /// Loads language generation templates asynchronously.
        /// </summary>
        /// <param name="resource">Resource.</param>
        /// <param name="resourceMapping">template resource loader delegate (locale) -> <see cref="ImportResolverDelegate"/>.</param>
        /// <returns>The loaded language generation templates.</returns>
        private async Task <LanguageGeneration.Templates> CreateTemplatesAsync(Resource resource, Dictionary <string, IList <Resource> > resourceMapping)
        {
            var(_, locale) = LGResourceLoader.ParseLGFileName(Id);
            var importResolver = LanguageGeneratorManager.ResourceExplorerResolver(locale, resourceMapping);
            var content        = await resource.ReadTextAsync().ConfigureAwait(false);

            var lgResource = new LGResource(Id, resource.FullName, content);
            var lg         = LanguageGeneration.Templates.ParseResource(lgResource, importResolver);

            RegisterSourcemap(lg, resource);
            return(lg);
        }