All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.vladsch.flexmark.util.sequence.mappers.SpaceMapper Maven / Gradle / Ivy

package com.vladsch.flexmark.util.sequence.mappers;

import com.vladsch.flexmark.util.misc.CharPredicate;
import com.vladsch.flexmark.util.sequence.SequenceUtils;
import org.jetbrains.annotations.NotNull;

public class SpaceMapper {
    final public static CharMapper toNonBreakSpace = new ToNonBreakSpace();
    final public static CharMapper fromNonBreakSpace = new FromNonBreakSpace();

    public static @NotNull CharMapper toSpaces(@NotNull CharPredicate predicate) {
        return new FromPredicate(predicate);
    }

    private static class FromNonBreakSpace implements CharMapper {
        FromNonBreakSpace() {}

        @Override
        public char map(char c) {
            return c == SequenceUtils.NBSP ? SequenceUtils.SPC : c;
        }
    }

    private static class FromPredicate implements CharMapper {
        final @NotNull CharPredicate myPredicate;

        FromPredicate(@NotNull CharPredicate predicate) {
            myPredicate = predicate;
        }

        @Override
        public char map(char c) {
            return myPredicate.test(c) ? SequenceUtils.SPC : c;
        }
    }

    private static class ToNonBreakSpace implements CharMapper {
        ToNonBreakSpace() {}

        @Override
        public char map(char c) {
            return c == SequenceUtils.SPC ? SequenceUtils.NBSP : c;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy