quantify 0.12.0
quantify: ^0.12.0 copied to clipboard
A type-safe unit of measurement converter library for Dart with elegant syntax, high precision, and optimal performance.
Changelog #
All notable changes to the quantify package will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.12.0 #
Added #
- Major Feature: Comprehensive Constants Library.
- A library of over 100 type-safe constants, organized into three categories: PhysicalConstants, AstronomicalConstants, and EngineeringConstants.
- Constants are represented as Quantity objects wherever possible (e.g., PhysicalConstants.speedOfLight is a Speed object, AstronomicalConstants.standardGravity is an Acceleration object).
- Added convenience methods for common scientific and engineering formulas, such as PhysicalConstants.photonEnergy(), AstronomicalConstants.escapeVelocity(), and EngineeringConstants.mechanicalStress().
- Constants are accessible via a new, separate import: package:quantify/constants.dart.
0.11.0 #
2025-07-27
Changed #
- Conceptual Refinement of
FrequencyandAngularVelocity:Frequencyis now the comprehensive quantity for all periodic units (inverse time, T⁻¹), including rotational rates.AngularVelocityremains a distinct, specialized type for rotational mechanics to ensure semantic type safety.
Added #
FrequencyUnit Expansion: Addedrad/s(radian per second) anddeg/s(degree per second) toFrequency.- Interoperability Between
FrequencyandAngularVelocity:- Added a safe
.asFrequencygetter toAngularVelocityfor direct conversion to aFrequencyobject. - Added a guarded
.asAngularVelocitygetter toFrequencythat only converts compatible rotational units (rpm,rad/s,Hz, etc.) and throws anUnsupportedErrorfor non-rotational units (likebpmorMHz), preventing logical errors in calculations.
- Added a safe
0.10.0 #
2025-07-26
-
New Quantities:
EnergyandPower- Added the
Energyquantity with common units (J, kJ, MJ, kWh, kcal, eV, Btu). - Added the
Powerquantity with a comprehensive set of SI, engineering, and CGS units (W, kW, MW, GW, hp, PS, Btu/h, erg/s).
- Added the
-
Expanded Unit Coverage
- Added new units to
Acceleration(cm/s²),Force(gf, pdl), andElectricCharge(mAh, statC, abC)
- Added new units to
0.9.0 #
2025-07-22
- Added relational operators (
>,<,>=,<=) for all quantities. Comparisons are now more readable (e.g.,1.m > 99.cm). - Added
isEquivalentTo()method for explicit magnitude equality checks (e.g.,1.m.isEquivalentTo(100.cm)).
0.8.0 #
2025-07-22
- New Derived Quantities
Frequencywith units (Hz,MHz,GHz,THz,rpm, etc.).ElectricChargewith units (C,Ah,e,µC, etc.).SolidAnglewith units (sr,deg²,sp).
0.7.0 #
2025-07-16
- New Derived Quantity
Areawith units (m²,km²,ha,acre,yd²,ft², etc.).Volumewith comprehensive SI, US customary, and cooking units (m³,L,gal,fl-oz,tsp, etc.).
0.6.0 #
2025-07-05
- New Derived Quantities
Speed: Addedm/s,km/h,mph,kn,ft/s.Acceleration: Addedm/s²,g(standard gravity),km/h/s.Force: AddedN(Newton),lbf,dyn,kgf,kN.
0.5.0 #
2025-06-29
Added #
-
Expanded Unit Coverage:
- Length: Added Mm (megametre) and Gm (gigametre).
- Mass: Added Mg (megagram) and Gg (gigagram).
- Time: Added full range of SI prefixes (Gs to cs) and calendar units (fortnight, decade, century).
- ElectricCurrent: Added CGS units statA (statampere) and abA (abampere/biot).
-
Granular Exports: Added separate library entry points (e.g., package:quantify/length.dart) to allow for explicit imports and prevent namespace conflicts.
0.4.0 #
2025-06-23
Added #
-
New Quantity:
AngleAnglequantityAngleUnit:radian(rad): The SI-derived unit, used as the base for conversions.degree(°): The most common unit for angles.gradian(grad): Unit used in surveying (400 grad in a circle).revolution(rev): Represents a full circle or turn.arcminute('): High-precision unit (1/60 of a degree).arcsecond("): High-precision unit (1/60 of an arcminute).milliradian(mrad): Common in optics and ballistics.
- Standard arithmetic operators (
+,-,*,/) forAngle.
-
New Quantity:
AngularVelocityAngularVelocityquantity - represents rotational speed.AngularVelocityUnit:radianPerSecond(rad/s): The SI-derived unit.degreePerSecond(°/s).revolutionPerMinute(rpm): A widely used unit for rotational speed.revolutionPerSecond(rps).
- Standard arithmetic operators for
AngularVelocity.
0.3.0 #
2025-06-21
Added #
- Expanded Unit Coverage:
- Length:
- SI Prefixes:
hm(hectometer),dam(decameter),dm(decimeter),μm(micrometer),nm(nanometer),pm(picometer),fm(femtometer). - Astronomical:
AU(astronomical unit),ly(light year),pc(parsec). - Special:
Å(ångström).
- SI Prefixes:
- Mass:
- SI Prefixes:
hg(hectogram),dag(decagram),dg(decigram),cg(centigram),μg(microgram),ng(nanogram). - Imperial/US:
short ton,long ton. - Special:
u(atomic mass unit),ct(carat).
- SI Prefixes:
- Time:
- SI Prefixes:
μs(microsecond),ns(nanosecond),ps(picosecond). - Calendar:
wk(week),mo(month),yr(year).
- SI Prefixes:
- Temperature:
- Absolute Scale:
°R(rankine).
- Absolute Scale:
- Length:
0.2.0 #
2025-06-16
Added #
- New SI Base Quantity Types (completing all 7 SI base units):
- Mass:
Massclass andMassUnitenum (kg,g,mg,t(tonne),lb,oz,st(stone),slug).
- Amount of Substance (Molar Amount):
MolarAmountclass andMolarUnitenum (mol,mmol,µmol,nmol,pmol,kmol).
- Electric Current:
Currentclass andCurrentUnitenum (A,mA,µA,nA,kA).
- Luminous Intensity:
LuminousIntensityclass andLuminousIntensityUnitenum (cd,mcd,kcd).
- Mass:
0.1.0 #
2025-06-12
Added #
- Initial Release of
quantifyv0.1.0 - Core Functionality:
- Type-safe
Quantitybase class for representing physical quantities with a value and a unit. Unitinterface for defining conversion factors and symbols.- Immutable
Quantityobjects. doubleprecision for quantity values.- Elegant API with extension methods on
numfor quantity creation (e.g.,10.m,20.celsius). - Extension methods on
Quantityfor easy value retrieval in target units (e.g.,length.inKm) and for obtaining newQuantityobjects in target units (e.g.,length.asKm). - Configurable
toString()method onQuantityobjects supporting:- Conversion to a
targetUnitbefore formatting. - Fixed
fractionDigits. - Option to
showUnitSymbol. - Custom
unitSymbolSeparator. - Locale-aware number formatting via
localeparameter (usingintlpackage). - Full control over number formatting via
numberFormatparameter (usingintlpackage).
- Conversion to a
- Arithmetic operations (
+,-,*by scalar,/by scalar) for most quantities. - Specialized arithmetic for
Temperature(differenceT - Treturnsdouble, ratioT / Treturnsdouble). Comparableinterface implementation for sorting quantities by magnitude.==operator override for value and unit equality.
- Type-safe
- Supported Quantity Types (with units and extensions):
- Length: Meter (m), Kilometer (km), Centimeter (cm), Millimeter (mm), Inch (in), Foot (ft), Yard (yd), Mile (mi), Nautical Mile (nmi).
- Time: Second (s), Millisecond (ms), Minute (min), Hour (h), Day (d).
- Temperature: Kelvin (K), Celsius (°C), Fahrenheit (°F). Handles affine conversions correctly.
- Pressure: Pascal (Pa), Atmosphere (atm), Bar (bar), PSI (psi), Torr, mmHg, inHg, kPa, hPa, mbar, cmH₂O, inH₂O.
