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

package.src.util.verticalize_punctuation.js Maven / Gradle / Ivy

The newest version!
// @flow

import {
    charHasRotatedVerticalOrientation,
} from './script_detection';

export const verticalizedCharacterMap = {
    '!': '︕',
    '#': '#',
    '$': '$',
    '%': '%',
    '&': '&',
    '(': '︵',
    ')': '︶',
    '*': '*',
    '+': '+',
    ',': '︐',
    '-': '︲',
    '.': '・',
    '/': '/',
    ':': '︓',
    ';': '︔',
    '<': '︿',
    '=': '=',
    '>': '﹀',
    '?': '︖',
    '@': '@',
    '[': '﹇',
    '\\': '\',
    ']': '﹈',
    '^': '^',
    '_': '︳',
    '`': '`',
    '{': '︷',
    '|': '―',
    '}': '︸',
    '~': '~',
    '¢': '¢',
    '£': '£',
    '¥': '¥',
    '¦': '¦',
    '¬': '¬',
    '¯': ' ̄',
    '–': '︲',
    '—': '︱',
    '‘': '﹃',
    '’': '﹄',
    '“': '﹁',
    '”': '﹂',
    '…': '︙',
    '‧': '・',
    '₩': '₩',
    '、': '︑',
    '。': '︒',
    '〈': '︿',
    '〉': '﹀',
    '《': '︽',
    '》': '︾',
    '「': '﹁',
    '」': '﹂',
    '『': '﹃',
    '』': '﹄',
    '【': '︻',
    '】': '︼',
    '〔': '︹',
    '〕': '︺',
    '〖': '︗',
    '〗': '︘',
    '!': '︕',
    '(': '︵',
    ')': '︶',
    ',': '︐',
    '-': '︲',
    '.': '・',
    ':': '︓',
    ';': '︔',
    '<': '︿',
    '>': '﹀',
    '?': '︖',
    '[': '﹇',
    ']': '﹈',
    '_': '︳',
    '{': '︷',
    '|': '―',
    '}': '︸',
    '⦅': '︵',
    '⦆': '︶',
    '。': '︒',
    '「': '﹁',
    '」': '﹂'
};

export default function verticalizePunctuation(input: string) {
    let output = '';

    for (let i = 0; i < input.length; i++) {
        const nextCharCode = input.charCodeAt(i + 1) || null;
        const prevCharCode = input.charCodeAt(i - 1) || null;

        const canReplacePunctuation = (
            (!nextCharCode || !charHasRotatedVerticalOrientation(nextCharCode) || verticalizedCharacterMap[input[i + 1]]) &&
            (!prevCharCode || !charHasRotatedVerticalOrientation(prevCharCode) || verticalizedCharacterMap[input[i - 1]])
        );

        if (canReplacePunctuation && verticalizedCharacterMap[input[i]]) {
            output += verticalizedCharacterMap[input[i]];
        } else {
            output += input[i];
        }
    }

    return output;
}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy