Skip to content

Commit 0180dda

Browse files
committed
feat(num): add is_num func
1 parent 57a22d6 commit 0180dda

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

src/num.fnk

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
{parseFloat, parseInt, Number, isNaN, isFinite} = import '@fink/js-interop/globals'
2+
{is_instance, get_type} = import '@fink/js-interop/reflect'
3+
4+
15
# TODO: should that live in str?
26
parse_float = fn str: parseFloat str
37

@@ -19,3 +23,10 @@ is_not_a_num = isNaN
1923
is_finite = isFinite
2024

2125
base_n = fn num, radix: num.toString radix
26+
27+
28+
is_num = fn num:
29+
match num:
30+
'number' == get_type ?: true
31+
is_instance ?, Number: true
32+
else: false

src/num.test.fnk

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
{describe, it, expect, to_equal} = import '@fink/jest'
2+
{new} = import '@fink/js-interop/reflect'
3+
{Number} = import '@fink/js-interop/globals'
24

3-
{parse_int, parse_float, base_n} = import './num'
5+
{parse_int, parse_float, base_n, is_num} = import './num'
46

57

68
describe 'numbers', fn:
@@ -38,3 +40,20 @@ describe 'numbers', fn:
3840
base_n 1234, 36
3941
to_equal
4042
'ya'
43+
44+
45+
46+
describe 'is_num', fn:
47+
it 'is a number', fn:
48+
expect
49+
is_num 1234
50+
to_equal true
51+
52+
expect
53+
is_num new Number, 1234
54+
to_equal true
55+
56+
it 'is not a number', fn:
57+
expect
58+
is_num '1234'
59+
to_equal false

0 commit comments

Comments
 (0)