Example usage for com.google.common.base CharMatcher replaceFrom

List of usage examples for com.google.common.base CharMatcher replaceFrom

Introduction

In this page you can find the example usage for com.google.common.base CharMatcher replaceFrom.

Prototype

@CheckReturnValue
public String replaceFrom(CharSequence sequence, CharSequence replacement) 

Source Link

Document

Returns a string copy of the input character sequence, with each character that matches this matcher replaced by a given replacement sequence.

Usage

From source file:fredboat.Config.java

private static String cleanTabs(String content, String file) {
    CharMatcher tab = CharMatcher.is('\t');
    if (tab.matchesAnyOf(content)) {
        log.warn("{} contains tab characters! Trying a fix-up.", file);
        return tab.replaceFrom(content, "  ");
    } else {/*from  w ww  .  j a  v  a 2  s  .c o m*/
        return content;
    }
}

From source file:local.laer.app.newgenerator.TileGenerator.java

public Tile section() {
    CharMatcher filter = CharMatcher.anyOf(" :/-");
    LayoutFormat format = content.format();
    String headline = content.headline(5, 40);

    SectionData section = new SectionData();
    section.setHeadline(content.headline(5, 20));
    section.setId(filter.replaceFrom(section.getHeadline(), "_"));

    return sectionBuilder.sectionTile(section, LayoutFormat.HALF);
}

From source file:org.summer.dsl.model.types.xtext.ui.JdtTypesProposalProvider.java

protected void searchAndCreateProposals(IJavaSearchScope scope,
        final ICompletionProposalFactory proposalFactory, ContentAssistContext context,
        EReference typeReference, final Filter filter, final IValueConverter<String> valueConverter,
        final ICompletionProposalAcceptor acceptor) throws JavaModelException {
    String prefix = context.getPrefix();
    List<String> split = Strings.split(prefix, '.');
    char[] typeName = null;
    char[] packageName = null;
    if (prefix.length() > 0 && !split.isEmpty()) {
        CharMatcher dotMatcher = CharMatcher.is('.');
        if (Character.isUpperCase(split.get(split.size() - 1).charAt(0))) {
            typeName = split.get(split.size() - 1).toCharArray();
            if (split.size() > 1)
                packageName = ("*" + dotMatcher
                        .replaceFrom(prefix.substring(0, prefix.length() - (typeName.length + 1)), "*.") + "*")
                                .toCharArray();
        } else {// w  w w.  j ava 2 s .c o  m
            if (prefix.endsWith("."))
                prefix = prefix.substring(0, prefix.length() - 1);
            packageName = ("*" + dotMatcher.replaceFrom(prefix, "*.") + "*").toCharArray();
        }
    }
    IScope typeScope = null;
    if (context.getCurrentModel() != null) {
        typeScope = scopeProvider.getScope(context.getCurrentModel(), typeReference);
    }
    final IReplacementTextApplier textApplier = createTextApplier(context, typeScope, qualifiedNameConverter,
            valueConverter);
    final ICompletionProposalAcceptor scopeAware = new ICompletionProposalAcceptor.Delegate(acceptor) {
        @Override
        public void accept(ICompletionProposal proposal) {
            if (proposal instanceof ConfigurableCompletionProposal) {
                ((ConfigurableCompletionProposal) proposal).setTextApplier(textApplier);
            }
            super.accept(proposal);
        }
    };
    Builder contextBuilder = context.copy();
    final PrefixMatcher original = context.getMatcher();
    contextBuilder.setMatcher(new PrefixMatcher() {
        @Override
        public boolean isCandidateMatchingPrefix(String name, String prefix) {
            if (original.isCandidateMatchingPrefix(name, prefix))
                return true;
            String withoutDollars = name.replace('$', '.');
            String prefixWithoutDollars = prefix.replace('$', '.');
            if ((withoutDollars != name || prefixWithoutDollars != prefix)
                    && original.isCandidateMatchingPrefix(withoutDollars, prefixWithoutDollars))
                return true;
            String sub = withoutDollars;
            int delimiter = sub.indexOf('.');
            while (delimiter != -1) {
                sub = sub.substring(delimiter + 1);
                delimiter = sub.indexOf('.');
                if (delimiter == -1 || prefixWithoutDollars.length() > 0
                        && Character.isLowerCase(prefixWithoutDollars.charAt(0))) {
                    if (original.isCandidateMatchingPrefix(sub, prefixWithoutDollars))
                        return true;
                }
            }
            return false;
        }
    });
    final ContentAssistContext myContext = contextBuilder.toContext();
    final IJvmTypeProvider jvmTypeProvider = jdtTypeProviderFatory
            .findOrCreateTypeProvider(context.getResource().getResourceSet());
    BasicSearchEngine searchEngine = new BasicSearchEngine();
    searchEngine.searchAllTypeNames(packageName, SearchPattern.R_PATTERN_MATCH, typeName,
            SearchPattern.R_PREFIX_MATCH | SearchPattern.R_CAMELCASE_MATCH, filter.getSearchFor(), scope,
            new IRestrictedAccessTypeRequestor() {
                public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName,
                        char[][] enclosingTypeNames, String path, AccessRestriction access) {
                    if (filter.accept(modifiers, packageName, simpleTypeName, enclosingTypeNames, path)
                            && (!checkAccessRestriction()
                                    || (access == null || access.getProblemId() != IProblem.ForbiddenReference
                                            && !access.ignoreIfBetter()))) {
                        StringBuilder fqName = new StringBuilder(
                                packageName.length + simpleTypeName.length + 1);
                        if (packageName.length != 0) {
                            fqName.append(packageName);
                            fqName.append('.');
                        }
                        for (char[] enclosingType : enclosingTypeNames) {
                            /*
                             * the JDT index sometimes yields enclosingTypeNames in the form
                             * char[][] { { Outer$Middle } }
                             * rather than
                             * char[][] { { Outer }, { Middle } }
                             * thus we create the fqName as the binary name and post process the proposal later on
                             */
                            fqName.append(enclosingType);
                            fqName.append('$');
                        }
                        fqName.append(simpleTypeName);
                        String fqNameAsString = fqName.toString();
                        createTypeProposal(fqNameAsString, modifiers, enclosingTypeNames.length > 0,
                                proposalFactory, myContext, scopeAware, jvmTypeProvider, valueConverter);
                    }
                }
            }, IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, new NullProgressMonitor() {
                @Override
                public boolean isCanceled() {
                    return !acceptor.canAcceptMoreProposals();
                }
            });
    if (acceptor.canAcceptMoreProposals()) {
        Iterable<IEObjectDescription> allDirtyTypes = dirtyStateManager
                .getExportedObjectsByType(TypesPackage.Literals.JVM_TYPE);
        for (IEObjectDescription description : allDirtyTypes) {
            QualifiedName qualifiedName = description.getQualifiedName();
            if (filter.accept(Flags.AccPublic, qualifiedName.skipLast(1).toString().toCharArray(),
                    qualifiedName.getLastSegment().toCharArray(), new char[0][0],
                    description.getEObjectURI().toPlatformString(true))) {
                String fqName = description.getQualifiedName().toString();
                createTypeProposal(fqName, Flags.AccPublic, false, proposalFactory, myContext, scopeAware,
                        jvmTypeProvider, valueConverter);
            }
        }
    }
}

From source file:org.eclipse.xtext.common.types.xtext.ui.JdtTypesProposalProvider.java

protected void searchAndCreateProposals(IJavaSearchScope scope,
        final ICompletionProposalFactory proposalFactory, ContentAssistContext context,
        EReference typeReference, final Filter filter, final IValueConverter<String> valueConverter,
        final ICompletionProposalAcceptor acceptor) throws JavaModelException {
    String prefix = context.getPrefix();
    List<String> split = Strings.split(prefix, '.');
    char[] typeName = null;
    char[] packageName = null;
    if (prefix.length() > 0 && !split.isEmpty()) {
        CharMatcher dotMatcher = CharMatcher.is('.');
        if (Character.isUpperCase(split.get(split.size() - 1).charAt(0))) {
            typeName = split.get(split.size() - 1).toCharArray();
            if (split.size() > 1)
                packageName = ("*" + dotMatcher
                        .replaceFrom(prefix.substring(0, prefix.length() - (typeName.length + 1)), "*.") + "*")
                                .toCharArray();
        } else {//w  w w  . j a  v a  2s  . c  o m
            if (prefix.endsWith("."))
                prefix = prefix.substring(0, prefix.length() - 1);
            packageName = ("*" + dotMatcher.replaceFrom(prefix, "*.") + "*").toCharArray();
        }
    }
    IScope typeScope = null;
    if (context.getCurrentModel() != null) {
        typeScope = scopeProvider.getScope(context.getCurrentModel(), typeReference);
    }
    final IReplacementTextApplier textApplier = createTextApplier(context, typeScope, qualifiedNameConverter,
            valueConverter);
    final ICompletionProposalAcceptor scopeAware = textApplier != null
            ? new ICompletionProposalAcceptor.Delegate(acceptor) {
                @Override
                public void accept(ICompletionProposal proposal) {
                    if (proposal instanceof ConfigurableCompletionProposal) {
                        ((ConfigurableCompletionProposal) proposal).setTextApplier(textApplier);
                    }
                    super.accept(proposal);
                }
            }
            : acceptor;
    Builder contextBuilder = context.copy();
    final PrefixMatcher original = context.getMatcher();
    contextBuilder.setMatcher(new PrefixMatcher() {
        @Override
        public boolean isCandidateMatchingPrefix(String name, String prefix) {
            if (original.isCandidateMatchingPrefix(name, prefix))
                return true;
            String nameWithoutDollars = name.replace('$', '.');
            String prefixWithoutDollars = prefix.replace('$', '.');
            final boolean nameOrPrefixHasDollars = (nameWithoutDollars != name)
                    || (prefixWithoutDollars != prefix);
            if (nameOrPrefixHasDollars
                    && original.isCandidateMatchingPrefix(nameWithoutDollars, prefixWithoutDollars))
                return true;
            String sub = nameWithoutDollars;
            int delimiter = sub.indexOf('.');
            while (delimiter != -1) {
                sub = sub.substring(delimiter + 1);
                delimiter = sub.indexOf('.');
                if (delimiter == -1 || prefixWithoutDollars.length() > 0
                        && Character.isLowerCase(prefixWithoutDollars.charAt(0))) {
                    if (original.isCandidateMatchingPrefix(sub, prefixWithoutDollars))
                        return true;
                }
            }
            return false;
        }
    });
    final ContentAssistContext myContext = contextBuilder.toContext();
    final IJvmTypeProvider jvmTypeProvider = jdtTypeProviderFactory
            .findOrCreateTypeProvider(context.getResource().getResourceSet());
    final Set<String> filteredTypeNames = getDirtyTypeNames();
    final Filter dirtyTypenameFilter = new ITypesProposalProvider.Filter() {
        @Override
        public boolean accept(int modifiers, char[] packageName, char[] simpleTypeName,
                char[][] enclosingTypeNames, String path) {
            if (path == null || path.endsWith(".class") || path.endsWith(".java")) { // Java index match
                String identifier = getIdentifier(packageName, simpleTypeName, enclosingTypeNames);
                if (filteredTypeNames.contains(identifier)) {
                    return false;
                }
            }
            return true;
        }

        @Override
        public int getSearchFor() {
            return filter.getSearchFor();
        }
    };

    BasicSearchEngine searchEngine = new BasicSearchEngine();
    searchEngine.searchAllTypeNames(packageName, SearchPattern.R_PATTERN_MATCH, typeName,
            SearchPattern.R_PREFIX_MATCH | SearchPattern.R_CAMELCASE_MATCH, filter.getSearchFor(), scope,
            new IRestrictedAccessTypeRequestor() {
                @Override
                public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName,
                        char[][] enclosingTypeNames, String path, AccessRestriction access) {
                    if (dirtyTypenameFilter.accept(modifiers, packageName, simpleTypeName, enclosingTypeNames,
                            path)
                            && filter.accept(modifiers, packageName, simpleTypeName, enclosingTypeNames, path)
                            && (!checkAccessRestriction()
                                    || (access == null || access.getProblemId() != IProblem.ForbiddenReference
                                            && !access.ignoreIfBetter()))) {
                        StringBuilder fqName = new StringBuilder(
                                packageName.length + simpleTypeName.length + 1);
                        if (packageName.length != 0) {
                            fqName.append(packageName);
                            fqName.append('.');
                        }
                        for (char[] enclosingType : enclosingTypeNames) {
                            /*
                             * the JDT index sometimes yields enclosingTypeNames in the form
                             * char[][] { { Outer$Middle } }
                             * rather than
                             * char[][] { { Outer }, { Middle } }
                             * thus we create the fqName as the binary name and post process the proposal later on
                             */
                            fqName.append(enclosingType);
                            fqName.append('$');
                        }
                        fqName.append(simpleTypeName);
                        String fqNameAsString = fqName.toString();
                        createTypeProposal(fqNameAsString, modifiers, enclosingTypeNames.length > 0,
                                proposalFactory, myContext, scopeAware, jvmTypeProvider, valueConverter);
                    }
                }
            }, IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, new NullProgressMonitor() {
                @Override
                public boolean isCanceled() {
                    return !acceptor.canAcceptMoreProposals();
                }
            });
    if (acceptor.canAcceptMoreProposals()) {
        Iterable<IEObjectDescription> allDirtyTypes = dirtyStateManager
                .getExportedObjectsByType(TypesPackage.Literals.JVM_TYPE);
        for (IEObjectDescription description : allDirtyTypes) {
            QualifiedName qualifiedName = description.getQualifiedName();
            if (filter.accept(Flags.AccPublic, qualifiedName.skipLast(1).toString().toCharArray(),
                    qualifiedName.getLastSegment().toCharArray(), new char[0][0],
                    description.getEObjectURI().toPlatformString(true))) {
                String fqName = description.getQualifiedName().toString();
                createTypeProposal(fqName, Flags.AccPublic, fqName.indexOf('$') > 0, proposalFactory, myContext,
                        scopeAware, jvmTypeProvider, valueConverter);
            }
        }
    }
}