{"id":22962350,"url":"https://github.com/zonble/taiwanunit","last_synced_at":"2025-08-21T08:16:12.162Z","repository":{"id":44842466,"uuid":"445645937","full_name":"zonble/TaiwanUnit","owner":"zonble","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-14T11:58:49.000Z","size":27,"stargazers_count":3,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-14T13:21:57.064Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zonble.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-01-07T20:35:25.000Z","updated_at":"2025-08-14T11:58:53.000Z","dependencies_parsed_at":"2022-08-28T04:52:15.814Z","dependency_job_id":null,"html_url":"https://github.com/zonble/TaiwanUnit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zonble/TaiwanUnit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zonble%2FTaiwanUnit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zonble%2FTaiwanUnit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zonble%2FTaiwanUnit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zonble%2FTaiwanUnit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zonble","download_url":"https://codeload.github.com/zonble/TaiwanUnit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zonble%2FTaiwanUnit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271448405,"owners_count":24761441,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-21T02:00:08.990Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-14T19:16:35.000Z","updated_at":"2025-08-21T08:16:12.157Z","avatar_url":"https://github.com/zonble.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TaiwanUnits\n\n[![CI](https://github.com/zonble/TaiwanUnit/actions/workflows/ci.yml/badge.svg)](https://github.com/zonble/TaiwanUnit/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/zonble/TaiwanUnit/branch/main/graph/badge.svg)](https://codecov.io/gh/zonble/TaiwanUnit)\n\nA Swift Package Manager library that provides Traditional Chinese (繁體中文) aliases and extensions for Foundation's unit measurement classes. TaiwanUnits includes traditional Taiwanese units alongside standard metric and imperial units with Chinese names, making it easy to work with measurements in Taiwan and Chinese-speaking contexts.\n\n## Table of Contents\n\n- [Features](#features)\n- [Requirements](#requirements)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Available Units](#available-units)\n  - [Length Units (長度單位)](#length-units-長度單位)\n  - [Mass Units (質量單位)](#mass-units-質量單位)\n  - [Area Units (面積單位)](#area-units-面積單位)\n  - [Temperature Units (溫度單位)](#temperature-units-溫度單位)\n  - [Pressure Units (壓力單位)](#pressure-units-壓力單位)\n- [Traditional Taiwan Units](#traditional-taiwan-units)\n- [Examples](#examples)\n- [Building and Testing](#building-and-testing)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Features\n\n- **Chinese Unit Names**: Traditional Chinese aliases for all standard Foundation measurement units\n- **Traditional Taiwan Units**: Historic Taiwanese measurement units like 台斤, 台兩, 坪, 甲, and 分\n- **Internet Culture Units**: Fun units like 鄉民 (30cm, representing an average person's foot)\n- **Full Foundation Integration**: Works seamlessly with Foundation's `Measurement` and `Unit` classes\n- **Type Safety**: Uses Swift's strong typing system with `typealias` for Chinese unit names\n- **Comprehensive Testing**: 77+ tests ensuring accurate conversions\n- **Zero Dependencies**: Pure Swift implementation with no external dependencies\n\n## Requirements\n\n- **Swift**: 5.5 or later\n- **Platforms**: \n  - macOS 10.12+\n  - iOS 10.0+\n  - tvOS 10.0+\n  - watchOS 3.0+\n- **Xcode**: 13.0+ (for development)\n\n## Installation\n\n### Swift Package Manager\n\nAdd TaiwanUnits to your project using Swift Package Manager. In Xcode:\n\n1. Go to File → Add Package Dependencies...\n2. Enter the repository URL: `https://github.com/zonble/TaiwanUnit.git`\n3. Choose the version or branch you want to use\n4. Add to your target\n\nOr add it to your `Package.swift` file:\n\n```swift\ndependencies: [\n    .package(url: \"https://github.com/zonble/TaiwanUnit.git\", from: \"1.0.0\")\n],\ntargets: [\n    .target(\n        name: \"YourTarget\",\n        dependencies: [\"TaiwanUnits\"]\n    )\n]\n```\n\n## Usage\n\nImport the library and start using Chinese unit names with Foundation's `Measurement` class:\n\n```swift\nimport Foundation\nimport TaiwanUnits\n\n// Create measurements using Chinese unit names\nlet height = Measurement(value: 170, unit: 長度單位.公分)\nlet weight = Measurement(value: 1.2, unit: 質量單位.台斤)\nlet area = Measurement(value: 30, unit: 面積單位.坪)\n\n// Convert between units\nlet heightInMeters = height.converted(to: 長度單位.公尺)\nlet weightInKilograms = weight.converted(to: 質量單位.公斤)\nlet areaInSquareMeters = area.converted(to: 面積單位.平方公尺)\n\nprint(\"Height: \\(heightInMeters)\") // Height: 1.7 m\nprint(\"Weight: \\(weightInKilograms)\") // Weight: 0.72 kg\nprint(\"Area: \\(areaInSquareMeters)\") // Area: 99.1737 m²\n```\n\n## Available Units\n\n### Length Units (長度單位)\n\nTaiwanUnits provides Chinese names for all standard length units plus traditional Taiwan units:\n\n**Metric Units:**\n- `公里` - kilometers\n- `公尺` - meters  \n- `公寸` - decimeters\n- `公分` - centimeters\n- `公厘` - millimeters\n- `微米` - micrometers\n- `納米` / `奈米` - nanometers\n\n**Imperial Units:**\n- `英哩` - miles\n- `碼` - yards\n- `英呎` - feet\n- `英吋` - inches\n\n**Astronomical Units:**\n- `光年` - light years\n- `天文單位` - astronomical units\n\n**Traditional Taiwan Units:**\n- `鄉民` - \"netizen\" unit (30 cm) - A humorous internet culture reference\n\n### Mass Units (質量單位)\n\n**Metric Units:**\n- `公噸` - metric tons\n- `公斤` - kilograms\n- `公克` - grams\n- `毫克` - milligrams\n\n**Imperial Units:**\n- `英磅` - pounds\n- `盎司` - ounces\n\n**Traditional Taiwan Market Units:**\n- `台斤` - Taiwan catty (600g) - Traditional market weight unit\n- `台兩` - Taiwan tael (37.5g) - 1/16 of a 台斤\n- `市斤` - Chinese catty (500g) - Mainland Chinese market unit\n\n### Area Units (面積單位)\n\n**Metric Units:**\n- `平方公里` - square kilometers\n- `公頃` - hectares (10,000 m²)\n- `公畝` - ares (100 m²)\n- `平方公尺` - square meters\n- `平方公分` - square centimeters\n- `平方公厘` - square millimeters\n\n**Traditional Taiwan Land Units:**\n- `甲` - jia (9,699.17 m²) - Large agricultural land unit\n- `分` - fen (969.917 m²) - 1/10 of a 甲\n- `坪` - ping (3.30579 m²) - Common real estate unit, about 2 tatami mats\n\n### Temperature Units (溫度單位)\n\n- `開氏` - Kelvin\n- `攝氏` - Celsius\n- `華氏` - Fahrenheit\n\n### Pressure Units (壓力單位)\n\n- `十億帕` - gigapascals\n- `百萬帕` - megapascals  \n- `千帕` - kilopascals\n- `百帕` - hectopascals\n- `巴` - bars\n- `毫巴` - millibars\n\n## Traditional Taiwan Units\n\nTaiwan has a rich history of traditional measurement units that are still used today, especially in markets and real estate:\n\n### Market Weight Units\n- **台斤 (Taiwan Catty)**: 600 grams - Still commonly used in traditional markets\n- **台兩 (Taiwan Tael)**: 37.5 grams - 1/16 of a 台斤, used for precious items\n- **市斤 (Chinese Catty)**: 500 grams - Used in mainland China and sometimes in Taiwan\n\n### Land Measurement Units\n- **坪 (Ping)**: 3.30579 m² - The most common unit for real estate in Taiwan\n- **分 (Fen)**: 969.917 m² - Used for agricultural land, 1/10 of a 甲\n- **甲 (Jia)**: 9,699.17 m² - Large agricultural land unit, about 2.4 acres\n\n### Internet Culture Units\n- **鄉民 (Netizen)**: 30 cm - A humorous unit representing the approximate length of an average person's foot, popular in Taiwan's online communities\n\n## Examples\n\n### Traditional Market Shopping\n\n```swift\nimport TaiwanUnits\n\n// Buying vegetables at a traditional market\nlet vegetables = Measurement(value: 2, unit: 質量單位.台斤)\nlet inKilograms = vegetables.converted(to: 質量單位.公斤)\nprint(\"Vegetables: \\(inKilograms)\") // 1.2 kg\n\n// Converting between Taiwan tael and grams\nlet gold = Measurement(value: 5, unit: 質量單位.台兩)\nlet inGrams = gold.converted(to: 質量單位.公克)\nprint(\"Gold: \\(inGrams)\") // 187.5 g\n```\n\n### Real Estate Calculations\n\n```swift\n// Apartment size in Taiwan\nlet apartment = Measurement(value: 25, unit: 面積單位.坪)\nlet inSquareMeters = apartment.converted(to: 面積單位.平方公尺)\nprint(\"Apartment: \\(inSquareMeters)\") // 82.64 m²\n\n// Land area calculations\nlet farmland = Measurement(value: 2, unit: 面積單位.甲)\nlet inHectares = farmland.converted(to: 面積單位.公頃)\nprint(\"Farmland: \\(inHectares)\") // 1.94 hectares\n```\n\n### Temperature Conversions\n\n```swift\n// Weather reporting\nlet temperature = Measurement(value: 25, unit: 溫度單位.攝氏)\nlet inFahrenheit = temperature.converted(to: 溫度單位.華氏)\nprint(\"Temperature: \\(inFahrenheit)\") // 77°F\n```\n\n### Fun with Internet Culture Units\n\n```swift\n// Measuring height in \"netizen\" units\nlet height = Measurement(value: 6, unit: 長度單位.鄉民)\nlet inCentimeters = height.converted(to: 長度單位.公分)\nprint(\"Height: \\(inCentimeters)\") // 180 cm\n```\n\n## Building and Testing\n\n### Building the Package\n\n```bash\nswift build\n```\n\n### Running Tests\n\n```bash\nswift test\n```\n\nThe project includes comprehensive tests (77+ test cases) covering:\n- Unit alias verification\n- Conversion accuracy testing\n- Traditional Taiwan unit calculations\n- Cross-unit conversions\n\n### Clean Build\n\n```bash\nswift package clean\n```\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.\n\n### Development Setup\n\n1. Clone the repository\n2. Open in Xcode or your preferred Swift development environment\n3. Run `swift build` to ensure everything compiles\n4. Run `swift test` to verify all tests pass\n5. Make your changes and add tests as needed\n\n### Code Coverage Setup (Maintainers)\n\nThis project uses [Codecov](https://codecov.io) for code coverage reporting. The CI workflow automatically generates and uploads coverage reports.\n\n**For repository maintainers to enable codecov uploads:**\n\n1. Go to [codecov.io/gh/zonble/TaiwanUnit](https://codecov.io/gh/zonble/TaiwanUnit)\n2. Sign in with GitHub and enable the repository\n3. Copy the upload token from the repository settings\n4. In GitHub repository settings, go to \"Secrets and variables\" → \"Actions\"\n5. Add a new repository secret named `CODECOV_TOKEN` with the upload token value\n\n**Note**: Coverage reports are still generated and available as workflow artifacts even without the codecov token configured.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\nCopyright (c) 2025 Weizhong Yang a.k.a zonble\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzonble%2Ftaiwanunit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzonble%2Ftaiwanunit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzonble%2Ftaiwanunit/lists"}