| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- export class BasicInplaceReplace {
- constructor() {
- this._defaultValueSet = [
- ['true', 'false'],
- ['True', 'False'],
- ['Private', 'Public', 'Friend', 'ReadOnly', 'Partial', 'Protected', 'WriteOnly'],
- ['public', 'protected', 'private'],
- ];
- }
- navigateValueSet(range1, text1, range2, text2, up) {
- if (range1 && text1) {
- const result = this.doNavigateValueSet(text1, up);
- if (result) {
- return {
- range: range1,
- value: result
- };
- }
- }
- if (range2 && text2) {
- const result = this.doNavigateValueSet(text2, up);
- if (result) {
- return {
- range: range2,
- value: result
- };
- }
- }
- return null;
- }
- doNavigateValueSet(text, up) {
- const numberResult = this.numberReplace(text, up);
- if (numberResult !== null) {
- return numberResult;
- }
- return this.textReplace(text, up);
- }
- numberReplace(value, up) {
- const precision = Math.pow(10, value.length - (value.lastIndexOf('.') + 1));
- let n1 = Number(value);
- const n2 = parseFloat(value);
- if (!isNaN(n1) && !isNaN(n2) && n1 === n2) {
- if (n1 === 0 && !up) {
- return null; // don't do negative
- // } else if(n1 === 9 && up) {
- // return null; // don't insert 10 into a number
- }
- else {
- n1 = Math.floor(n1 * precision);
- n1 += up ? precision : -precision;
- return String(n1 / precision);
- }
- }
- return null;
- }
- textReplace(value, up) {
- return this.valueSetsReplace(this._defaultValueSet, value, up);
- }
- valueSetsReplace(valueSets, value, up) {
- let result = null;
- for (let i = 0, len = valueSets.length; result === null && i < len; i++) {
- result = this.valueSetReplace(valueSets[i], value, up);
- }
- return result;
- }
- valueSetReplace(valueSet, value, up) {
- let idx = valueSet.indexOf(value);
- if (idx >= 0) {
- idx += up ? +1 : -1;
- if (idx < 0) {
- idx = valueSet.length - 1;
- }
- else {
- idx %= valueSet.length;
- }
- return valueSet[idx];
- }
- return null;
- }
- }
- BasicInplaceReplace.INSTANCE = new BasicInplaceReplace();
|