Exemple #1
0
        /// <summary>
        /// Returns a <see cref="Normalizer2"/> instance which uses the specified data file
        /// (an ICU data file if data=null, or else custom binary data)
        /// and which composes or decomposes text according to the specified mode.
        /// Returns an unmodifiable singleton instance.
        /// <list type="bullet">
        ///		<item><description>Use data=null for data files that are part of ICU's own data.</description></item>
        ///		<item><description>Use name="nfc" and COMPOSE/DECOMPOSE for Unicode standard NFC/NFD.</description></item>
        ///		<item><description>Use name="nfkc" and COMPOSE/DECOMPOSE for Unicode standard NFKC/NFKD.</description></item>
        ///		<item><description>Use name="nfkc_cf" and COMPOSE for Unicode standard NFKC_CF=NFKC_Casefold.</description></item>
        /// </list>
        /// <para/>
        /// If data!=null, then the binary data is read once and cached using the provided
        /// name as the key.
        /// If you know or expect the data to be cached already, you can use data!=null
        /// for non-ICU data as well.
        /// </summary>
        /// <param name="data">The binary, big-endian normalization (.nrm file) data, or null for ICU data.</param>
        /// <param name="name">"nfc" or "nfkc" or "nfkc_cf" or name of custom data file.</param>
        /// <param name="mode">Normalization mode (compose or decompose etc.)</param>
        /// <returns>The requested <see cref="Normalizer2"/>, if successful.</returns>
        public static Normalizer2 GetInstance(Stream data, string name, Normalizer2Mode mode)
        {
            ByteBuffer bytes = null;

            if (data != null)
            {
                try
                {
                    bytes = ICUBinary.GetByteBufferFromStreamAndDisposeStream(data);
                }
                catch (IOException e)
                {
                    throw new ICUUncheckedIOException(e);
                }
            }
            Norm2AllModes all2Modes = Norm2AllModes.GetInstance(bytes, name);

            switch (mode)
            {
            case Normalizer2Mode.Compose: return(all2Modes.Comp);

            case Normalizer2Mode.Decompose: return(all2Modes.Decomp);

            case Normalizer2Mode.FCD: return(all2Modes.Fcd);

            case Normalizer2Mode.ComposeContiguous: return(all2Modes.Fcc);

            default: return(null);     // will not occur
            }
        }
Exemple #2
0
 /// <summary>
 /// System registration hook.
 /// </summary>
 internal static void Register()
 {
     Transliterator.RegisterFactory("Any-NFC", new Transliterator.Factory(getInstance: (id) =>
     {
         return(new NormalizationTransliterator("NFC", Normalizer2.GetNFCInstance()));
     }));
     Transliterator.RegisterFactory("Any-NFD", new Transliterator.Factory(getInstance: (id) =>
     {
         return(new NormalizationTransliterator("NFD", Normalizer2.GetNFDInstance()));
     }));
     Transliterator.RegisterFactory("Any-NFKC", new Transliterator.Factory(getInstance: (id) =>
     {
         return(new NormalizationTransliterator("NFKC", Normalizer2.GetNFKCInstance()));
     }));
     Transliterator.RegisterFactory("Any-NFKD", new Transliterator.Factory(getInstance: (id) =>
     {
         return(new NormalizationTransliterator("NFKD", Normalizer2.GetNFKDInstance()));
     }));
     Transliterator.RegisterFactory("Any-FCD", new Transliterator.Factory(getInstance: (id) =>
     {
         return(new NormalizationTransliterator("FCD", Norm2AllModes.GetFCDNormalizer2()));
     }));
     Transliterator.RegisterFactory("Any-FCC", new Transliterator.Factory(getInstance: (id) =>
     {
         return(new NormalizationTransliterator("FCC", Norm2AllModes.GetNFCInstance().Fcc));
     }));
     Transliterator.RegisterSpecialInverse("NFC", "NFD", true);
     Transliterator.RegisterSpecialInverse("NFKC", "NFKD", true);
     Transliterator.RegisterSpecialInverse("FCC", "NFD", false);
     Transliterator.RegisterSpecialInverse("FCD", "FCD", false);
 }
Exemple #3
0
        /// <summary>
        /// Construct a <see cref="CanonicalIterator"/> object.
        /// </summary>
        /// <param name="source">String to get results for.</param>
        /// <stable>ICU 2.4</stable>
        public CanonicalIterator(string source)
        {
            Norm2AllModes allModes = Norm2AllModes.GetNFCInstance();

            nfd     = allModes.Decomp;
            nfcImpl = allModes.Impl.EnsureCanonIterData();
            SetSource(source);
        }
Exemple #4
0
 internal void EnsureOwnedData()
 {
     if (ownedData == null)
     {
         Normalizer2Impl nfcImpl = Norm2AllModes.GetNFCInstance().Impl;
         ownedData = new CollationData(nfcImpl);
     }
     data = ownedData;
 }
Exemple #5
0
 public ComposedCharIter(bool compat, int options)
 {
     if (compat)
     {
         n2impl = Norm2AllModes.GetNFKCInstance().Impl;
     }
     else
     {
         n2impl = Norm2AllModes.GetNFCInstance().Impl;
     }
 }
Exemple #6
0
 /// <summary>
 /// Returns a <see cref="Normalizer2"/> instance for Unicode NFKC_Casefold normalization.
 /// Same as GetInstance(null, "nfkc_cf", UNormalization2Mode.UNORM2_COMPOSE).
 /// Returns an unmodifiable singleton instance.
 /// </summary>
 /// <returns>The requested <see cref="Normalizer2"/>, if successful.</returns>
 public static Normalizer2 GetNFKCCasefoldInstance()
 {
     return(Norm2AllModes.GetNFKC_CFInstance().Comp);
 }
Exemple #7
0
 /// <summary>
 /// Returns a <see cref="Normalizer2"/> instance for Unicode NFKD normalization.
 /// Same as GetInstance(null, "nfkc", UNormalization2Mode.UNORM2_DECOMPOSE).
 /// Returns an unmodifiable singleton instance.
 /// </summary>
 /// <returns>The requested <see cref="Normalizer2"/>, if successful.</returns>
 public static Normalizer2 GetNFKDInstance()
 {
     return(Norm2AllModes.GetNFKCInstance().Decomp);
 }
Exemple #8
0
 /// <summary>
 /// Returns a <see cref="Normalizer2"/> instance for Unicode NFC normalization.
 /// Same as GetInstance(null, "nfc", UNormalization2Mode.UNORM2_COMPOSE).
 /// Returns an unmodifiable singleton instance.
 /// </summary>
 /// <returns>The requested <see cref="Normalizer2"/>, if successful.</returns>
 public static Normalizer2 GetNFCInstance()
 {
     return(Norm2AllModes.GetNFCInstance().Comp);
 }