// Path: humanize-emoji/src/main/java/humanize/emoji/EmojiInterpolator.java
// public static UnicodeInterpolator createEmojiInterpolator(String pattern)
// {
//     UnicodeInterpolator ui = new UnicodeInterpolator(new EmojiCodePointReplacer(pattern));
//     ui.addRange(0x20a0, 0x32ff);
//     ui.addRange(0x1f000, 0x1ffff);
//     ui.addRange(0xfe4e5, 0xfe4ee);
//     return ui;
// }
// 
// Path: humanize-slim/src/main/java/humanize/text/util/UnicodeInterpolator.java
// public class UnicodeInterpolator extends UnicodeEscaper
// {
//     private final Replacer replacer;
//     private final Collection<Range<Integer>> ranges;
// 
//     public UnicodeInterpolator(Replacer replacer)
//     {
//         this.replacer = replacer;
//         this.ranges = new ArrayList<Range<Integer>>();
//     }
// 
//     public void addRange(int lower, int upper)
//     {
//         addRange(Range.closed(lower, upper));
//     }
// 
//     public void addRange(Range<Integer> range)
//     {
//         ranges.add(range);
//     }
// 
//     @Override
//     protected char[] escape(int codePoint)
//     {
//         for (Range<Integer> range : ranges)
//         {
//             if (range.contains(codePoint))
//             {
//                 return Strings.nullToEmpty(replacer.replace(Integer.toHexString(codePoint))).toCharArray();
//             }
//         }
// 
//         return Character.toChars(codePoint);
//     }
// }


import static humanize.emoji.EmojiInterpolator.createEmojiInterpolator;
import humanize.text.util.UnicodeInterpolator;
import java.net.URL;
import java.util.List;
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
     * 
     * @param text
     *            The text to be interpolated
     * @return the text with all the Emoji characters replaced by its HTML image
     *         tag
     */
    public static String replaceUnicodeWithImages(String text)
    {
        return getInstance().interpolate(text);
    }

    /**
     * Finds matching Emoji character by its annotated metadata.
     * 
     * @param annotations
     *            The annotation tags to be matched
     * @return A list containing the instances of the marching characters
     */
    public static List<EmojiChar> search(String... annotations)
    {
        return Emoji.findByAnnotations(SPACE_JOINER.join(annotations));
    }

    private static EmojiApi getInstance()
    {
        return LazyHolder.INSTANCE;
    }

    private String tagFormat;

// Path: humanize-emoji/src/main/java/humanize/emoji/EmojiInterpolator.java
// public static UnicodeInterpolator createEmojiInterpolator(String pattern)
// {
//     UnicodeInterpolator ui = new UnicodeInterpolator(new EmojiCodePointReplacer(pattern));
//     ui.addRange(0x20a0, 0x32ff);
//     ui.addRange(0x1f000, 0x1ffff);
//     ui.addRange(0xfe4e5, 0xfe4ee);
//     return ui;
// }
// 
// Path: humanize-slim/src/main/java/humanize/text/util/UnicodeInterpolator.java
// public class UnicodeInterpolator extends UnicodeEscaper
// {
//     private final Replacer replacer;
//     private final Collection<Range<Integer>> ranges;
// 
//     public UnicodeInterpolator(Replacer replacer)
//     {
//         this.replacer = replacer;
//         this.ranges = new ArrayList<Range<Integer>>();
//     }
// 
//     public void addRange(int lower, int upper)
//     {
//         addRange(Range.closed(lower, upper));
//     }
// 
//     public void addRange(Range<Integer> range)
//     {
//         ranges.add(range);
//     }
// 
//     @Override
//     protected char[] escape(int codePoint)
//     {
//         for (Range<Integer> range : ranges)
//         {
//             if (range.contains(codePoint))
//             {
//                 return Strings.nullToEmpty(replacer.replace(Integer.toHexString(codePoint))).toCharArray();
//             }
//         }
// 
//         return Character.toChars(codePoint);
//     }
// }


// Path: humanize-emoji/src/main/java/humanize/emoji/EmojiApi.java
import static humanize.emoji.EmojiInterpolator.createEmojiInterpolator;
import humanize.text.util.UnicodeInterpolator;
import java.net.URL;
import java.util.List;
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;

     * 
     * @param text
     *            The text to be interpolated
     * @return the text with all the Emoji characters replaced by its HTML image
     *         tag
     */
    public static String replaceUnicodeWithImages(String text)
    {
        return getInstance().interpolate(text);
    }

    /**
     * Finds matching Emoji character by its annotated metadata.
     * 
     * @param annotations
     *            The annotation tags to be matched
     * @return A list containing the instances of the marching characters
     */
    public static List<EmojiChar> search(String... annotations)
    {
        return Emoji.findByAnnotations(SPACE_JOINER.join(annotations));
    }

    private static EmojiApi getInstance()
    {
        return LazyHolder.INSTANCE;
    }

    private String tagFormat;

    private UnicodeInterpolator interpolator;