zyronon/TypeWords
Practice English, one strike, one step forward; 练习英语,一次敲击,一点进步;
Vue★ 9,427+21 that day#8 on trending
9%duplicated code · 5,932 of 65,906 lines
28clones in code
464code files of 505 scanned
7.94%duplicated over all files · 57 clones
The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code, and 1 generated file: public/libs/51.js.
Largest clones in the code
- 5560 lines in 2 placesjavascript27,390 tokens
7function isElement$1(value) { 8 return value instanceof Element; 9} 10 11/** 12 * Checks if `value` is classified as an `HTMLElement`. 13 * @param value The param to check if it is an HTMLElement 14 */ 15function isHTMLElement$1(value) { 16 return value instanceof HTMLElement;First 10 of 5560 lines.
- 81 lines in 2 placestsx571 tokensapp/components/article/TypingWord.vue:31–111app/components/practice-sentences/TypingArticleWord.vue:38–125
31 return [isHide, isHighLight] 32}) 33 34const list = $computed(() => { 35 let t = [] 36 let right = '' 37 let wrong = '' 38 if (props.word.input.length) { 39 if (props.word.input.length === props.word.word.length) { 40 if (38 return [isHide, isHighLight, isHighlightWordsMask] 39}) 40 41// watchEffect(() => { 42// if (props.word.word === 'Calcium') { 43// // console.log('props.word.word', props.word.word, isHighlightWordsMask,isHighLight, props.isHighLight, isHide) 44// console.log('props.word.word', !props.isTyping, props.isHighLight, props.word.type === PracticeArticleWordType.Word) 45// } 46// }) 47First 10 of 81 lines, the second copy on the right.
- 56 lines in 2 placeshtml146 tokens
412<li>{{ $t('copy_and_split') }}</li> 413<li> 414 {{ $t('click') }} <span class="color-red font-bold">{{ $t('split_sentence') }}</span> 415 {{ $t('auto_split') }}<span class="color-red font-bold"> {{ $t('or') }}</span> 416 {{ $t('manual_split') }} 417</li> 418<li>{{ $t('split_rule') }}</li> 419<li> 420 {{ $t('after_edit_click') }} <span class="color-red font-bold">{{ $t('apply') }}</span> 421 {{ $t('sync_to_result') }}472</li> 473<li> 474 {{ $t('click') }} <span class="color-red font-bold">{{ $t('split_sentence') }}</span> 475 {{ $t('auto_split') }}<span class="color-red font-bold"> {{ $t('or') }}</span> 476 {{ $t('manual_split') }} 477</li> 478<li>{{ $t('split_rule') }}</li> 479<li> 480 {{ $t('after_edit_click') }} 481 <span class="color-red font-bold">{{ $t('apply') }}</span> {{ $t('sync_to_result') }}First 10 of 56 lines, the second copy on the right.
7 more
- 27 lines in 2 placesscss101 tokens
- 12 lines in 2 placestypescript95 tokens
- 21 lines in 2 placestypescript78 tokens
- 9 lines in 2 placestypescript77 tokens
- 15 lines in 2 placestypescript73 tokens
- 12 lines in 2 placestypescript69 tokens
- 14 lines in 2 placestypescript69 tokens
Largest clones over all files, tests and data included
- 5560 lines in 2 placesjavascript27,390 tokens
7function isElement$1(value) { 8 return value instanceof Element; 9} 10 11/** 12 * Checks if `value` is classified as an `HTMLElement`. 13 * @param value The param to check if it is an HTMLElement 14 */ 15function isHTMLElement$1(value) { 16 return value instanceof HTMLElement;First 10 of 5560 lines.
- 23 lines in 14 placesmarkdowndocs and examples211 tokensREADME.md:1–23docs/README.de.md:1–24docs/README.es.md:1–23docs/README.fr.md:1–24docs/README.id.md:1–24and 9 more
1<h1 align=center> 2 <img src="https://github.com/user-attachments/assets/9d626e0f-0601-4640-8981-ad66d8ac4853" alt="TypeWords" style="width: 500px;"/> 3</h1> 4 5<p align="center"> 6 <a href="/README.md">English</a> | 7 <a href="/docs/README.es.md">Español</a> | 8 <a href="/docs/README.de.md">Deutsch</a> | 9 <a href="/docs/README.fr.md">Français</a> | 10 <a href="/docs/README.pt.md">Português</a> |First 10 of 23 lines.
- 6 lines in 12 placesmarkdowndocs and examples52 tokensdocs/README.de.md:29–34docs/README.es.md:28–33docs/README.fr.md:29–34docs/README.id.md:29–34docs/README.ja.md:28–33and 7 more
29[https://typewords.cc](https://typewords.cc) 30 31<img width="1920" height="1440" alt="practice words" src="/public/imgs/words.png" /> 32<img width="1920" height="1440" alt="practice articles" src="/public/imgs/articles.png" /> 33 34## Funktionsliste28[https://typewords.cc](https://typewords.cc) 29 30<img width="1920" height="1440" alt="practice words" src="/public/imgs/words.png" /> 31<img width="1920" height="1440" alt="practice articles" src="/public/imgs/articles.png" /> 32 33## Lista de funciones - 81 lines in 2 placestsx571 tokens
- 56 lines in 2 placeshtml146 tokens
By format, code only
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| typescript | 162 | 20,096 | 18 | 196 | 0.98% |
| scss | 60 | 3,430 | 4 | 56 | 1.63% |
| html | 94 | 4,438 | 2 | 26 | 0.59% |
| tsx | 6 | 1,422 | 2 | 87 | 6.12% |
| javascript | 11 | 11,662 | 1 | 5,560 | 47.68% |
| jsx | 2 | 202 | 1 | 7 | 3.47% |
| vue | 116 | 23,632 | 0 | 0 | 0% |
| bash | 9 | 644 | 0 | 0 | 0% |
| css | 3 | 206 | 0 | 0 | 0% |
| perl | 1 | 174 | 0 | 0 | 0% |
By format, all files
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| markdown | 15 | 1,406 | 27 | 392 | 27.88% |
| typescript | 164 | 20,360 | 18 | 196 | 0.96% |
| scss | 62 | 4,049 | 4 | 56 | 1.38% |
| json | 21 | 12,015 | 2 | 48 | 0.4% |
| html | 94 | 4,438 | 2 | 26 | 0.59% |
| tsx | 6 | 1,422 | 2 | 87 | 6.12% |
| javascript | 11 | 11,662 | 1 | 5,560 | 47.68% |
| jsx | 2 | 202 | 1 | 7 | 3.47% |
| vue | 116 | 23,632 | 0 | 0 | 0% |
| bash | 9 | 644 | 0 | 0 | 0% |
Trending appearances
| Day | Rank | Stars | Files | Lines | Clones | All files | Code | Health | Commit |
|---|---|---|---|---|---|---|---|---|---|
| Sep 3, 2026 | #8 | 9,427 (+21) | 505 | 80,219 | 57 | 7.94% | 9% | — | 633e179 |
Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.