Socket
Socket
Sign inDemoInstall

draft-regex

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

draft-regex - npm Package Compare versions

Comparing version 1.1.4 to 1.1.5

.eslintignore

6

build/clearPastedStyle.js

@@ -27,2 +27,3 @@ 'use strict';

}
if (replaceHeader && block.type.slice(0, 6) === 'header') {

@@ -35,2 +36,5 @@ return (0, _replaceTextRegex.createContentBlock)(block, { type: shiftHeader });

}
if (!blockTypes) return (0, _replaceTextRegex.createContentBlock)(block, { type: 'unstyled' });
return block;

@@ -40,5 +44,5 @@ });

var newEditorState = _draftJs.EditorState.createWithContent(newCS);
var ES = _draftJs.EditorState.forceSelection(newEditorState, SS);
var ES = _draftJs.EditorState.acceptSelection(newEditorState, SS);
return ES;
}

107

build/replaceTextRegex.js

@@ -11,12 +11,10 @@ 'use strict';

var _rules = require('./rules');
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
var optionRules = {
extraSpaces: [{ reg: new RegExp(/\s+/g), shift: ' ' }, // "Extra spaces"
{ reg: new RegExp(/(^\s*)|(\s*)$/g), shift: '' }],
spacesAfterPunctuationMarks: [{ reg: new RegExp(/(,|\.)(\S)/g), shift: '$1 $2' }]
};
var typoRules = [{ reg: new RegExp(/"([^"]+)"/g), shift: '«$1»' }, // меняет кавычки на елочки
{ reg: new RegExp(/\s+/g), shift: ' ' }, // удаляет лишние пробелы
{ reg: new RegExp(/\[^!?:;,.…] +[A-ZА-Я]/g), shift: '$1 $2' }];
var optionRules = {};
function createSelectionState(key) {

@@ -49,2 +47,49 @@ var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;

function replaceText(text, rule) {
var _ref2 = rule || {},
reg = _ref2.reg,
shift = _ref2.shift;
return text.replace(reg, shift);
}
function getRecordBlock(rules, currentContentBlock) {
var text = currentContentBlock.getText().slice();
for (var i = 0; i < rules.length; i += 1) {
text = replaceText(text, rules[i]);
}
return createContentBlock(currentContentBlock, {
text: text,
key: currentContentBlock.getKey()
});
}
function applyMatchedRules(rules, editorState) {
var contentState = editorState.getCurrentContent();
var anchorKey = editorState.getSelection().getAnchorKey();
var newBlockMap = contentState.getBlockMap().map(function (block) {
return getRecordBlock(rules, block);
});
var currentBlock = contentState.getBlockForKey(anchorKey);
var newCurrentBlock = newBlockMap.get(anchorKey);
var anchorOffset = editorState.getSelection().getAnchorOffset();
var diffInLengths = currentBlock.getLength() || 0;
if (newCurrentBlock) {
diffInLengths = currentBlock.getLength() - newCurrentBlock.getLength();
}
var newSelectionState = createSelectionState(anchorKey, anchorOffset - diffInLengths);
var newContentState = new _draftJs.ContentState({ blockMap: newBlockMap });
var newEditorState = _draftJs.EditorState.createWithContent(newContentState);
var forcedEditorState = _draftJs.EditorState.forceSelection(newEditorState, newSelectionState);
if (forcedEditorState.getCurrentContent().getPlainText() !== contentState.getPlainText()) {
return forcedEditorState;
}
return editorState;
}
function prepareOptionableRules(options) {

@@ -60,10 +105,3 @@ var acc = [];

function replaceTextRegex(editorState) {
var rulesArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _rules.typoRules;
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { extraSpaces: true };
var CS = editorState.getCurrentContent();
var CSMap = CS.getBlockMap();
var CSText = CS.getPlainText();
function replaceTextRegex(editorState, options) {
var optionableRules = [];

@@ -74,40 +112,5 @@ if (options) {

}
var rules = options ? rulesArray.concat(optionableRules) : rulesArray;
var rules = options ? typoRules.concat(optionableRules) : typoRules;
var rule = void 0;
var match = rules.some(function (typoRule) {
rule = typoRule;
return typoRule && typoRule.reg.exec(CSText);
});
if (match) {
var _ref2 = rule || {},
_reg = _ref2.reg,
_shift = _ref2.shift;
var SS = editorState.getSelection();
var _key = SS.getAnchorKey();
var anchorOffset = SS.getAnchorOffset();
var currentContentBlock = CS.getBlockForKey(_key);
var text = currentContentBlock.getText().replace(_reg, _shift);
var newBlock = createContentBlock(currentContentBlock, {
text: text,
key: _key
});
var diffInLengths = currentContentBlock.getLength() - newBlock.getLength();
var newSS = createSelectionState(_key, anchorOffset - diffInLengths);
var newBlockMap = CSMap.set(_key, newBlock);
var newCS = new _draftJs.ContentState({ blockMap: newBlockMap });
var ES = _draftJs.EditorState.createWithContent(newCS);
var forceES = _draftJs.EditorState.forceSelection(ES, newSS);
var forceESText = forceES.getCurrentContent().getPlainText();
if (forceESText !== CSText) {
return forceES;
}
return editorState;
}
return editorState;
return applyMatchedRules(rules, editorState);
}
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
Object.defineProperty(exports, '__esModule', {
value: true,
});

@@ -41,3 +41,9 @@ exports.default = clearEmptyBlocks;

// 3. Check hole between two non-empty lines
if (emptyBefore > maxEmptyLines || emptyAfter > maxEmptyLines || emptyBefore + emptyAfter >= maxEmptyLines && currentBlock.getText() === '' && currentBlock !== CS.getLastBlock()) {
if (
emptyBefore > maxEmptyLines ||
emptyAfter > maxEmptyLines ||
(emptyBefore + emptyAfter >= maxEmptyLines &&
currentBlock.getText() === '' &&
currentBlock !== CS.getLastBlock())
) {
var keyForRemove = void 0;

@@ -64,6 +70,6 @@ var keyForFocus = void 0;

}
'use strict';
('use strict');
Object.defineProperty(exports, "__esModule", {
value: true
Object.defineProperty(exports, '__esModule', {
value: true,
});

@@ -81,9 +87,9 @@ exports.default = clearPastedStyle;

var _ref = options || {},
blockTypes = _ref.blockTypes,
replaceHeader = _ref.replaceHeader,
shiftHeader = _ref.shiftHeader,
replaceList = _ref.replaceList,
shiftList = _ref.shiftList;
blockTypes = _ref.blockTypes,
replaceHeader = _ref.replaceHeader,
shiftHeader = _ref.shiftHeader,
replaceList = _ref.replaceList,
shiftList = _ref.shiftList;
var blockMap = CS.getBlockMap().map(function (block) {
var blockMap = CS.getBlockMap().map(function(block) {
if (blockTypes && blockTypes.indexOf(block.type) === -1) {

@@ -111,6 +117,6 @@ return (0, _replaceTextRegex.createContentBlock)(block, { type: 'unstyled' });

}
'use strict';
('use strict');
Object.defineProperty(exports, "__esModule", {
value: true
Object.defineProperty(exports, '__esModule', {
value: true,
});

@@ -131,3 +137,5 @@ exports.clearPastedStyle = exports.replaceTextRegex = exports.clearEmptyBlocks = undefined;

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj };
}

@@ -137,6 +145,6 @@ exports.clearEmptyBlocks = _clearEmptyBlocks2.default;

exports.clearPastedStyle = _clearPastedStyle2.default;
'use strict';
('use strict');
Object.defineProperty(exports, "__esModule", {
value: true
Object.defineProperty(exports, '__esModule', {
value: true,
});

@@ -152,10 +160,23 @@ exports.createContentBlock = createContentBlock;

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj };
}
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
function _toConsumableArray(arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
arr2[i] = arr[i];
}
return arr2;
} else {
return Array.from(arr);
}
}
var optionRules = {
extraSpaces: [{ reg: new RegExp(/\s+/g), shift: ' ' }, // "Extra spaces"
{ reg: new RegExp(/(^\s*)|(\s*)$/g), shift: '' }],
spacesAfterPunctuationMarks: [{ reg: new RegExp(/(,|\.)(\S)/g), shift: '$1 $2' }]
extraSpaces: [
{ reg: new RegExp(/\s+/g), shift: ' ' }, // "Extra spaces"
{ reg: new RegExp(/(^\s*)|(\s*)$/g), shift: '' },
],
spacesAfterPunctuationMarks: [{ reg: new RegExp(/(,|\.)(\S)/g), shift: '$1 $2' }],
};

@@ -171,3 +192,3 @@

focusKey: key,
focusOffset: end || start
focusOffset: end || start,
});

@@ -178,6 +199,6 @@ }

var _ref = options || {},
text = _ref.text,
key = _ref.key,
type = _ref.type,
characterList = _ref.characterList;
text = _ref.text,
key = _ref.key,
type = _ref.type,
characterList = _ref.characterList;

@@ -188,3 +209,3 @@ return new _draftJs.ContentBlock({

type: type || block.getType(),
characterList: characterList || block.getCharacterList()
characterList: characterList || block.getCharacterList(),
});

@@ -195,3 +216,3 @@ }

var acc = [];
Object.keys(options).forEach(function (key) {
Object.keys(options).forEach(function(key) {
acc.push.apply(acc, _toConsumableArray(optionRules[key]));

@@ -205,4 +226,6 @@ return acc;

function replaceTextRegex(editorState) {
var rulesArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _rules2.default;
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { extraSpaces: true };
var rulesArray =
arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _rules2.default;
var options =
arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { extraSpaces: true };

@@ -221,3 +244,3 @@ var CS = editorState.getCurrentContent();

var rule = void 0;
var match = rules.some(function (typoRule) {
var match = rules.some(function(typoRule) {
rule = typoRule;

@@ -229,4 +252,4 @@ return typoRule && typoRule.reg.exec(CSText);

var _ref2 = rule || {},
_reg = _ref2.reg,
_shift = _ref2.shift;
_reg = _ref2.reg,
_shift = _ref2.shift;

@@ -240,3 +263,3 @@ var SS = editorState.getSelection();

text: text,
key: _key
key: _key,
});

@@ -260,25 +283,39 @@

}
'use strict';
('use strict');
Object.defineProperty(exports, "__esModule", {
value: true
Object.defineProperty(exports, '__esModule', {
value: true,
});
var typoRules = [
{ reg: new RegExp(/"([^"]+)"/g), shift: '«$1»' },
{ reg: new RegExp(/(\() +/g), shift: '(' }, // "Удаление лишних пробелов
{ reg: new RegExp(/ +\)/g), shift: ')' }, // после открывающей и перед закрывающей скобкой"
{ reg: new RegExp(/(\d)( |\u00A0)(%|‰|‱)/g), shift: '$1$3' }, // "Удаление пробела перед %, ‰ и ‱"
{ reg: new RegExp(/\(r\)/gi), shift: '®' },
{ reg: new RegExp(/(copyright )?\((c|с)\)/gi), shift: '©' },
{ reg: new RegExp(/\(tm\)/gi), shift: '™' }, // "(c) → ©, (tm) → ™, (r) → ®"
{ reg: new RegExp(/<[^>]+>/g), shift: '' }, // "Удаление HTML-тегов"
{ reg: new RegExp(/(^|\D)1\/2(\D|$)/g), shift: '$1½$2' },
{ reg: new RegExp(/(^|\D)1\/4(\D|$)/g), shift: '$1¼$2' },
{ reg: new RegExp(/(^|\D)3\/4(\D|$)/g), shift: '$1¾$2' }, // "1/2 → ½, 1/4 → ¼, 3/4 → ¾"
{ reg: new RegExp(/!=/g), shift: '≠' },
{ reg: new RegExp(/<=/g), shift: '≤' },
{ reg: new RegExp(/(^|[^=])>=/g), shift: '$1≥' },
{ reg: new RegExp(/<</g), shift: '≪' },
{ reg: new RegExp(/>>/g), shift: '≫' },
{ reg: new RegExp(/~=/g), shift: '≅' },
{ reg: new RegExp(/(^|[^+])\+-/g), shift: '$1±' },
{ reg: new RegExp(/([!?]) (?=[!?])/g), shift: '$1' },
// { reg: new RegExp(/(^|[^!?:;,.…]) ([!?:;,.])(?!\))/g), shift: '$1$2' },
// { reg: new RegExp(/\n[ \t]+/g), shift: '\n' },
{ reg: new RegExp(/(^|[^.])(\.\.\.|…),/g), shift: '$1…' },
{ reg: new RegExp(/(!|\?)(\.\.\.|…)(?=[^.]|$)/g), shift: '$1..' }, // "«?…» → «?..», «!…» → «!..», «…,» → «…»"
{ reg: new RegExp(/([а-яё])(\.\.\.|…)([А-ЯЁ])/g), shift: '$1$2 $3' },
// { reg: new RegExp(/([?!]\.\.)([а-яёa-z])/gi), shift: '$1 $2' }, // "Пробел после «...», «!..» и «?..»"
{ reg: new RegExp(/[«'"„“]([^"'“]*(?:«»[^'"“]*)*)['"»“„]/g), shift: '«$1»' },
];
var typoRules = [{ reg: new RegExp(/"([^"]+)"/g), shift: '«$1»' }, { reg: new RegExp(/(\() +/g), shift: '(' }, // "Удаление лишних пробелов
{ reg: new RegExp(/ +\)/g), shift: ')' }, // после открывающей и перед закрывающей скобкой"
{ reg: new RegExp(/(\d)( |\u00A0)(%|‰|‱)/g), shift: '$1$3' }, // "Удаление пробела перед %, ‰ и ‱"
{ reg: new RegExp(/\(r\)/gi), shift: '®' }, { reg: new RegExp(/(copyright )?\((c|с)\)/gi), shift: '©' }, { reg: new RegExp(/\(tm\)/gi), shift: '™' }, // "(c) → ©, (tm) → ™, (r) → ®"
{ reg: new RegExp(/<[^>]+>/g), shift: '' }, // "Удаление HTML-тегов"
{ reg: new RegExp(/(^|\D)1\/2(\D|$)/g), shift: '$1½$2' }, { reg: new RegExp(/(^|\D)1\/4(\D|$)/g), shift: '$1¼$2' }, { reg: new RegExp(/(^|\D)3\/4(\D|$)/g), shift: '$1¾$2' }, // "1/2 → ½, 1/4 → ¼, 3/4 → ¾"
{ reg: new RegExp(/!=/g), shift: '≠' }, { reg: new RegExp(/<=/g), shift: '≤' }, { reg: new RegExp(/(^|[^=])>=/g), shift: '$1≥' }, { reg: new RegExp(/<</g), shift: '≪' }, { reg: new RegExp(/>>/g), shift: '≫' }, { reg: new RegExp(/~=/g), shift: '≅' }, { reg: new RegExp(/(^|[^+])\+-/g), shift: '$1±' }, { reg: new RegExp(/([!?]) (?=[!?])/g), shift: '$1' },
// { reg: new RegExp(/(^|[^!?:;,.…]) ([!?:;,.])(?!\))/g), shift: '$1$2' },
// { reg: new RegExp(/\n[ \t]+/g), shift: '\n' },
{ reg: new RegExp(/(^|[^.])(\.\.\.|…),/g), shift: '$1…' }, { reg: new RegExp(/(!|\?)(\.\.\.|…)(?=[^.]|$)/g), shift: '$1..' }, // "«?…» → «?..», «!…» → «!..», «…,» → «…»"
{ reg: new RegExp(/([а-яё])(\.\.\.|…)([А-ЯЁ])/g), shift: '$1$2 $3' },
// { reg: new RegExp(/([?!]\.\.)([а-яёa-z])/gi), shift: '$1 $2' }, // "Пробел после «...», «!..» и «?..»"
{ reg: new RegExp(/[«'"„“]([^"'“]*(?:«»[^'"“]*)*)['"»“„]/g), shift: '«$1»' }];
exports.default = typoRules;
//# sourceMappingURL=index.js.map
//# sourceMappingURL=index.js.map
{
"name": "draft-regex",
"version": "1.1.4",
"version": "1.1.5",
"description": "Plugin for checking text with regular expressions",

@@ -8,3 +8,3 @@ "main": "index.js",

"start": "parcel app/index.html",
"build": "babel src -o index.js --source-maps",
"build": "babel src -d build",
"prepublish": "npm run build",

@@ -11,0 +11,0 @@ "lint": "./node_modules/.bin/eslint src/"

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc