about summary refs log tree commit diff stats
path: root/src/tmp.lil
blob: 60fbb5393c37ab939c4da6346a8caeec733b0b80 (plain) (blame)
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
103
104
105
106
107
108
109
110
111
112
113
# lil includes a fun query system as well as language features for both
# functional programming and vector programming -- this invites interesting
# opportunities for applications built around little databases/datasets and
# the manipulation and querying of that data! 

# I'm not 100% certain what I'm going to build with these features, yet, but
# I will use this as a space to explore what lil has to offer.

# people.name:"Alice","Sam","Thomas","Sara","Walter"
# people.age:25,28,40,34,43
# people.job:"Chef","Sous Chef","Baker","Front of house","Baker"
# people:table people

# t:select from people

# show[t]

# s:select where ("S%m" parse name) from people

# show[s]

# d:select where ("Baker" = job) from people

# show[d]

# a:select name where ("Alice" = name) from people

# show[a]

# w:update job:"Amazing Chef" where job = "Chef" from people

# Show[w]

# l:insert name:"John" job:"Critic" age:32 into people

# show[l]

# # save:writecsv[l "sis" ","] # where sis formats the column type, here string integer string -- the other option is boolean. 

# # write["test.csv" save]

# on cons x y do
# 	x,y
# end

# breakfast: insert food:("Eggs","Pancakes","Grapefruit") quantity:(3,4,1) tasty:(1,1,0) into 0 # NOTE, 0 here could also be the name of the variable, so, in this example, breakfast

# show[breakfast]

# needle:   "apple"
# haystack: ("frog","apple","chicken","toadstool","apple","rice","fish")

# filter:count needle take haystack
# spread_conforming:sum needle = haystack
# print[filter]
# print[spread_conforming]


# spent a good bit of time playing with lil and reviewing the docs. I am now
# totally smitten and excited to use lil. 

# a basic sketch of the data table at the center of the action

# catalogue.entry_type
# catalogue.parent # not 100% certain how to reference another entry by id
# catalogue.title
# catalogue.body
# catalogue.reference
# catalogue.created_date
# catalogue.updated_date # does this matter? (sorta leaning towards "no")

# entry_type's 
# - link
# - note
# - folder

# every item can have 1 parent
# a parent is usually a folder

# data table wrapped in an interactive cli for adding, querying, and viewing
# input data. Input data stored as CSV between sessions

# NOTE: if input data is stored as CSV is becomes trivial to pipe in and out 
# of SQLite in the future...if that'd be desirable

# NOTE: I'm using just 1 table so that this can be easily exported as CSV...
# if it weren't for that requirement, I'd have multiple tables

# catalogue:table catalogue

# alternate syntax to make a table, 
# t: insert food:("Eggs","Pancakes","Grapefruit") quantity:(3,4,1) tasty:(1,1,0) into 0


# validate that I can write a table to disk and read it back in
# show[catalogue]
# out:writecsv[catalogue]
# show[out]
# write["test.csv" out]

# data:read["test.csv"]
# newtable:readcsv[data "sis "] # this column spec. syntax looks hilarious
# show[newtable]
# HUGE SUCCESS!


if args[2] do
	url:args[2]
	print[url]
else 
	print["\n    please pass a url as an argument\n"]
end