Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
FileReferenceTokenizer.cs
1using System;
2using System.Collections.Generic;
3using System.IO;
4using System.Threading.Tasks;
7
9{
14 {
19 {
20 }
21
27 public Grade Supports(Type Object)
28 {
29 if (Object == typeof(FileReference))
30 return Grade.Ok;
31 else
32 return Grade.NotAtAll;
33 }
34
40 public async Task Tokenize(object Value, TokenizationProcess Process)
41 {
42 if (Value is FileReference Ref)
43 await Tokenize(Ref, Process);
44 }
45
51 public static async Task Tokenize(FileReference Reference, TokenizationProcess Process)
52 {
53 if (File.Exists(Reference.FileName) &&
54 TryGetFileTokenizer(Reference.FileName, out IFileTokenizer Tokenizer))
55 {
56 await Tokenizer.Tokenize(Reference, Process);
57 }
58 }
59
65 public static bool HasTokenizer(string FileName)
66 {
67 return TryGetFileTokenizer(FileName, out _);
68 }
69
76 public static bool TryGetFileTokenizer(string FileName, out IFileTokenizer Tokenizer)
77 {
78 string Extension = Path.GetExtension(FileName).ToLower();
79
80 if (Extension.StartsWith("."))
81 Extension = Extension.Substring(1);
82
83 lock (tokenizers)
84 {
85 if (!tokenizers.TryGetValue(Extension, out Tokenizer))
86 Tokenizer = null;
87 else if (Tokenizer is null)
88 return false;
89 }
90
91 Tokenizer = Types.FindBest<IFileTokenizer, string>(Extension);
92
93 lock (tokenizers)
94 {
95 tokenizers[Extension] = Tokenizer;
96 }
97
98 return !(Tokenizer is null);
99 }
100
101 private static readonly Dictionary<string, IFileTokenizer> tokenizers = new Dictionary<string, IFileTokenizer>();
102
104 {
105 Types.OnInvalidated += Types_OnInvalidated;
106 }
107
108 private static void Types_OnInvalidated(object Sender, EventArgs e)
109 {
110 lock (tokenizers)
111 {
112 tokenizers.Clear();
113 }
114 }
115 }
116}
Contains a reference to an indexed file.
CaseInsensitiveString FileName
Name of collection hosting object.
Tokenizes files via FileReference object references.
static async Task Tokenize(FileReference Reference, TokenizationProcess Process)
Tokenizes a file, via its file reference object.
static bool TryGetFileTokenizer(string FileName, out IFileTokenizer Tokenizer)
Tries to get a file tokenizer for a given file.
static bool HasTokenizer(string FileName)
Checks if a file has a file tokenizer associated with it.
Grade Supports(Type Object)
If the interface understands objects such as Object .
FileReferenceTokenizer()
Tokenizes files via FileReference object references.
async Task Tokenize(object Value, TokenizationProcess Process)
Tokenizes an object.
Contains information about a tokenization process.
Static class that dynamically manages types and interfaces available in the runtime environment.
Definition: Types.cs:14
Interface for file tokenizers. Best tokenizer is selected
Interface for full-text-search tokenizers
Definition: ITokenizer.cs:12
Grade
Grade enumeration
Definition: Grade.cs:7