Skip to content

Commit 3132926

Browse files
authored
Merge pull request #694 from Milly/Prelude-is_infinity
Prelude: Add `is_infinity()`.
2 parents e92bd44 + 1d397f4 commit 3132926

File tree

3 files changed

+45
-0
lines changed

3 files changed

+45
-0
lines changed

autoload/vital/__vital__/Prelude.vim

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,25 @@ function! s:is_float(Value) abort
6161
return type(a:Value) ==# s:__TYPE_FLOAT
6262
endfunction
6363

64+
" Infinity
65+
if exists('*isinf')
66+
function! s:is_infinity(Value) abort
67+
return isinf(a:Value)
68+
endfunction
69+
else
70+
function! s:is_infinity(Value) abort
71+
if type(a:Value) ==# s:__TYPE_FLOAT
72+
let s = string(a:Value)
73+
if s ==# 'inf'
74+
return 1
75+
elseif s ==# '-inf'
76+
return -1
77+
endif
78+
endif
79+
return 0
80+
endfunction
81+
endif
82+
6483

6584
function! s:truncate_skipping(str, max, footer_width, separator) abort
6685
call s:_warn_deprecated('truncate_skipping', 'Data.String.truncate_skipping')

doc/vital/Prelude.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,19 @@ is_float({value}) *Vital.Prelude.is_float()*
7171
:echo s:P.is_float("hoge")
7272
< 0
7373

74+
is_infinity({value}) *Vital.Prelude.is_infinity()*
75+
Return 1 if {expr} is a positive infinity, or -1 a negative
76+
infinity, otherwise 0.
77+
Examples: >
78+
:let s:V = vital#{plugin-name}#new()
79+
:let s:P = s:V.import('Prelude')
80+
:echo s:P.is_infinity(1.0 / 0)
81+
< 1 >
82+
:echo s:P.is_infinity(-1.0 / 0)
83+
< -1 >
84+
:echo s:P.is_infinity(123.0)
85+
< 0
86+
7487
is_string({value}) *Vital.Prelude.is_string()*
7588
Returns non-zero if {value} is a String (|expr-string|), zero otherwise.
7689

test/Prelude.vimspec

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,19 @@ Describe Prelude
3838
End
3939
End
4040

41+
Describe .is_infinity()
42+
It checks if the argument is a float that infinity
43+
Assert Equals(P.is_infinity(1.0/0), 1)
44+
Assert Equals(P.is_infinity(-1.0/0), -1)
45+
Assert Equals(P.is_infinity(0.0/0), 0)
46+
Assert Equals(P.is_infinity(3.14159), 0)
47+
Assert Equals(P.is_infinity(""), 0)
48+
Assert Equals(P.is_infinity(function('tr')), 0)
49+
Assert Equals(P.is_infinity([]), 0)
50+
Assert Equals(P.is_infinity({}), 0)
51+
End
52+
End
53+
4154
Describe .is_string()
4255
It checks if the argument is a string
4356
Assert Equals(P.is_string(3), 0)

0 commit comments

Comments
 (0)