diff --git a/packages/flodash/lib/modules/number/clamp.dart b/packages/flodash/lib/modules/number/clamp.dart new file mode 100644 index 0000000..1c93ff9 --- /dev/null +++ b/packages/flodash/lib/modules/number/clamp.dart @@ -0,0 +1,27 @@ +/// Clamps number within the inclusive lower and upper bounds. +/// +/// Arguments +/// +/// - number (num): The number to clamp. +/// - [lower] (num): The lower bound. +/// - upper (num): The upper bound. +/// +/// Returns +/// +/// - (num): Returns the clamped number. +dynamic clamp(num number, num? lower, [num? upper]) { + if (upper == null) { + upper = lower; + if (number > upper!) { + return upper; + } + return number; + } else { + if (number > upper) { + return upper; + } else if (number < lower!) { + return lower; + } + return number; + } +} diff --git a/packages/flodash/lib/modules/number/main.dart b/packages/flodash/lib/modules/number/main.dart index 5cac874..662c782 100644 --- a/packages/flodash/lib/modules/number/main.dart +++ b/packages/flodash/lib/modules/number/main.dart @@ -1 +1,2 @@ +export 'clamp.dart'; export 'random.dart'; diff --git a/packages/flodash/lib/modules/string/starts_with.dart b/packages/flodash/lib/modules/string/starts_with.dart index 5745150..6db85a8 100644 --- a/packages/flodash/lib/modules/string/starts_with.dart +++ b/packages/flodash/lib/modules/string/starts_with.dart @@ -1,4 +1,4 @@ -///Checks if string starts with the given target string. +/// Checks if string starts with the given target string. /// /// Arguments /// diff --git a/packages/flodash/pubspec.lock b/packages/flodash/pubspec.lock index f5ea8a7..dc901ad 100644 --- a/packages/flodash/pubspec.lock +++ b/packages/flodash/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" url: "https://pub.dev" source: hosted - version: "1.17.2" + version: "1.17.1" fake_async: dependency: transitive description: @@ -59,22 +59,30 @@ packages: description: flutter source: sdk version: "0.0.0" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" matcher: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.15" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.2.0" meta: dependency: transitive description: @@ -100,10 +108,10 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.9.1" stack_trace: dependency: transitive description: @@ -140,10 +148,10 @@ packages: dependency: transitive description: name: test_api - sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.5.1" vector_math: dependency: transitive description: @@ -152,13 +160,5 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" - web: - dependency: transitive - description: - name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 - url: "https://pub.dev" - source: hosted - version: "0.1.4-beta" sdks: - dart: ">=3.1.0-185.0.dev <3.7.0" + dart: ">=3.0.0-0 <3.7.0" diff --git a/packages/flodash/test/modules/number/clamp_test.dart b/packages/flodash/test/modules/number/clamp_test.dart new file mode 100644 index 0000000..4582882 --- /dev/null +++ b/packages/flodash/test/modules/number/clamp_test.dart @@ -0,0 +1,22 @@ +import 'package:flodash/flodash.dart' as flodash; + +import 'package:flutter_test/flutter_test.dart'; + +main() { + test('lower', () { + expect(flodash.clamp(-10, -5, 5), equals(-5)); + }); + test('upper', () { + expect(flodash.clamp(10, -5, 5), equals(5)); + }); + test('in range', () { + expect(flodash.clamp(3, -5, 5), equals(3)); + }); + test('2 arguments - upper', () { + expect(flodash.clamp(12, 6), equals(6)); + }); + test('2 arguments - in range', () { + expect(flodash.clamp(4, 6), equals(4)); + expect(flodash.clamp(-500, 5), equals(-500)); + }); +}