summaryrefslogtreecommitdiff
path: root/marigold.lua
blob: 4f04052eeb9607263831684aae1290dd3ebae030 (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
-- ANTI-CAPITALIST SOFTWARE LICENSE (v 1.4)
-- 
-- Copyright (c) 2022 Kate Swanson
-- 
-- This is anti-capitalist software, released for free use by individuals and 
-- organizations that do not operate by capitalist principles.
-- 
-- Permission is hereby granted, free of charge, to any person or organization (
-- the "User") obtaining a copy of this software and associated documentation 
-- files (the "Software"), to use, copy, modify, merge, distribute, and/or sell 
-- copies of the Software, subject to the following conditions:
-- 
-- 1. The above copyright notice and this permission notice shall be included in 
-- all copies or modified versions of the Software.
-- 
-- 2. The User is one of the following:
-- 	a. An individual person, laboring for themselves
-- 	b. A non-profit organization
-- 	c. An educational institution
-- 	d. An organization that seeks shared profit for all of its members, and allows 
-- 	   non-members to set the cost of their labor
-- 
-- 3. If the User is an organization with owners, then all owners are workers and 
--    all workers are owners with equal equity and/or equal vote.
-- 
-- 4. If the User is an organization, then the User is not law enforcement or 
--    military, or working for or under either.
-- 
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY 
-- KIND, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 
-- FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE 
-- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
-- CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
-- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


local marigold = {}

marigold.get_metavars = function()
	local vars = {
		"AUTH_TYPE", "CONTENT_LENGTH",
		"CONTENT_TYPE", "GATEWAY_INTERFACE",
		"PATH_INFO", "PATH_TRANSLATED",
		"QUERY_STRING", "REMOTE_ADDR",
		"REMOTE_HOST", "REMOTE_IDENT",
		"REMOTE_USER", "REQUEST_METHOD",
		"SCRIPT_NAME", "SERVER_NAME",
		"SERVER_PORT", "SERVER_PROTOCOL",
		"SERVER_SOFTWARE"
	}	

	local metavars = {}
	for _, var in ipairs(vars) do
		metavars[string.lower(var)] = os.getenv(var)
	end
	return metavars
end


marigold.h = function(tag_type, content, tbl)
	if type(content) == 'table' and tbl == nil then
		tbl = content
		content = ''
	end

	local tag = {}
	tag.tag = tag_type
	tag.content = content
	tag.attributes = {}
	tag.children = {}

	if tbl then
		-- add attributes
		for k, v in pairs(tbl) do
			if type(k) == 'string' then
				tag.attributes[k] = v
			end
		end
		-- add children
		for _, child in ipairs(tbl) do
			table.insert(tag.children, child)
		end
	end
	return tag
end

return marigold