Beispiel #1
0
        public DirectorySnippetExtractor(
            DirectoryFilter directoryFilter,
            FileFilter fileFilter,
            GetPackageOrderForComponent packageOrder = null,
            TranslatePackage translatePackage        = null)
        {
            Guard.AgainstNull(directoryFilter, nameof(directoryFilter));
            Guard.AgainstNull(fileFilter, nameof(fileFilter));
            fileFinder = new FileFinder(directoryFilter, fileFilter);
            if (packageOrder == null)
            {
                this.packageOrder = x => Enumerable.Empty <string>();
            }
            else
            {
                this.packageOrder = packageOrder;
            }

            if (translatePackage == null)
            {
                this.translatePackage = alias => alias;
            }
            else
            {
                this.translatePackage = translatePackage;
            }
        }
Beispiel #2
0
 public DirectorySnippetExtractor(DirectoryFilter directoryFilter, FileFilter fileFilter,
                                  GetPackageOrderForComponent packageOrder, TranslatePackage translatePackage = null)
 {
     Guard.AgainstNull(directoryFilter, nameof(directoryFilter));
     Guard.AgainstNull(fileFilter, nameof(fileFilter));
     this.directoryFilter = directoryFilter;
     this.fileFilter      = fileFilter;
     this.packageOrder    = packageOrder;
     if (translatePackage == null)
     {
         this.translatePackage = alias => alias;
     }
     else
     {
         this.translatePackage = translatePackage;
     }
 }
Beispiel #3
0
        /// <summary>
        /// Add translation resource
        /// </summary>
        /// <param name="packageKey"></param>
        /// <param name="resource"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        /// <exception cref="InvalidOperationException"></exception>
        public I18NOptions AddResource(string packageKey, ITranslateResource resource)
        {
            if (resource == null)
            {
                throw new ArgumentNullException(nameof(resource));
            }
            if (string.IsNullOrWhiteSpace(packageKey))
            {
                throw new ArgumentNullException(nameof(packageKey));
            }
            if (resource.IsAnonymous)
            {
                throw new ArgumentException($"Anonymous translation resource should use method '{nameof(AddAnonymousResource)}'.");
            }

            lock (__lock_resource) {
                var hashOfPackageKey = packageKey.GetHashCode();
                if (TryRegisterLanguageTagOnce(resource.Binding))
                {
                    if (__translationPackages.TryGetValue(hashOfPackageKey, out var package))
                    {
                        package.AddResource(resource);
                    }
                    else
                    {
                        var future = new TranslatePackage(packageKey, _fallbackExperimenter);
                        future.AddResource(resource);
                        AddPackageInternal(future);
                    }
                }
                else
                {
                    throw new InvalidOperationException($"Something broken when add new resource '{resource.Name}'.");
                }
            }

            return(this);
        }
Beispiel #4
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="directoryFilter">Directories to include.</param>
 /// <param name="fileFilter">Files to include.</param>
 public CachedSnippetExtractor(DirectoryFilter directoryFilter, FileFilter fileFilter, GetPackageOrderForComponent packageOrder = null, TranslatePackage translatePackage = null)
 {
     Guard.AgainstNull(directoryFilter, nameof(directoryFilter));
     Guard.AgainstNull(fileFilter, nameof(fileFilter));
     extractor = new DirectorySnippetExtractor(directoryFilter, fileFilter, packageOrder, translatePackage);
 }
Beispiel #5
0
 internal DirectorySnippetExtractor(
     GetPackageOrderForComponent packageOrder = null,
     TranslatePackage translatePackage        = null) :
     this(path => true, path => true, packageOrder, translatePackage)
 {
 }