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
|
# File 'lib/beamlet/cli.rb', line 24
def self.parse(argv)
opts = { mode: nil, items: [], enum_items: [] }
parser = OptionParser.new do |o|
o.banner = "Usage: beamlet [options]"
o.on("-d", "--document", "Generate top-level document") do
opts[:mode] = :document
end
o.on("-f", "--frame", "Generate a frame") do
opts[:mode] = :frame
end
o.on("-T", "--title TITLE", "Document title") { |v| opts[:title] = v }
o.on("-a", "--author AUTHOR", "Author") { |v| opts[:author] = v }
o.on("-i", "--date DATE", "Date") { |v| opts[:date] = v }
o.on("--theme THEME", "Beamer theme (default Madrid)") { |v| opts[:theme] = v }
o.on("--[no-]titleframe", "Include title frame") { |v| opts[:titleframe] = v }
o.on("-P", "--part", "Generate a part slide") do
opts[:mode] = :part
end
o.on("-p", "--part-title TITLE", "Part title") { |v| opts[:part_title] = v }
o.on("-t", "--frame-title TITLE", "Frame title") { |v| opts[:frame_title] = v }
o.on("-s", "--splits N", Integer, "Split frame vertically into N columns") do |v|
opts[:splits] = v
end
o.on("--fragile", "Mark frame as fragile (for verbatim/code)") { opts[:fragile] = true }
o.on("--allowframebreaks", "Allow frame breaks") { opts[:allowframebreaks] = true }
o.on("-l", "--itemize A,B,C", Array, "Itemize list (left by default)") do |v|
opts[:items] = v
end
o.on("-e", "--enumerate A,B,C", Array, "Enumerate list") do |v|
opts[:enum_items] = v
end
o.on("-b", "--block TITLE", "Add a standard block") do |v|
opts[:block_kind] = "block"
opts[:block_title] = v
opts[:block_body] = STDIN.tty? ? "contenu..." : $stdin.read.chomp
end
o.on("-A", "--alert TITLE", "Add an alertblock") do |v|
opts[:block_kind] = "alertblock"
opts[:block_title] = v
opts[:block_body] = STDIN.tty? ? "attention !" : $stdin.read.chomp
end
o.on("-E", "--example TITLE", "Add an exampleblock") do |v|
opts[:block_kind] = "exampleblock"
opts[:block_title] = v
opts[:block_body] = STDIN.tty? ? "exemple..." : $stdin.read.chomp
end
o.on("-I", "--image FILE", "Insert image") { |v| opts[:image_file] = v }
o.on("--image-opts OPTS", "Image options (default width=0.8\\textwidth)") do |v|
opts[:image_opts] = v
end
o.on("-c", "--code LANG", "Code listing (body from stdin)") do |v|
opts[:code_lang] = v
opts[:code_body] = STDIN.tty? ? "# code" : $stdin.read.chomp
opts[:fragile] = true
end
o.on("-p", "--pause", "Insert \\pause") { opts[:pause] = true }
o.on("-n", "--note TEXT", "Speaker note") { |v| opts[:note_body] = v }
o.on("-h", "--help", "Show help") { puts o; exit 0 }
o.on("-v", "--version", "Show version") { puts Beamlet::VERSION; exit 0 }
end
parser.parse!(argv)
opts
end
|