octool 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7421bbf076967b16d0210f813f936c0a75b572694071ad6674cdbd2368bfc5ff
4
- data.tar.gz: 849f56075a2a9815fdb225518fb3579c817ed570382f8cd3a3b2f35916d6e9a4
3
+ metadata.gz: b2bc082300d2393b604bc09640def5bf7ad2cb0b05cf23b45f6e008a5d964547
4
+ data.tar.gz: 02b576ce174d710fd07e922f1f5aa818dec7114ee931ff39cbf3a2db8d64da1c
5
5
  SHA512:
6
- metadata.gz: 5bb0a131801cc5003fc2102e7efcab828a6f65099b9f0e65e5df4472ff137ba1f52479b7b9f454cfe75f3551d36d6c6cdfe94cccbf9429aeff2a847713afd779
7
- data.tar.gz: ee327ac99c2a3036c474ffb7d370c99d23af9afc2e3bc36a6d1fd10573f8f0e7f0e872633797ee25819bafe9f3dd73f0871a4d23741f6ce41f2dc14e69c82bc1
6
+ metadata.gz: 62fce55d3097c779050eab057ae9b167c72ef8b9a4b257a47630bff1518b6cce1f27a21a547e262862de3fa8608cf894582a2654ea665cc89d3dd819870bf99e
7
+ data.tar.gz: 64e7035d4ec01fcbb2c87665f8c1b4177561f0af8d3f4a6c226453f9f8c50e5d91c843351aefeea59f498edff066830a940a789c9cbb59b2372631c1fb01d9d9
data/bin/octool CHANGED
@@ -89,6 +89,7 @@ class App
89
89
  system = OCTool::Parser.new(config_file).load_system
90
90
  Dir.chdir File.dirname(config_file) do
91
91
  OCTool::SSP.new(system, export_dir).generate(options[:version])
92
+ OCTool::SSP.new(system, export_dir).generate(options[:version], 'glossary')
92
93
  end
93
94
  end
94
95
  end
@@ -12,6 +12,7 @@ module OCTool
12
12
  def initialize(system, output_dir)
13
13
  @system = system
14
14
  @output_dir = output_dir
15
+ @template_name = 'ssp'
15
16
  @version = OCTool::DEFAULT_SSP_VERSION
16
17
  @build_date = DateTime.now
17
18
  end
@@ -33,8 +34,9 @@ module OCTool
33
34
  exit(1)
34
35
  end
35
36
 
36
- def generate(version = nil)
37
+ def generate(version = nil, template_name = 'ssp')
37
38
  self.version = version if version
39
+ @template_name = template_name if template_name
38
40
  unless File.writable?(@output_dir)
39
41
  warn "[FAIL] #{@output_dir} is not writable"
40
42
  exit(1)
@@ -47,7 +49,6 @@ module OCTool
47
49
 
48
50
  def render_template
49
51
  print "Building markdown #{md_path} ... "
50
- template_path = File.join(ERB_DIR, 'ssp.erb')
51
52
  template = File.read(template_path)
52
53
  output = ERB.new(template, nil, '-').result(binding)
53
54
  File.open(md_path, 'w') { |f| f.puts output }
@@ -64,15 +65,12 @@ module OCTool
64
65
 
65
66
  # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
66
67
  def write(type = 'pdf')
67
- out_path = File.join(@output_dir, "ssp.#{type}")
68
+ out_path = File.join(@output_dir, "#{@template_name}.#{type}")
68
69
  print "Building #{out_path} ... "
69
70
  converter = pandoc.configure do
70
71
  from 'markdown+autolink_bare_uris'
71
72
  to type
72
73
  pdf_engine 'lualatex'
73
- toc
74
- toc_depth 3
75
- number_sections
76
74
  highlight_style 'pygments'
77
75
  filter 'pandoc-acronyms' if ENV['PANDOC_ACRONYMS_ACRONYMS']
78
76
  # https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings#Encoding_issue
@@ -86,7 +84,11 @@ module OCTool
86
84
  # rubocop:enable Metrics/AbcSize,Metrics/MethodLength
87
85
 
88
86
  def md_path
89
- @md_path ||= File.join(@output_dir, 'ssp.md')
87
+ File.join(@output_dir, "#{@template_name}.md")
88
+ end
89
+
90
+ def template_path
91
+ File.join(ERB_DIR, "#{@template_name}.erb")
90
92
  end
91
93
  end
92
94
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OCTool
4
- VERSION = '0.0.11'
4
+ VERSION = '0.0.12'
5
5
  end
@@ -1,6 +1,6 @@
1
1
  == octool - Open Compliance Tool
2
2
 
3
- v0.0.11
3
+ v0.0.12
4
4
 
5
5
  === Global Options
6
6
  === --help
@@ -0,0 +1,173 @@
1
+ ---
2
+ <% if @system.config['logo'] -%>
3
+ title: |
4
+ ![](<%= @system.config['logo']['path'] -%>){width=<%= @system.config['logo']['width'] %>}
5
+
6
+ Glossary
7
+ <% else %>
8
+ title: "Glossary"
9
+ <% end %>
10
+
11
+ subtitle: |
12
+ <%=build_date.strftime('%Y-%b-%d')%>
13
+
14
+ <% unless version == OCTool::DEFAULT_SSP_VERSION -%>
15
+ Version <%=version%>
16
+ <% end -%>
17
+
18
+ fontsize: 11pt
19
+ mainfont: NotoSans
20
+ monofont: NotoSansMono-ExtraCondensed
21
+ mainfontoptions:
22
+ - Numbers=Lowercase
23
+ - Numbers=Proportional
24
+ - UprightFont=*
25
+ - ItalicFont=*-Italic
26
+ - BoldFont=*-Bold
27
+ - BoldItalicFont=*-BoldItalic
28
+
29
+ colorlinks: true
30
+ linkcolor: black # internal links (e.g., lof and lot)
31
+ urlcolor: blue
32
+
33
+ documentclass: article
34
+ classoption:
35
+ - onecolumn
36
+ - oneside
37
+ - portrait
38
+
39
+ pagestyle: headings
40
+ papersize: letter
41
+ geometry:
42
+ - top=2cm
43
+ - left=3cm
44
+ - right=2cm
45
+ - bottom=2cm
46
+
47
+ header-includes:
48
+ - |
49
+ ```{=latex}
50
+ % https://ctan.org/pkg/metalogo?lang=en
51
+ \usepackage{metalogo}
52
+ ```
53
+ - |
54
+ ```{=latex}
55
+ % https://github.com/jgm/pandoc/wiki/Pandoc-Tricks#left-aligning-tables-in-latex
56
+ \usepackage[margins=raggedright]{floatrow}
57
+ ```
58
+ - |
59
+ ```{=latex}
60
+ % https://github.com/jgm/pandoc/wiki/Pandoc-Tricks#definition-list-terms-on-their-own-line-in-latex
61
+ % "Clone" the original \item command
62
+ \let\originalitem\item
63
+
64
+ % Create variable with default value false to use later
65
+ % http://handyfloss.net/2007.08/latex-programming-how-to-implement-conditionals/
66
+ \newif \ifonelinedef
67
+ \onelinedeffalse
68
+
69
+ % Redefine the \item command using the "clone"
70
+ \makeatletter
71
+ \renewcommand{\item}[1][\@nil] {%
72
+ \def \tmp {#1}%
73
+ \ifx \tmp \@nnil
74
+ \originalitem
75
+ \else
76
+ \ifonelinedef
77
+ \originalitem[#1]\vspace{4mm}\par
78
+ \else
79
+ \originalitem[#1]\hfill\par
80
+ \fi
81
+ \fi
82
+ }
83
+ \makeatother
84
+ ```
85
+ - |
86
+ ```{=latex}
87
+ % The are at least two ways to configure how LaTeX floats figures.
88
+ %
89
+ % 1. One approach is described in section 17.2 of
90
+ % http://tug.ctan.org/tex-archive/info/epslatex/english/epslatex.pdf
91
+ % However, the approach described there requires to teach people
92
+ % how to write LaTeX cross-references in markdown.
93
+ %
94
+ % 2. Force figures, listings, etc., to float "[H]ere".
95
+ % This is a LaTeX anti-pattern because it causes large gaps of whitespace on some pages.
96
+ % This approach avoids having to teach people to create LaTeX cross-references.
97
+ % https://tex.stackexchange.com/a/101726
98
+ %
99
+ % Use option 2.
100
+ \usepackage{float}
101
+ \floatplacement{figure}{H}
102
+ ```
103
+ - |
104
+ ```{=latex}
105
+ % https://tex.stackexchange.com/a/32537
106
+ \usepackage{lastpage}
107
+
108
+ % https://ctan.org/pkg/fancyhdr?lang=en
109
+ \usepackage{fancyhdr}
110
+
111
+ \pagestyle{fancy}
112
+ <% unless version == OCTool::DEFAULT_SSP_VERSION %>
113
+ \fancyfoot[L]{Version: <%=version-%>}
114
+ <% end %>
115
+ \fancyfoot[C]{<%=build_date.strftime('%Y-%b-%d')-%>}
116
+ \fancyfoot[R]{\thepage\ of\ \pageref{LastPage}}
117
+ \renewcommand{\footrulewidth}{0.4pt} % thickness
118
+ \renewcommand{\headrulewidth}{0.4pt} % thickness
119
+ \fancypagestyle{plain}{\fancyhead{}\renewcommand{\headrule}{}}
120
+ ```
121
+ - |
122
+ ```{=latex}
123
+ % Which bullet glyphs are avaiable?
124
+ % http://texdoc.net/texmf-dist/doc/latex/comprehensive/symbols-a4.pdf TABLE 50
125
+ %
126
+ % https://learnbyexample.github.io/tutorial/ebook-generation/customizing-pandoc/
127
+ % https://tex.stackexchange.com/questions/174244/change-the-shape-of-the-bullet-list
128
+ % https://texblog.org/2008/10/16/lists-enumerate-itemize-description-and-how-to-change-them/
129
+ % https://tex.stackexchange.com/a/64899
130
+ % https://ctan.org/pkg/enumitem?lang=en
131
+ % https://www.latex4technics.com/?note=2vy0
132
+ %
133
+ %\usepackage{amsfonts}
134
+ %
135
+ % Make bullets small
136
+ %\renewcommand{\labelitemi}{\tiny $\textbullet$}
137
+ %\renewcommand{\labelitemii}{\tiny $\textopenbullet$}
138
+ %\renewcommand{\labelitemiii}{\tiny $\triangleright$}
139
+ %
140
+ % Align bullets to left margin and make small
141
+ % https://tex.stackexchange.com/a/86408
142
+ %\usepackage{enumitem}
143
+ %\usepackage{graphicx}
144
+ %\setlist[itemize,1]{leftmargin=*,label=\scalebox{.8}{$\textbullet$}}
145
+ %\setlist[itemize,2]{leftmargin=*,label=\scalebox{.8}{$\textopenbullet$}}
146
+ %\setlist[itemize,3]{leftmargin=*,label=\scalebox{.8}{\triangleright}}
147
+ %
148
+ % Align bullets to left margin and use normal font
149
+ \usepackage{enumitem}
150
+ \setlist[itemize,1]{leftmargin=*,label=$\textbullet$}
151
+ \setlist[itemize,2]{leftmargin=*,label=$\textopenbullet$}
152
+ \setlist[itemize,3]{leftmargin=*,label=\triangleright}
153
+ %
154
+ % Align bullets to left margin and use slightly smaller font
155
+ %\usepackage{MnSymbol}
156
+ %\setlist[itemize,1]{leftmargin=*,label=$\bullet$}
157
+ %\setlist[itemize,2]{leftmargin=*,label=$\circ$}
158
+ %\setlist[itemize,3]{leftmargin=*,label=\blacktriangleright}
159
+ ```
160
+ ---
161
+
162
+ <% if @system.config['acronyms'] %>
163
+
164
+ <!-- Force glossary to be typeset as oneline definitions. -->
165
+ \onelinedeftrue
166
+
167
+ <% @system.config['acronyms'].values.sort_by { |a| a['shortform'] }. each do |a| %>
168
+ <%=a['shortform']%>
169
+ ~ <%=a['longform']%>
170
+
171
+ <% end %>
172
+ \onelinedeffalse
173
+ <% end %>
@@ -45,6 +45,10 @@ colorlinks: true
45
45
  linkcolor: black # internal links (e.g., lof and lot)
46
46
  urlcolor: blue
47
47
 
48
+ toc: true
49
+ toc_depth: 3
50
+ numbersections: true
51
+
48
52
  documentclass: report
49
53
  classoption:
50
54
  - onecolumn
@@ -76,11 +80,25 @@ header-includes:
76
80
  % "Clone" the original \item command
77
81
  \let\originalitem\item
78
82
 
83
+ % Create variable with default value false to use later
84
+ % http://handyfloss.net/2007.08/latex-programming-how-to-implement-conditionals/
85
+ \newif \ifonelinedef
86
+ \onelinedeffalse
87
+
79
88
  % Redefine the \item command using the "clone"
80
89
  \makeatletter
81
- \renewcommand{\item}[1][\@nil]{%
82
- \def\tmp{#1}%
83
- \ifx\tmp\@nnil\originalitem\else\originalitem[#1]\hfill\par\fi}
90
+ \renewcommand{\item}[1][\@nil] {%
91
+ \def \tmp {#1}%
92
+ \ifx \tmp \@nnil
93
+ \originalitem
94
+ \else
95
+ \ifonelinedef
96
+ \originalitem[#1]\vspace{4mm}\par
97
+ \else
98
+ \originalitem[#1]\hfill\par
99
+ \fi
100
+ \fi
101
+ }
84
102
  \makeatother
85
103
  ```
86
104
  - |
@@ -280,6 +298,21 @@ a['satisfies'][1..].each do |s|
280
298
  <% end %>
281
299
 
282
300
 
301
+ <% if @system.config['acronyms'] %>
302
+ # Glossary
303
+
304
+ <!-- Force glossary to be typeset as oneline definitions. -->
305
+ \onelinedeftrue
306
+
307
+ <% @system.config['acronyms'].values.sort_by { |a| a['shortform'] }. each do |a| %>
308
+ <%=a['shortform']%>
309
+ ~ <%=a['longform']%>
310
+
311
+ <% end %>
312
+ \onelinedeffalse
313
+ <% end %>
314
+
315
+
283
316
  # Colophon
284
317
 
285
318
  This document was typeset in NotoSans with \LuaTeX\.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Morgan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-27 00:00:00.000000000 Z
11
+ date: 2020-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -178,6 +178,7 @@ files:
178
178
  - schemas/v1.0.2/component.yaml
179
179
  - schemas/v1.0.2/config.yaml
180
180
  - schemas/v1.0.2/standard.yaml
181
+ - templates/glossary.erb
181
182
  - templates/ssp.erb
182
183
  homepage: https://github.com/jumanjiman/octool
183
184
  licenses: