asciidoctor-p2e 0.1.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,11 +1,46 @@
1
+ /* Fonts */
2
+ /* devanagari */
3
+ @font-face {
4
+ font-family: 'Eczar';
5
+ font-style: normal;
6
+ font-weight: 800;
7
+ src: url(BXRovF3Pi-DLmzWCKvt80WrNWA.woff2) format('woff2');
8
+ unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;
9
+ }
10
+ /* latin-ext */
11
+ @font-face {
12
+ font-family: 'Eczar';
13
+ font-style: normal;
14
+ font-weight: 800;
15
+ src: url(BXRovF3Pi-DLmzWCKvtz0WrNWA.woff2) format('woff2');
16
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
17
+ }
18
+ /* latin */
19
+ @font-face {
20
+ font-family: 'Eczar';
21
+ font-style: normal;
22
+ font-weight: 800;
23
+ src: url(BXRovF3Pi-DLmzWCKvt90Wo.woff2) format('woff2');
24
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
25
+ }
26
+
27
+ /* Stat blocks */
1
28
  .statblock {
2
29
  width: 500px;
3
30
  border: 1px solid black;
4
- margin: 20px;
31
+ /* margin: 20px;*/
5
32
  padding: 20px;
6
33
  font-family: "Roboto", Geneva, sans-serif;
7
34
  font-size: 16px;
8
35
  line-height: 24px;
36
+ display: block;
37
+ background: #f7f7f8;
38
+ }
39
+ .statblock.left {
40
+ margin-right: 20px;
41
+ }
42
+ .statblock.right {
43
+ margin-left: 20px;
9
44
  }
10
45
  .statblock-title {
11
46
  font-size: 23px;
@@ -16,13 +51,12 @@
16
51
  .statblock-name {
17
52
  float: left;
18
53
  }
19
- .statblock-creature {
54
+ .statblock-type {
20
55
  float: right;
21
56
  text-align: right;
22
57
  }
23
58
  .statblock-tags {
24
59
  height: 26px;
25
- /*background-color: BurlyWood;*/
26
60
  width: fit-content;
27
61
  }
28
62
  .statblock-info-block {
@@ -126,3 +160,92 @@
126
160
  background-repeat: no-repeat;
127
161
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAABHNCSVQICAgIfAhkiAAAA8BJREFUSImdlUlsHEUUht/rWrp6lp7unnHPjJ2MgxNWgyKWA6AEC5BsQUBRpCAOKBcIAoGPIG7ABS4sEgpwgguXnBIPxgbFCOUQcQBFiVgiDnC3PYsjHHdVLzNdXGxr0p6QOP/x1d/1Vb3X7xXADYSI1HPcDznjB27kGbTfgmdXIhXPOzXRGE8bY2N/M8YmbmRkjO2tV2sLlNK9twMyhsXKrvuRXSi+iYjIKDtQH/EXGWONrJFSWqv71XM5IY7U/eoPhJD6MAgiskK+8NIwHskGPMf9wLHttxBxO62EkIolrGml1Hyapuub8OqoX/2RMTa56fFzljUdSHlGax0MwkfK5a/cUuk9NIycCsOf/jcD/X7/H611ko1zxiZrI/4ipbQKAFAsFF5kjN1/vYc/UPer3xNCKlv8ilf+spgvnEBEwynab7uO8z4M/DPbGSgV7dcBQQVSLmnQbWGaM4h4XYYIIVVLiCelUk2p5HnKqGNy/uighxIyKkwxFUh5Vmsd5S3rOc75Q7gpYZqHAbAfRuGF7QOUbHu27LmfFXL5YzJUC1LKJQC4KoSYRkRjJ8A8LJVqbgTBt4wz32T8kcFbUUr3WEIcCqQ8I5VqUkoanPGDA4eY0hrCMIp+JnaxeLLieacQkBqIdj6Xe14p9V2g5DkEDCwhZrLloJTuEab5uFTqbBAETcbYHZzxgxlPQ5jmY0EQnJZKzXPO7uGMTwIAIKJhCfFUmqZdA3b2MAcAsVXDLBwAQGutt5YMwygwxu4cZot7yZVU65AQUuaU3Z3Z41oUJ5dJFMeXUq2vWpaYTvtpZ7m1OhMnyZ+OXZp1HefjbAm01jqK419W2q2jWut4tFpbMDk/lIWvb1z7uttdm6WEVmq+v2hy/uDWYpqm6yvt1rEwCi9QAIB/19c/B4B+GEa/xnH8e8m2X3NLpU8NRJqFx0lyabXTPqq1VnW/2jQ5fyLr2ZDBN521tTcAQdf8kTmT84e34TrdWOm0j6swPA8w0AVRFF3s9/vLpaL9suc4XxiGwbM5TZLkj5V265ler9dyHeedYj5/MnvzQMrT7W73lc1W1ohG3xLiCCISrbVabbePK6WWtj7YMYjyudwLlhBTg4MIACBOkisr7dazvV5vGQAgjKKLpmnexyi7dwA+1+p2TgzOkSiOftMaVi0hnm51O68GUs5lmVkZZdf7ZKIxnu4f36cnGuNpY3Tsr2GjGBH5aK02v398X1ob8ZuIKIZtCADAOb/rZuBB3fJjZBiG5bnuu4iY2w3gptrlc3zb+g/DZ3c9xGiesQAAAABJRU5ErkJggg==)
128
162
  }
163
+
164
+ /* Headings, TOC, dividers, and background */
165
+ body {
166
+ background: url("parchment.jpg");
167
+ background-repeat: repeat-y;
168
+ background-size: contain;
169
+ }
170
+ body.toc2 #header > h1:nth-last-child(2) {
171
+ border-bottom: none;
172
+ text-align: center;
173
+ }
174
+ body.toc2 #header > h1:nth-last-child(2)::after, .sect1 + .sect1::before {
175
+ content: "";
176
+ display: block;
177
+ height: 40px;
178
+ background-image: url("divider.png");
179
+ background-repeat: no-repeat;
180
+ background-position: center bottom;
181
+ background-size: cover;
182
+ }
183
+ .sect1 + .sect1 {
184
+ border-top: none;
185
+ }
186
+ h1, h2, #toctitle, #toc a {
187
+ font-family: 'Eczar', sans-serif !important;
188
+ color:#4E0707 !important;
189
+ }
190
+ h1, #toctitle {
191
+ border-color:#EFCD98;
192
+ border 10px;
193
+ text-shadow: 1px 1px 0 #EFCD98, -1px 1px 0 #EFCD98, 1px -1px 0 #EFCD98, -1px -1px 0 #EFCD98, 0px 1px 0 #EFCD98, 0px -1px 0 #EFCD98, -1px 0px 0 #EFCD98, 1px 0px 0 #EFCD98, 2px 2px 0 #EFCD98, -2px 2px 0 #EFCD98, 2px -2px 0 #EFCD98, -2px -2px 0 #EFCD98, 0px 2px 0 #EFCD98, 0px -2px 0 #EFCD98, -2px 0px 0 #EFCD98, 2px 0px 0 #EFCD98, 1px 2px 0 #EFCD98, -1px 2px 0 #EFCD98, 1px -2px 0 #EFCD98, -1px -2px 0 #EFCD98, 2px 1px 0 #EFCD98, -2px 1px 0 #EFCD98, 2px -1px 0 #EFCD98, -2px -1px 0 #EFCD98;
194
+ }
195
+ h1 {
196
+ font-size: 6em;
197
+ }
198
+ h2 {
199
+ font-size: 3.5em;
200
+ }
201
+ h3 {
202
+ color:#02256E;
203
+ font-size: 2.25em;
204
+ }
205
+ #toc.toc2 {
206
+ background: url(toc.png);
207
+ border-right: none;
208
+ background-repeat: repeat-y;
209
+ }
210
+ #toctitle {
211
+ font-size: 1.75em !important;
212
+ }
213
+ #toc a {
214
+ font-size: 1.1em;
215
+ }
216
+
217
+ /* Sidebar */
218
+ .sidebarblock {
219
+ background: url(sidebar.png);
220
+ padding: 1.75em;
221
+ border-style: none;
222
+ background-repeat: no-repeat;
223
+ background-size: cover;
224
+ }
225
+
226
+ /* Tables */
227
+ table {
228
+ background-color: #F5EFE0;
229
+ margin-bottom:0px;
230
+ }
231
+ table tr th {
232
+ background-color: #5E0000;
233
+ color: white !important;
234
+ padding-top:4px;
235
+ }
236
+ table tbody tr:nth-child(odd) {
237
+ background-color: #EDE3C8
238
+ }
239
+ table tbody, table th {
240
+ font-family: 'Roboto Condensed', sans-serif;
241
+ }
242
+ .tablefooter {
243
+ background-color:#E6D8B0 !important;
244
+ }
245
+ table.left {
246
+ margin-right: 35px;
247
+ }
248
+ table.right {
249
+ margin-left: 35px;
250
+ }
251
+
Binary file
@@ -1,7 +1,7 @@
1
- <div class="statblock">
1
+ <div class="statblock <%= defined?(role) ? role : '' %>">
2
2
  <div class="statblock-title">
3
3
  <span class="statblock-name"><%= name %></span>
4
- <span class="statblock-creature"> CREATURE <%= level %></span>
4
+ <span class="statblock-type"> CREATURE <%= level %></span>
5
5
  </div>
6
6
  <div class="statblock-info-block">
7
7
  <div class="statblock-tags">
@@ -27,7 +27,7 @@
27
27
  </div>
28
28
 
29
29
  <div class="statblock-info-line">
30
- <span class="statblock-line-heavy">Skills </span><% skills * "," %>
30
+ <span class="statblock-line-heavy">Skills </span><%= skills * "," %>
31
31
  </div>
32
32
 
33
33
  <div class="statblock-info-line">
@@ -62,7 +62,7 @@
62
62
  </div>
63
63
  <div class="statblock-info-block">
64
64
  <div class="statblock-info-line">
65
- <span class="statblock-line-heavy">Speed </span><%= offense['speed'] %><%= offense['otherSpeeds'] %>
65
+ <span class="statblock-line-heavy">Speed </span><%= offense['speed'] %> <%= offense['otherSpeeds'] %>
66
66
  </div>
67
67
 
68
68
  <% offense['attacks'].each do |attack| %>
@@ -0,0 +1 @@
1
+ <link href="p2e/p2e.css" rel="stylesheet">
@@ -10,10 +10,12 @@ class P2EDocinfoProcessor < Extensions::DocinfoProcessor
10
10
  use_dsl
11
11
 
12
12
  def process doc
13
- extdir = ::File.join(::File.dirname __FILE__)
14
- stylesheet_name = 'p2e.css'
15
- content = doc.read_asset %(#{extdir}/#{stylesheet_name})
16
- ['<style>', content.chomp, '</style>'] * "\n"
13
+ srcdir = ::File.join(::File.dirname __FILE__)
14
+ outdir = (doc.attr? 'outdir') ? (doc.attr 'outdir') : (doc.attr 'docdir')
15
+ dstdir = "#{outdir}/p2e"
16
+ FileUtils.mkdir_p(dstdir)
17
+ FileUtils.cp_r("#{srcdir}/assets/.", dstdir)
18
+ doc.read_asset("#{srcdir}/docinfo.html")
17
19
  end
18
20
  end
19
21
 
@@ -21,20 +23,33 @@ class P2EStatblockProcessor < Extensions::BlockProcessor
21
23
  use_dsl
22
24
 
23
25
  named :stat
24
- on_context :open
26
+ on_context :open, :example
25
27
  parse_content_as :raw
26
28
 
27
29
  def process parent, reader, attrs
28
30
  # parse TOML
29
31
  lines = reader.lines
30
- creature = Tomlrb.parse(lines * "\n")
32
+ data = Tomlrb.parse(lines * "\n")
33
+
34
+ # get/set attributes
35
+ if attrs.key?('type')
36
+ type = attrs['type']
37
+ else
38
+ type = 'creature'
39
+ end
40
+ if attrs.key?('role')
41
+ data['role'] = attrs['role']
42
+ end
31
43
 
32
44
  # create HTML from template
33
45
  extdir = ::File.join(::File.dirname __FILE__)
34
- template_name = 'statblock.html.erb'
35
- template = File.read("#{extdir}/#{template_name}")
36
- html = ERB.new(template).result_with_hash(creature)
46
+ templates = {
47
+ 'creature' => "#{extdir}/creatureblock.html.erb",
48
+ 'item' => "#{extdir}/itemblock.html.erb",
49
+ 'hazard' => "#{extdir}/hazardblock.html.erb"
50
+ }
51
+ template = File.read(templates[type])
52
+ html = ERB.new(template).result_with_hash(data)
37
53
  create_pass_block parent, html, attrs, subs: nil
38
54
  end
39
55
  end
40
-
@@ -0,0 +1,43 @@
1
+ <div class="statblock <%= defined?(role) ? role : '' %>">
2
+ <div class="statblock-title">
3
+ <span class="statblock-name"><%= name %></span>
4
+ <span class="statblock-type">HAZARD <%= level %></span>
5
+ </div>
6
+ <div class="statblock-info-block">
7
+ <div class="statblock-tags">
8
+ <% tags.each do |tag| %>
9
+ <% if tag == "uncommon" %>
10
+ <div class="statblock-tag-rarity-uncommon"><%= tag %></div>
11
+ <% elsif tag == "rare" %>
12
+ <div class="statblock-tag-rarity-rare"><%= tag %></div>
13
+ <% elsif tag == "unique" %>
14
+ <div class="statblock-tag-rarity-unique"><%= tag %></div>
15
+ <% else %>
16
+ <div class="statblock-tag-other"><%= tag %></div>
17
+ <% end %>
18
+ <% end %>
19
+ </div>
20
+ <div class="statblock-info-other">
21
+ <div class="statblock-info-line">
22
+ <span class="statblock-line-heavy">Stealth </span><%= stealth %>
23
+ </div>
24
+ <div class="statblock-info-line">
25
+ <span class="statblock-line-heavy">Description </span><%= description %>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ <div class="statblock-info-block">
30
+ <div class="statblock-info-line">
31
+ <span class="statblock-line-heavy">Disable </span><%= disable %>
32
+ </div>
33
+ <% if defined?(triggers) %>
34
+ <% triggers.each do |trigger| %>
35
+ <div class="statblock-info-line">
36
+ <span class="statblock-line-heavy"><%= trigger['name'] %></span>
37
+ <span class="statblock-reaction"></span>
38
+ <span class="statblock-line-heavy">Trigger </span><%= trigger['text'] %>
39
+ </div>
40
+ <% end %>
41
+ <% end %>
42
+ </div>
43
+ </div>
@@ -0,0 +1,86 @@
1
+ <div class="statblock <%= defined?(role) ? role : '' %>">
2
+ <div class="statblock-title">
3
+ <span class="statblock-name"><%= name %></span>
4
+ <span class="statblock-type">ITEM <%= level %></span>
5
+ </div>
6
+ <div class="statblock-info-block">
7
+ <div class="statblock-tags">
8
+ <% tags.each do |tag| %>
9
+ <% if tag == "uncommon" %>
10
+ <div class="statblock-tag-rarity-uncommon"><%= tag %></div>
11
+ <% elsif tag == "rare" %>
12
+ <div class="statblock-tag-rarity-rare"><%= tag %></div>
13
+ <% elsif tag == "unique" %>
14
+ <div class="statblock-tag-rarity-unique"><%= tag %></div>
15
+ <% else %>
16
+ <div class="statblock-tag-other"><%= tag %></div>
17
+ <% end %>
18
+ <% end %>
19
+ </div>
20
+ <div class="statblock-info-other">
21
+ <% if defined?(price) %>
22
+ <div class="statblock-info-line">
23
+ <span class="statblock-line-heavy">Price </span><%= price %>
24
+ </div>
25
+ <% end %>
26
+ <div class="statblock-info-line">
27
+ <span class="statblock-line-heavy">Usage </span><%= usage %>&#59;
28
+ <span class="statblock-line-heavy"> Bulk </span><%= bulk %>&#59;
29
+ </div>
30
+ </div>
31
+ <% if defined?(activations) %>
32
+ <div class="statblock-info-other">
33
+ <% activations.each do |activation| %>
34
+ <div class="statblock-info-line">
35
+ <span class="statblock-line-heavy"> Activate </span>
36
+ <% if activation['actions'] == 0 %>
37
+ <span class="statblock-free-action"></span>
38
+ <% elsif activation['actions'] == 1 %>
39
+ <span class="statblock-one-action"></span>
40
+ <% elsif activation['actions'] == 2 %>
41
+ <span class="statblock-two-actions"></span>
42
+ <% elsif activation['actions'] == 3 %>
43
+ <span class="statblock-three-actions"></span>
44
+ <% end %>
45
+ <% if activation.key?('actionText') %>
46
+ <%= activation['actionText'] %>
47
+ <% end %>
48
+ <% if activation.key?('frequency') %>
49
+ <span class="statblock-line-heavy"> Frequency </span><%= activation['frequency'] %>
50
+ <% end %>
51
+ <% if activation.key?('trigger') %>
52
+ <span class="statblock-line-heavy"> Trigger </span><%= activation['trigger'] %>
53
+ <% end %>
54
+ <% if activation.key?('effect') %>
55
+ <span class="statblock-line-heavy"> Effect </span><%= activation['effect'] %>
56
+ <% end %>
57
+ </div>
58
+ <% end %>
59
+ </div>
60
+ <% end %>
61
+ </div>
62
+ <div class="statblock-info-block">
63
+ <% if defined?(hardness) %>
64
+ <div class="statblock-info-line">
65
+ <span class="statblock-line-heavy">Hardness </span><%= hardness['hardness'] %>&#59;
66
+ <span class="statblock-line-heavy">HP </span><%= hardness['hp'] %>&#59;
67
+ <span class="statblock-line-heavy">BT </span><%= hardness['bt'] %>&#59;
68
+ </div>
69
+ <% end %>
70
+ <div><%= description %></div>
71
+ </div>
72
+ <% if defined?(types) %>
73
+ <% types.each do |type| %>
74
+ <div class="statblock-info-block">
75
+ <div class="statblock-info-line">
76
+ <span class="statblock-line-heavy">Type </span><em><%= type['type'] %></em>
77
+ <span class="statblock-line-heavy">Level </span><%= type['level'] %>
78
+ <% if type.key?('price') %>
79
+ <span class="statblock-line-heavy">Price </span><%= type['price'] %>
80
+ <% end %>
81
+ </div>
82
+ <div><%= type['description'] %></div>
83
+ </div>
84
+ <% end %>
85
+ <% end %>
86
+ </div>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asciidoctor-p2e
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Tolboom
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-20 00:00:00.000000000 Z
11
+ date: 2021-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tomlrb
@@ -30,6 +30,26 @@ dependencies:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 2.0.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: dotenv
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.7'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 2.7.6
43
+ type: :development
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.7'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.7.6
33
53
  description: Asciidoctor Pathfinder 2E Extension
34
54
  email:
35
55
  - ryan@using.tech
@@ -37,11 +57,23 @@ executables: []
37
57
  extensions: []
38
58
  extra_rdoc_files: []
39
59
  files:
60
+ - LICENSE
40
61
  - README.adoc
62
+ - Rakefile
41
63
  - lib/asciidoctor-p2e.rb
64
+ - lib/asciidoctor-p2e/assets/BXRovF3Pi-DLmzWCKvt80WrNWA.woff2
65
+ - lib/asciidoctor-p2e/assets/BXRovF3Pi-DLmzWCKvt90Wo.woff2
66
+ - lib/asciidoctor-p2e/assets/BXRovF3Pi-DLmzWCKvtz0WrNWA.woff2
67
+ - lib/asciidoctor-p2e/assets/divider.png
68
+ - lib/asciidoctor-p2e/assets/p2e.css
69
+ - lib/asciidoctor-p2e/assets/parchment.jpg
70
+ - lib/asciidoctor-p2e/assets/sidebar.png
71
+ - lib/asciidoctor-p2e/assets/toc.png
72
+ - lib/asciidoctor-p2e/creatureblock.html.erb
73
+ - lib/asciidoctor-p2e/docinfo.html
42
74
  - lib/asciidoctor-p2e/extension.rb
43
- - lib/asciidoctor-p2e/p2e.css
44
- - lib/asciidoctor-p2e/statblock.html.erb
75
+ - lib/asciidoctor-p2e/hazardblock.html.erb
76
+ - lib/asciidoctor-p2e/itemblock.html.erb
45
77
  homepage: https://bosco.srht.site/asciidoctor-p2e.html
46
78
  licenses:
47
79
  - GPL-3.0