Skip to content

Commit a034943

Browse files
authored
Merge pull request #24 from fink-lang/upgrade
Upgrade
2 parents 3e44c80 + 272106a commit a034943

File tree

13 files changed

+877
-1062
lines changed

13 files changed

+877
-1062
lines changed

package-lock.json

Lines changed: 716 additions & 971 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@
4646
"@babel/preset-env": "^7.12.1",
4747
"@fink/cli": "^8.0.0",
4848
"@fink/jest": "^7.0.0",
49-
"@fink/larix": "^15.2.0",
50-
"@fink/loxia": "^19.0.0",
49+
"@fink/larix": "^18.0.0",
50+
"@fink/loxia": "^21.1.0",
5151
"@fink/require-hook": "^6.0.1",
5252
"commitizen": "^4.0.5",
5353
"cz-conventional-changelog": "^3.1.0",

src/async.fnk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ sleep = fn ms:
2323

2424

2525

26-
is_async = fn obj:
27-
match obj:
26+
is_async = fn value:
27+
match value:
2828
{then: is_fn ?}: true
2929
else: false

src/fn.fnk

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{get_type} = import '@fink/js-interop/reflect.fnk'
22

33

4-
is_fn = fn obj: 'function' == get_type obj
4+
is_fn = fn value:
5+
'function' == get_type value

src/iter.fnk

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,16 @@ sort = _sort_
2121

2222

2323

24+
flatten = map items:
25+
...items
26+
27+
28+
29+
chain = fn ...iterables: fn iterable:
30+
flatten [iterable, ...iterables]
31+
32+
33+
2434
drop = fn num_items:
2535
filter , idx=0:
2636
[idx >= num_items, idx + 1]
@@ -143,16 +153,6 @@ cycle = unfold items:
143153

144154

145155

146-
flatten = map items:
147-
...items
148-
149-
150-
151-
chain = fn ...iterables: fn iterable:
152-
flatten [iterable, ...iterables]
153-
154-
155-
156156
unique = filter item, known=[]:
157157
[not item in known, [...known, item]]
158158

src/iter.test.fnk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@ describe 'performance', fn:
602602
zip ?, count 1000
603603
map [item, cntr]: {cntr, item}
604604
filter {cntr}: cntr % 2 == 0
605-
fold _, c=0: c+1
605+
fold _, c=0: c + 1
606606

607607
t2 = fn:
608608
pipe range 100:

src/json.test.fnk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ describe 'json', fn:
88
expect
99
json_to_obj
1010
'{"foo": [134, "bar"], "spam": [true, false]}'
11-
to_equal dict:
11+
to_equal rec:
1212
foo: [134, 'bar']
1313
spam: [true, false]
1414

1515
it 'serializes', fn:
1616
expect
17-
obj_to_json dict:
17+
obj_to_json rec:
1818
foo: [134, 'bar']
1919
spam: [true, false]
2020
to_equal

src/obj.fnk

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/obj.test.fnk

Lines changed: 0 additions & 48 deletions
This file was deleted.

src/rec.fnk

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{Object} = import '@fink/js-interop/globals.fnk'
2+
3+
4+
rec_keys = Object.keys
5+
6+
rec_values = Object.values
7+
8+
# TODO: remove in favour of [...kvs] = iter {}
9+
rec_key_values = Object.entries
10+
11+
key_values_to_rec = Object.fromEntries
12+
13+
14+
is_rec = fn value:
15+
match value:
16+
{constructor: Object}: true
17+
else: false

src/rec.test.fnk

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
{describe, it, expect, to_equal} = import '@fink/jest/test.fnk'
2+
{null, undefined} = import '@fink/js-interop/nullish.fnk'
3+
4+
{
5+
rec_keys, rec_values, rec_key_values, key_values_to_rec, is_rec
6+
} = import './rec.fnk'
7+
8+
9+
describe 'records', fn:
10+
it 'gets keys', fn:
11+
expect
12+
rec_keys {foo: 1, 'bar spam': 2}
13+
to_equal
14+
['foo', 'bar spam']
15+
16+
17+
it 'gets values', fn:
18+
expect
19+
rec_values {foo: 1, 'bar spam': 2}
20+
to_equal
21+
[1, 2]
22+
23+
24+
it 'gets key, values', fn:
25+
expect
26+
rec_key_values {foo: 1, 'bar spam': 2}
27+
to_equal list:
28+
['foo', 1]
29+
['bar spam', 2]
30+
31+
32+
it 'creates record from key, values', fn:
33+
expect
34+
key_values_to_rec list:
35+
['foo', 1]
36+
['bar spam', 2]
37+
to_equal
38+
{foo: 1, 'bar spam': 2}
39+
40+
41+
it 'asserts value is_rec', fn:
42+
expect
43+
is_rec {}
44+
to_equal true
45+
46+
expect
47+
is_rec 0
48+
to_equal false
49+
50+
expect
51+
is_rec 1.2345
52+
to_equal false
53+
54+
expect
55+
is_rec false
56+
to_equal false
57+
58+
expect
59+
is_rec true
60+
to_equal false
61+
62+
expect
63+
is_rec 'foo'
64+
to_equal false
65+
66+
expect
67+
is_rec []
68+
to_equal false
69+
70+
expect
71+
is_rec null
72+
to_equal false
73+
74+
expect
75+
is_rec undefined
76+
to_equal false
77+
78+

src/regex.fnk

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{new} = import '@fink/js-interop/reflect.fnk'
1+
{new, is_instance} = import '@fink/js-interop/reflect.fnk'
22
{RegExp} = import '@fink/js-interop/globals.fnk'
33

44
{raw} = import './str.fnk'
@@ -8,6 +8,16 @@ regex = fn pattern, flags='':
88
new RegExp, pattern, 'u${flags}'
99

1010

11+
12+
rx_to_str = fn value:
13+
value.source
14+
15+
16+
17+
is_rx = fn value:
18+
is_instance value, RegExp
19+
20+
1121
---
1222
Create a regex for the given raw string.
1323

@@ -31,7 +41,13 @@ rx = fn strings, ...exprs:
3141
replace_all ?, ingorables, ''
3242
replace_all ?, esc, '$1$3'
3343

34-
regex raw {raw: parts}, ...exprs
44+
45+
regex raw {raw: parts}, ... exprs | map expr:
46+
match expr:
47+
is_rx ?:
48+
expr.source
49+
else:
50+
expr
3551

3652

3753
match_all = fn str, rx:
@@ -56,3 +72,6 @@ replace_all = fn str, rx, replacement:
5672

5773

5874
matches = fn str, rx: rx.test str
75+
76+
77+

src/regex.test.fnk

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{describe, it, expect, to_equal} = import '@fink/jest/test.fnk'
22

3-
{matches, match_all, find_index, split, replace_all, replace, rx, regex} = import './regex.fnk'
3+
{matches, match_all, find_index, split, replace_all, replace, rx, is_rx, rx_to_str} = import './regex.fnk'
44

55

6-
describe 'regex', fn:
6+
describe rx, fn:
77
it 'matches single', fn:
88
expect
99
matches 'foobar', rx'.+oo.+'
@@ -52,7 +52,7 @@ describe 'regex', fn:
5252

5353

5454

55-
describe 'string templates', fn:
55+
describe 'rx expressions', fn:
5656
it 'creates a regex', fn:
5757
expect
5858
rx'\(.+?\)(foo{${1},${4}})'
@@ -71,16 +71,35 @@ describe 'string templates', fn:
7171

7272
it 'handles escaping', fn:
7373
expect
74-
rx'
74+
rx_to_str rx'
7575
\'\"`
7676
foo \# bar
7777
\${2}
7878
\\*
7979
'
80-
to_equal regex '\'"`foo # bar\\\${2}\\\\*'
80+
to_equal '\'"`foo # bar\\\${2}\\\\*'
8181

8282

8383
it 'handles spaces', fn:
8484
expect
85-
rx'[ ]{3}'
86-
to_equal regex '[ ]{3}'
85+
rx_to_str rx'[ ]{3}'
86+
to_equal '[ ]{3}'
87+
88+
89+
it 'handles nesting', fn:
90+
expect
91+
rx_to_str rx'^.+?${ rx'foo.+' }$'
92+
to_equal '^.+?foo.+$'
93+
94+
95+
96+
describe is_rx, fn:
97+
it 'asserts if value is regex', fn:
98+
expect
99+
is_rx rx'foo'
100+
to_equal true
101+
102+
expect
103+
is_rx '/foo/'
104+
to_equal false
105+

0 commit comments

Comments
 (0)