/**
 * Highlighter implementation using the GeSHi algorithm adapted to LibreOffice API.
 * 
 * @author cbosdonnat
 */
public final class HighlighterImpl extends WeakBase implements XServiceInfo, XHighlighter {
    
    private static final String IMPLEMENTATION_NAME = HighlighterImpl.class.getName();
    private static final String[] SERVICE_NAMES = { "org.libreoffice.coooder.Highlighter" };
    
    private static final int OPEN = 0;
    private static final int CLOSE = 1;
    
    private static final String NUMBER_REGEX = "[-+]?\\b(?:[0-9]*\\.)?[0-9]+\\b";
    
    
    private final XComponentContext mContext;
    private XLanguage mLanguage;
    
    private CompiledPatternsCache mPatternsCache;

    private XTextRange mSelectionStart;
    private XTextDocument mTextDocument;
    private int mLength;
    

    public HighlighterImpl(XComponentContext pContext) {
        mContext = pContext;
        mPatternsCache = new CompiledPatternsCache();
    };

    public static XSingleComponentFactory __getComponentFactory(String pImplementationName) {
        XSingleComponentFactory xFactory = null;

        if (pImplementationName.equals(IMPLEMENTATION_NAME)) {
            xFactory = Factory.createComponentFactory(HighlighterImpl.class, SERVICE_NAMES);   
        }
        return xFactory;
    }
}

