Add new fix en-ru keyboard tool

This commit is contained in:
Illya Marchenko 2023-11-28 11:03:46 +02:00
parent 91da4c34a5
commit c9f58d1132
Signed by: stuzer05
GPG Key ID: A6ABAAA9268F9F4F
4 changed files with 75 additions and 4 deletions

@ -29,6 +29,7 @@ export default {
'home': 'Home', 'home': 'Home',
}, },
'Strings': { 'Strings': {
'fix_run_en_keyboard': 'Fix ru-en keyboard',
'str_to_lower': 'Str to lower', 'str_to_lower': 'Str to lower',
'str_to_upper': 'Str to upper', 'str_to_upper': 'Str to upper',
}, },

@ -25,6 +25,11 @@ const router = createRouter({
name: 'str_to_lower', name: 'str_to_lower',
component: () => import('../views/StrToLower.vue'), component: () => import('../views/StrToLower.vue'),
}, },
{
path: '/fix_run_en_keyboard',
name: 'fix_run_en_keyboard',
component: () => import('../views/FixRuEnKeyboard.vue'),
},
/** /**
* SQL manipulation * SQL manipulation

@ -0,0 +1,66 @@
<template>
<h2 class="tool-title">Fix ru-en keyboard</h2>
<hr class="mt-5 mb-5">
<div class="input-group">
<label for="data">Data</label>
<textarea id="data" v-model="toolData.data" style="height: 150px"></textarea>
</div>
<div class="input-group">
<label>Mode</label>
<div>
<input id="keyboard_mode_en_ru" value="en-ru" name="keyboard_mode" v-model="toolData.keyboardMode" type="radio"> <label for="keyboard_mode_en_ru">en -> ru</label><br>
<input id="keyboard_mode_ru_en" value="ru-en" name="keyboard_mode" v-model="toolData.keyboardMode" type="radio"> <label for="keyboard_mode_ru_en">ru -> en</label>
</div>
</div>
<hr class="mt-5 mb-5">
<div class="input-group">
<label for="result">Result</label>
<textarea id="result" v-model="toolResult" style="height: 150px"></textarea>
</div>
</template>
<script>
import { unproxy } from "@/utils/unproxy";
export default {
data() {
return {
toolData: {
data: '',
keyboardMode: 'en-ru',
},
dictionary: {
'en-ru': '`~!@#$%^&qwertyuiop[]asdfghjkl;\'zxcvbnm,./QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>?',
'ru-en': 'ёЁ!"№;%:?йцукенгшщзхъфывапролджэячсмитьбю.ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,',
},
};
},
computed: {
toolResult() {
let data = unproxy(this.toolData.data).split('');
const dict = this.dictionary[this.toolData.keyboardMode];
const dictOpposite = this.dictionary[this.toolData.keyboardMode === 'en-ru' ? 'ru-en' : 'en-ru'];
for (let i = 0; i < data.length; i++) {
const dictPos = dict.indexOf(data[i]);
if (dictPos === -1) continue;
data[i] = unproxy(dictOpposite[dictPos]);
}
return data.join('');
},
},
}
</script>
<style lang="scss">
</style>

@ -29,7 +29,7 @@
<div class="input-group"> <div class="input-group">
<label for="chunk_by">Chunk by</label> <label for="chunk_by">Chunk by</label>
<input id="chunk_by" v-model="toolData.chunkBy" placeholder="900" type="number"> <input id="chunk_by" v-model="toolData.chunkBy" placeholder="900" min="1" type="number">
</div> </div>
<hr class="mt-5 mb-5"> <hr class="mt-5 mb-5">
@ -82,13 +82,12 @@ export default {
data[i] = value; data[i] = value;
} }
data = arrayChunk(data, this.toolData.chunkBy); const chunkBy = this.toolData.chunkBy > 0 ? this.toolData.chunkBy : 1;
data = arrayChunk(data, chunkBy);
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
let chunk = data[i]; let chunk = data[i];
data[i] = '(' + chunk.join(',') + ')'; data[i] = '(' + chunk.join(',') + ')';
} }