anatomy 0.1.7 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a65f9cfc15e7f07a0e2e51d3fedcd4a542c7d0ee
4
- data.tar.gz: d41bb523a2641917155d777e28780acdf7f72cea
3
+ metadata.gz: 251772338d62c79967219e209665cee35093d54d
4
+ data.tar.gz: eadb122b153f4a9b2224868513e412b091282413
5
5
  SHA512:
6
- metadata.gz: a00d11deb9931bcaaf0baf710ed662c062ffa31eef0b3cfa0500b66cb0b0e5386f98c601814b2b59d53af7e3f255d794f9755c363f65f6946749d02a53adc5f5
7
- data.tar.gz: b2586444f0b97f1c37f588bac4b11d0d56a6bcaf9d56e052a595649772fb8b3774aefa18f43522bef7bb0c1c3e5414479eb437532f48787b08acf9e2fe912b1f
6
+ metadata.gz: de01700a0b61645b1ef728b1d223d0b319d4a446486d3fb02b3175188f6caf33a8e18329c42df6eacec3fea75a2340fef9d6603325b0e8bf69a05cee68f0778c
7
+ data.tar.gz: 3df0a6a0898c8989613531ba3054686fbcadfab89a2b1876f2e838cb9fa4c7e67b2abb9c49870fa4713bb277447f6aa93ebdc935c38496596453ec1480095769
@@ -9,6 +9,11 @@ collect = require("anatomy/stages/collect")
9
9
 
10
10
  hl = require("hl")
11
11
 
12
+ def(template(mod)):
13
+ data MetaBlock new(
14
+ [part]:
15
+ part template = mod)
16
+
12
17
  def(title(content, tag-name = data sanitize(content), *extra-tag-names)):
13
18
  data MetaBlock new(
14
19
  [part]:
@@ -66,6 +66,9 @@ data(
66
66
  -- css files to add
67
67
  @css-additions = Set new
68
68
 
69
+ -- template to use when rendering html
70
+ @template = nil
71
+
69
72
  -- omit children from table of contents
70
73
  @omit-children-from-table-of-contents? = false))
71
74
 
@@ -8,6 +8,8 @@ require("fileutils")
8
8
  use(require("anatomy/html"))
9
9
  data = require("anatomy/data")
10
10
 
11
+ in-reference? = dynamic(false)
12
+ in-sidebar? = dynamic(false)
11
13
 
12
14
  fn(tag-url(t)):
13
15
  t target match:
@@ -20,97 +22,91 @@ fn(tag-url(t)):
20
22
  .url(x):
21
23
  x
22
24
 
23
- def(over(i & data Itemization)):
24
- i elements collect [name, body]:
25
- <dl:
26
- [ <dt: over(name)
27
- <dd: over(body)
28
- ]
29
- def(over(l & data List)):
30
- <ul:
31
- l elements collect [body]:
32
- <li: over(body)
33
- def(over(l & data OrderedList)):
34
- <ol:
35
- l elements collect [body]:
36
- <li: over(body)
37
- def(over(p & data Paragraph)):
38
- <p: over(p content)
39
- def(over(b & data Block)):
40
- b style match:
25
+ fn(block-style(style, content)):
26
+ style match:
41
27
  .tt:
42
- <pre: over(b content)
28
+ <pre: over(content)
43
29
 
44
30
  .verbatim:
45
- <pre(.verbatim): over(b content)
31
+ <pre(.verbatim): over(content)
46
32
 
47
33
  .class(*classes):
48
- <div(class = classes join(" ")): over(b content)
34
+ <div(class = classes join(" ")): over(content)
35
+
36
+ .classed(style, *classes):
37
+ h = block-style(style, content)
38
+ h attributes["class"] = classes join(" ")
39
+ h
40
+
41
+ .unordered-list:
42
+ <ul: over(content)
43
+
44
+ .list-item:
45
+ <li: over(content)
49
46
 
50
47
  .header(depth):
51
- <"h#{depth}": over(b content)
48
+ <"h#{depth}": over(content)
52
49
 
53
50
  .inset:
54
- <div(style = "margin: 0 2em 1em"): over(b content)
51
+ <div(style = "margin: 0 2em 1em"): over(content)
55
52
 
56
53
  .centered:
57
- <div(style = "text-align: center"): over(b content)
54
+ <div(style = "text-align: center"): over(content)
58
55
 
59
56
  .margin-note:
60
- <blockquote: over(b content)
57
+ <blockquote: over(content)
61
58
 
62
59
  nil:
63
- <div: over(b content)
60
+ <div: over(content)
64
61
 
65
- in-reference? = dynamic(false)
66
- in-sidebar? = dynamic(false)
67
-
68
- def(over(t & data Target)):
69
- <a(name = t name): nil
70
- def(over(p & data Reference)):
71
- if(p tag)
72
- then:
73
- <a(href = tag-url(p tag)):
74
- with(in-reference? = true):
75
- over(p content)
76
- else:
77
- <a(.undefined): over(p content)
78
- def(over(r & data ResolveElement)):
79
- error(.did-not-resolve(r))
80
- def(over(e & data Element)):
81
- e style match:
62
+ fn(element-style(style, content)):
63
+ style match:
82
64
  .italic:
83
- <em: over(e content)
65
+ <em: over(content)
84
66
 
85
67
  .bold:
86
- <strong: over(e content)
68
+ <strong: over(content)
87
69
 
88
70
  .tt:
89
- <code: over(e content)
71
+ <code: over(content)
90
72
 
91
73
  .superscript:
92
- <sup: over(e content)
74
+ <sup: over(content)
93
75
 
94
76
  .subscript:
95
- <sub: over(e content)
77
+ <sub: over(content)
96
78
 
97
79
  .smaller:
98
- <span(style = "font-size: 80%"): over(e content)
80
+ <span(style = "font-size: 80%"): over(content)
99
81
 
100
82
  .larger:
101
- <span(style = "font-size: 120%"): over(e content)
83
+ <span(style = "font-size: 120%"): over(content)
102
84
 
103
85
  .strike:
104
- <span(style = "text-decoration: line-through"): over(e content)
86
+ <span(style = "text-decoration: line-through"): over(content)
105
87
 
106
88
  .class(*classes):
107
- <span(class = classes join(" ")): over(e content)
89
+ <span(class = classes join(" ")): over(content)
90
+
91
+ .classed(style, *classes):
92
+ h = element-style(style, content)
93
+ h attributes["class"] = classes join(" ")
94
+ h
95
+
96
+ .button:
97
+ <button: over(content)
108
98
 
109
99
  .hyperlink(url):
110
- <a(href = url): over(e content)
100
+ <a(href = url): over(content)
111
101
 
112
102
  .image(file):
113
- <img(src = file, alt = over(e content))
103
+ <img(src = file, alt = over(content))
104
+
105
+ .image(file, width):
106
+ <img(src = file, alt = over(content), width = width)
107
+
108
+ .font-awesome(*classes):
109
+ <i(class = (["fa"] + classes) join(" ")): over(content)
114
110
 
115
111
  .svg(file):
116
112
  <object(data = file, type = "image/svg+xml", width = "100%", height = "100%"):
@@ -124,8 +120,41 @@ def(over(e & data Element)):
124
120
 
125
121
  .aux:
126
122
  unless(^(in-reference?) || ^(in-sidebar?)):
127
- over(e content)
123
+ over(content)
124
+
125
+ def(over(i & data Itemization)):
126
+ i elements collect [name, body]:
127
+ <dl:
128
+ [ <dt: over(name)
129
+ <dd: over(body)
130
+ ]
131
+ def(over(l & data OrderedList)):
132
+ <ol:
133
+ l elements collect [body]:
134
+ <li: over(body)
135
+ def(over(l & data List)):
136
+ <ul:
137
+ l elements collect [body]:
138
+ <li: over(body)
139
+ def(over(p & data Paragraph)):
140
+ <p: over(p content)
141
+ def(over(b & data Block)):
142
+ block-style(b style, b content)
128
143
 
144
+ def(over(t & data Target)):
145
+ <a(name = t name): nil
146
+ def(over(p & data Reference)):
147
+ if(p tag)
148
+ then:
149
+ <a(href = tag-url(p tag)):
150
+ with(in-reference? = true):
151
+ over(p content)
152
+ else:
153
+ <a(.undefined): over(p content)
154
+ def(over(r & data ResolveElement)):
155
+ error(.did-not-resolve(r))
156
+ def(over(e & data Element)):
157
+ element-style(e style, e content)
129
158
  def(over(nil)): nil
130
159
  def(over(s & String)): s
131
160
  def(over(a & Array)):
@@ -196,8 +225,12 @@ def(render(part, out = ".")):
196
225
  <head:
197
226
  <meta("http-equiv" = "Content-Type", content = "text/html; charset=UTF-8")
198
227
  <title: StrippedTags new(over(part title))
199
- <link(type = "text/css", rel = "stylesheet", href = "public/anatomy.css")
200
- <link(type = "text/css", rel = "stylesheet", href = "public/highlight.css")
228
+
229
+ unless(part template):
230
+ [ <link(type = "text/css", rel = "stylesheet", href = "public/anatomy.css")
231
+ <link(type = "text/css", rel = "stylesheet", href = "public/highlight.css")
232
+ ]
233
+
201
234
  <script(type = "text/javascript", src = "public/jquery.js") {}
202
235
  <script(type = "text/javascript", src = "public/jquery.hotkeys.js") {}
203
236
  <script(type = "text/javascript", src = "public/tags.js") {}
@@ -207,29 +240,7 @@ def(render(part, out = ".")):
207
240
  <link(type = "text/css", rel = "stylesheet", href = File basename(addition))
208
241
 
209
242
  <body(class = class):
210
- <div(#main):
211
- <div(#content):
212
- render-part(part, out)
213
-
214
- <div(.search):
215
- <form(action = "javascript:void(0)"):
216
- <input(
217
- type = "text"
218
- placeholder = "Search&hellip;"
219
- autocomplete = "off"
220
- #search)
221
-
222
- <ul(.search-results) {}
223
-
224
- with(in-sidebar? = true):
225
- <div(#sidebar):
226
- <h2:
227
- <a(href = url(part top)):
228
- over(part top title)
229
-
230
- <ol(.toc):
231
- part top parts collect [p]:
232
- toc-leaf(part, p)
243
+ render-part-template(part, out)
233
244
 
234
245
  when(analytics-id = ENV["ANALYTICS_ID"]):
235
246
  <script: UnescapedString new(i"
@@ -243,13 +254,37 @@ def(render(part, out = ".")):
243
254
  ")
244
255
  })
245
256
 
246
- def(render-part(part, out = ".", depth = 1)):
247
- part assets each [a]:
248
- FileUtils cp(a, out)
257
+ def(render-part-template(part, out = ".")):
258
+ copy-part-assets(part, out)
259
+ (part template || Self) template-for(part, out)
249
260
 
250
- part css-additions each [a]:
251
- FileUtils cp(a, out)
261
+ def(template-for(part, out)):
262
+ <div(#page):
263
+ <div(#main):
264
+ <div(#content):
265
+ render-part(part, out)
266
+
267
+ <div(.search):
268
+ <form(action = "javascript:void(0)"):
269
+ <input(
270
+ type = "text"
271
+ placeholder = "Search&hellip;"
272
+ autocomplete = "off"
273
+ #search)
274
+
275
+ <ul(.search-results) {}
276
+
277
+ with(in-sidebar? = true):
278
+ <div(#sidebar):
279
+ <h2:
280
+ <a(href = url(part top)):
281
+ over(part top title)
252
282
 
283
+ <ol(.toc):
284
+ part top parts collect [p]:
285
+ toc-leaf(part, p)
286
+
287
+ def(render-part(part, out = ".", depth = 1)):
253
288
  <div(.section, id = i"section_#{part tag name}"):
254
289
  <"h#{depth}"(.section_header):
255
290
  <a(name = part tag name) {}
@@ -265,8 +300,15 @@ def(render-part(part, out = ".", depth = 1)):
265
300
  toc-leaf(part, sub)
266
301
  else:
267
302
  part parts collect [sub]:
303
+ copy-part-assets(sub, out)
268
304
  render-part(sub, out, depth + 1)
269
305
 
306
+ def(copy-part-assets(part, out)):
307
+ part assets each [a]:
308
+ FileUtils cp_r(a, out, #{.remove_destination -> true})
309
+
310
+ part css-additions each [a]:
311
+ FileUtils cp_r(a, out)
270
312
 
271
313
  def(search-tags(p)):
272
314
  tags = [
@@ -32,6 +32,9 @@ fn(add-content-to(str & String, body)):
32
32
  []:
33
33
  close-paragraph(body)
34
34
 
35
+ fn(add-content-to(nil, body)):
36
+ nil
37
+
35
38
  fn(add-content-to(x, body)):
36
39
  ensure-paragraph(body)
37
40
  body last content << x
@@ -1,3 +1,3 @@
1
1
  module Anatomy
2
- VERSION = "0.1.7"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,66 +1,66 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anatomy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Suraci
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-01 00:00:00.000000000 Z
11
+ date: 2016-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- type: :runtime
15
14
  name: atomy
16
- prerelease: false
15
+ type: :runtime
17
16
  requirement: !ruby/object:Gem::Requirement
18
17
  requirements:
19
18
  - - "~>"
20
19
  - !ruby/object:Gem::Version
21
20
  version: 0.6.3
21
+ prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.6.3
27
27
  - !ruby/object:Gem::Dependency
28
- type: :runtime
29
28
  name: broomhlda
30
- prerelease: false
29
+ type: :runtime
31
30
  requirement: !ruby/object:Gem::Requirement
32
31
  requirements:
33
32
  - - "~>"
34
33
  - !ruby/object:Gem::Version
35
34
  version: 0.2.0
35
+ prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.2.0
41
41
  - !ruby/object:Gem::Dependency
42
- type: :runtime
43
42
  name: json_pure
44
- prerelease: false
43
+ type: :runtime
45
44
  requirement: !ruby/object:Gem::Requirement
46
45
  requirements:
47
46
  - - "~>"
48
47
  - !ruby/object:Gem::Version
49
48
  version: '1.8'
49
+ prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.8'
55
55
  - !ruby/object:Gem::Dependency
56
- type: :development
57
56
  name: rake
58
- prerelease: false
57
+ type: :development
59
58
  requirement: !ruby/object:Gem::Requirement
60
59
  requirements:
61
60
  - - "~>"
62
61
  - !ruby/object:Gem::Version
63
62
  version: '10.4'
63
+ prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
@@ -118,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  version: '0'
119
119
  requirements: []
120
120
  rubyforge_project: anatomy
121
- rubygems_version: 2.4.8
121
+ rubygems_version: 2.5.1
122
122
  signing_key:
123
123
  specification_version: 4
124
124
  summary: Anatomy documentation system