blob: 1b093afb7595f6316f066efe7c7b1b00d9707b26 (
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
|
--
--------------------------------------------------------------------------------
-- FILE: mtx-t-enigma.lua
-- USAGE: mtxrun --script enigma --setup="s" --text="t"
-- DESCRIPTION: context script interface for the Enigma module
-- REQUIREMENTS: latest ConTeXt MkIV
-- AUTHOR: Philipp Gesang (Phg), <gesang@stud.uni-heidelberg.de>
-- CREATED: 2013-03-28 02:14:05+0100
--------------------------------------------------------------------------------
--
environment.loadluafile("enigma")
local iowrite = io.write
local helpinfo = [[
===============================================================
The Enigma module, command line interface.
© 2012--2013 Philipp Gesang. License: 2-clause BSD.
Home: <https://bitbucket.org/phg/enigma/>
===============================================================
USAGE:
mtxrun --script enigma --setup="settings" --text="text"
--verbose=int
where the settings are to be specified as a comma-delimited
conjunction of “key=value” statements, and “text” refers to
the text to be encoded. Note that due to the involutory
design of the enigma cipher, the text can be both plaintext
and ciphertext.
===============================================================
]]
local application = logs.application {
name = "mtx-t-enigma",
banner = "The Enigma for ConTeXt, hg-rev 37+",
helpinfo = helpinfo,
}
local ea = environment.argument
local setup, text = ea"setup" or ea"s", ea"text" or ea"t"
local verbose = ea"verbose" or ea"v"
local out = function (str)
iowrite(str)
end
local machine_id = "external"
if setup and text then
local args = enigma.parse_args(setup)
if not args then
application.help()
iowrite"\n\n[Error] Could not process enigma setup!\n\n"
end
enigma.save_raw_args(args, machine_id)
--local machine = enigma.new_machine(enigma.parse_args(setup))
local machine = enigma.new_machine(machine_id)
--machine.name = machine_id
local result = machine:encode_string(text)
if result then
out(result)
else
application.help()
end
else
application.help()
end
|