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

com.vladsch.flexmark.util.format.TableFormatOptions Maven / Gradle / Ivy

package com.vladsch.flexmark.util.format;

import com.vladsch.flexmark.util.data.*;
import com.vladsch.flexmark.util.format.options.DiscretionaryText;
import com.vladsch.flexmark.util.format.options.TableCaptionHandling;
import com.vladsch.flexmark.util.misc.CharPredicate;
import com.vladsch.flexmark.util.sequence.SequenceUtils;
import org.jetbrains.annotations.NotNull;

@SuppressWarnings("WeakerAccess")
public class TableFormatOptions implements MutableDataSetter {
    final public static char INTELLIJ_DUMMY_IDENTIFIER_CHAR = SequenceUtils.US;
    final public static String INTELLIJ_DUMMY_IDENTIFIER = SequenceUtils.US_CHARS;
    final public static CharPredicate INTELLIJ_DUMMY_IDENTIFIER_SET = value -> value == SequenceUtils.US;

    final public static DataKey FORMAT_TABLE_LEAD_TRAIL_PIPES = new DataKey<>("FORMAT_TABLE_LEAD_TRAIL_PIPES", true);
    final public static DataKey FORMAT_TABLE_SPACE_AROUND_PIPES = new DataKey<>("FORMAT_TABLE_SPACE_AROUND_PIPES", true);
    final public static DataKey FORMAT_TABLE_ADJUST_COLUMN_WIDTH = new DataKey<>("FORMAT_TABLE_ADJUST_COLUMN_WIDTH", true);
    final public static DataKey FORMAT_TABLE_APPLY_COLUMN_ALIGNMENT = new DataKey<>("FORMAT_TABLE_APPLY_COLUMN_ALIGNMENT", true);
    final public static DataKey FORMAT_TABLE_FILL_MISSING_COLUMNS = new DataKey<>("FORMAT_TABLE_FILL_MISSING_COLUMNS", false);
    /**
     * Used by table formatting to set min column from which to add missing columns, null to use default
     */
    final public static NullableDataKey FORMAT_TABLE_FILL_MISSING_MIN_COLUMN = new NullableDataKey<>("FORMAT_TABLE_FILL_MISSING_MIN_COLUMN", (Integer) null);

    final public static DataKey FORMAT_TABLE_LEFT_ALIGN_MARKER = new DataKey<>("FORMAT_TABLE_LEFT_ALIGN_MARKER", DiscretionaryText.AS_IS);
    final public static DataKey FORMAT_TABLE_MIN_SEPARATOR_COLUMN_WIDTH = new DataKey<>("FORMAT_TABLE_MIN_SEPARATOR_COLUMN_WIDTH", 3);
    final public static DataKey FORMAT_TABLE_MIN_SEPARATOR_DASHES = new DataKey<>("FORMAT_TABLE_MIN_SEPARATOR_DASHES", 1);
    final public static DataKey FORMAT_TABLE_TRIM_CELL_WHITESPACE = new DataKey<>("FORMAT_TABLE_TRIM_CELL_WHITESPACE", true);
    final public static DataKey FORMAT_TABLE_CAPTION = new DataKey<>("FORMAT_TABLE_CAPTION", TableCaptionHandling.AS_IS);
    final public static DataKey FORMAT_TABLE_CAPTION_SPACES = new DataKey<>("FORMAT_TABLE_CAPTION_SPACES", DiscretionaryText.AS_IS);
    final public static DataKey FORMAT_TABLE_INDENT_PREFIX = new DataKey<>("FORMAT_TABLE_INDENT_PREFIX", "");
    final public static DataKey FORMAT_TABLE_MANIPULATOR = new DataKey<>("FORMAT_TABLE_MANIPULATOR", TableManipulator.NULL);

    final public static DataKey FORMAT_CHAR_WIDTH_PROVIDER = new DataKey<>("FORMAT_CHAR_WIDTH_PROVIDER", CharWidthProvider.NULL);
    final public static DataKey FORMAT_TABLE_DUMP_TRACKING_OFFSETS = new DataKey<>("FORMAT_TABLE_DUMP_TRACKING_OFFSETS", false);

    final public boolean leadTrailPipes;
    final public boolean spaceAroundPipes;
    final public boolean adjustColumnWidth;
    final public boolean applyColumnAlignment;
    final public boolean fillMissingColumns;
    final public Integer formatTableFillMissingMinColumn;

    final public boolean trimCellWhitespace;
    final public boolean dumpIntellijOffsets;
    final public DiscretionaryText leftAlignMarker;
    final public TableCaptionHandling formatTableCaption;
    final public DiscretionaryText formatTableCaptionSpaces;
    final public int minSeparatorColumnWidth;
    final public int minSeparatorDashes;
    final public CharWidthProvider charWidthProvider;
    final public String formatTableIndentPrefix;
    final public TableManipulator tableManipulator;

    final public int spaceWidth;
    final public int spacePad;
    final public int pipeWidth;
    final public int colonWidth;
    final public int dashWidth;

    public TableFormatOptions() {
        this(null);
    }

    public TableFormatOptions(DataHolder options) {
        leadTrailPipes = FORMAT_TABLE_LEAD_TRAIL_PIPES.get(options);
        spaceAroundPipes = FORMAT_TABLE_SPACE_AROUND_PIPES.get(options);
        adjustColumnWidth = FORMAT_TABLE_ADJUST_COLUMN_WIDTH.get(options);
        applyColumnAlignment = FORMAT_TABLE_APPLY_COLUMN_ALIGNMENT.get(options);
        fillMissingColumns = FORMAT_TABLE_FILL_MISSING_COLUMNS.get(options);
        formatTableFillMissingMinColumn = FORMAT_TABLE_FILL_MISSING_MIN_COLUMN.get(options);
        leftAlignMarker = FORMAT_TABLE_LEFT_ALIGN_MARKER.get(options);
        minSeparatorColumnWidth = FORMAT_TABLE_MIN_SEPARATOR_COLUMN_WIDTH.get(options);
        minSeparatorDashes = FORMAT_TABLE_MIN_SEPARATOR_DASHES.get(options);
        charWidthProvider = FORMAT_CHAR_WIDTH_PROVIDER.get(options);
        formatTableCaption = FORMAT_TABLE_CAPTION.get(options);
        formatTableCaptionSpaces = FORMAT_TABLE_CAPTION_SPACES.get(options);
        formatTableIndentPrefix = FORMAT_TABLE_INDENT_PREFIX.get(options);
        trimCellWhitespace = FORMAT_TABLE_TRIM_CELL_WHITESPACE.get(options);
        tableManipulator = FORMAT_TABLE_MANIPULATOR.get(options);
        dumpIntellijOffsets = FORMAT_TABLE_DUMP_TRACKING_OFFSETS.get(options);

        spaceWidth = charWidthProvider.getSpaceWidth();
        spacePad = spaceAroundPipes ? 2 * spaceWidth : 0;
        pipeWidth = charWidthProvider.getCharWidth('|');
        colonWidth = charWidthProvider.getCharWidth(':');
        dashWidth = charWidthProvider.getCharWidth('-');
    }

    @NotNull
    @Override
    public MutableDataHolder setIn(@NotNull MutableDataHolder dataHolder) {
        dataHolder.set(FORMAT_TABLE_LEAD_TRAIL_PIPES, leadTrailPipes);
        dataHolder.set(FORMAT_TABLE_SPACE_AROUND_PIPES, spaceAroundPipes);
        dataHolder.set(FORMAT_TABLE_ADJUST_COLUMN_WIDTH, adjustColumnWidth);
        dataHolder.set(FORMAT_TABLE_APPLY_COLUMN_ALIGNMENT, applyColumnAlignment);
        dataHolder.set(FORMAT_TABLE_FILL_MISSING_COLUMNS, fillMissingColumns);
        dataHolder.set(FORMAT_TABLE_FILL_MISSING_MIN_COLUMN, formatTableFillMissingMinColumn);
        dataHolder.set(FORMAT_TABLE_LEFT_ALIGN_MARKER, leftAlignMarker);
        dataHolder.set(FORMAT_TABLE_MIN_SEPARATOR_COLUMN_WIDTH, minSeparatorColumnWidth);
        dataHolder.set(FORMAT_TABLE_MIN_SEPARATOR_DASHES, minSeparatorDashes);
        dataHolder.set(FORMAT_CHAR_WIDTH_PROVIDER, charWidthProvider);
        dataHolder.set(FORMAT_TABLE_CAPTION, formatTableCaption);
        dataHolder.set(FORMAT_TABLE_CAPTION_SPACES, formatTableCaptionSpaces);
        dataHolder.set(FORMAT_TABLE_INDENT_PREFIX, formatTableIndentPrefix);
        dataHolder.set(FORMAT_TABLE_TRIM_CELL_WHITESPACE, trimCellWhitespace);
        dataHolder.set(FORMAT_TABLE_MANIPULATOR, tableManipulator);
        dataHolder.set(FORMAT_TABLE_DUMP_TRACKING_OFFSETS, dumpIntellijOffsets);
        return dataHolder;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy