summaryrefslogtreecommitdiff
path: root/Data/BuiltIn/Libraries/luafun/tests/filtering.lua
blob: a5fdfe24e5fe7560a71a4e8a90fb1fd1fd3a2b06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
--------------------------------------------------------------------------------
-- filter
--------------------------------------------------------------------------------

dump(filter(function(x) return x % 3 == 0 end, range(10)))
--[[test
3
6
9
--test]]

dump(filter(function(x) return x % 3 == 0 end, range(0)))
--[[test
--test]]


dump(take(5, filter(function(i, x) return i % 3 == 0 end,
    enumerate(duplicate('x')))))
--[[test
3 x
6 x
9 x
12 x
15 x
--test]]

function filter_fun(a, b, c)
    if a % 16 == 0 then
        return true
    else
        return false
    end
end

function test3(a, b, c)
    return a, c, b
end

n = 50
dump(filter(filter_fun, map(test3, zip(range(0, n, 1),
     range(0, n, 2), range(0, n, 3)))))
--[[test
0 0 0
16 48 32
--test]]

print(remove_if == filter) -- an alias
--[[test
true
--test]]

--------------------------------------------------------------------------------
-- grep
--------------------------------------------------------------------------------

lines_to_grep = {
    [[Lorem ipsum dolor sit amet, consectetur adipisicing elit, ]],
    [[sed do eiusmod tempor incididunt ut labore et dolore magna ]],
    [[aliqua. Ut enim ad minim veniam, quis nostrud exercitation ]],
    [[ullamco laboris nisi ut aliquip ex ea commodo consequat.]],
    [[Duis aute irure dolor in reprehenderit in voluptate velit ]],
    [[esse cillum dolore eu fugiat nulla pariatur. Excepteur sint ]],
    [[occaecat cupidatat non proident, sunt in culpa qui officia ]],
    [[deserunt mollit anim id est laborum.]]
}

dump(grep("lab", lines_to_grep))
--[[test
sed do eiusmod tempor incididunt ut labore et dolore magna 
ullamco laboris nisi ut aliquip ex ea commodo consequat.
deserunt mollit anim id est laborum.
--test]]

lines_to_grep = {
    [[Emily]],
    [[Chloe]],
    [[Megan]],
    [[Jessica]],
    [[Emma]],
    [[Sarah]],
    [[Elizabeth]],
    [[Sophie]],
    [[Olivia]],
    [[Lauren]]
}

dump(grep("^Em", lines_to_grep))
--[[test
Emily
Emma
--test]]

--------------------------------------------------------------------------------
-- partition
--------------------------------------------------------------------------------

dump(zip(partition(function(i, x) return i % 3 == 0 end, range(10))))
--[[test
3 1
6 2
9 4
--test]]