scribe-org / scribe-org/Scribe-iOS
Refactor to separate out language-specific logic
Nobody has claimed this yet.
- Dominant language
- Swift
- Stars
- 169
- Forks
- 109
- PR merge metrics
- No merged PRs in 30d
Description
Terms
- I have searched open and closed issues
- I agree to follow Scribe-iOS' Code of Conduct
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:
- Initial discussion came out of from this PR thread.
- Somewhat related to https://github.com/scribe-org/Scribe-iOS/issues/1, which did some previous refactoring.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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