scribe-org / scribe-org/Scribe-iOS

Refactor to separate out language-specific logic

Open
#323 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

help wanted refactor
Dominant language
Swift
Stars
169
Forks
109
PR merge metrics
No merged PRs in 30d

Description

Terms
Issue

What?
This issue is for a refactor to separate language-specific logic out from the main base keyboard functionality, generally those under Keyboards/KeyboardsBase/*.swift.

Why?
Keeping the codebase cleaner and organized as code may get messy/hard-to-read with language-specific logic sprinkled around, especially as more languages are added over time (and their exceptions and quirks along with them).

How?
The general initial idea is to move language-specific logic/checks into the languages' respective Keyboards/LanguageKeyboards/{language}/*.swift files. Discussion on how to implement this exactly can be done in this issue. Work can (and likely will) happen in multiple PR increments as we identify ways on how to refactor.


Other Notes:

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the language-specific logic in Keyboards/KeyboardsBase/.swift and the corresponding Keyboards/LanguageKeyboards/{language}/.swift files. Review the discussion from PR #321 and the earlier refactoring in issue #1 before choosing an incremental scope. Done means language-specific checks are separated from the base keyboard functionality across a focused, tested change.

Written by the indexing model from the issue text.

Assessment

Tech stack
ios, swift
Domain
mobile-dev
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.