jazzy 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +59 -0
  3. data/LICENSE +21 -0
  4. data/README.md +62 -0
  5. data/Rakefile +1 -0
  6. data/bin/ASTDump +0 -0
  7. data/bin/SwiftHeader +22 -0
  8. data/bin/jazzy +42 -0
  9. data/jazzy.gemspec +27 -0
  10. data/lib/assets/CSS/style-1.1.15.css +3366 -0
  11. data/lib/assets/Images/apple2.png +0 -0
  12. data/lib/assets/Images/carat_2x.png +0 -0
  13. data/lib/assets/Images/check.png +0 -0
  14. data/lib/assets/Images/class_node_parent_and_child_2x.png +0 -0
  15. data/lib/assets/Images/class_node_subclass_last_child_2x.png +0 -0
  16. data/lib/assets/Images/class_node_subclass_with_siblings_2x.png +0 -0
  17. data/lib/assets/Images/closebox_2x.png +0 -0
  18. data/lib/assets/Images/collection_last_child_2x.png +0 -0
  19. data/lib/assets/Images/collection_last_child_orphan_grandparent_2x.png +0 -0
  20. data/lib/assets/Images/collection_last_child_orphan_parent_2x.png +0 -0
  21. data/lib/assets/Images/collection_last_child_orphan_parent_and_grandparent_2x.png +0 -0
  22. data/lib/assets/Images/collection_node_2x.png +0 -0
  23. data/lib/assets/Images/collection_node_orphan_grandparent_2x.png +0 -0
  24. data/lib/assets/Images/collection_node_orphan_parent_2x.png +0 -0
  25. data/lib/assets/Images/collection_node_orphan_parent_and_grandparent_2x.png +0 -0
  26. data/lib/assets/Images/collection_node_parent_2x.png +0 -0
  27. data/lib/assets/Images/collection_node_parent_last_child_orphan_parent_2x.png +0 -0
  28. data/lib/assets/Images/collection_node_parent_orphan_parent_2x.png +0 -0
  29. data/lib/assets/Images/collection_parent_last_child_2x.png +0 -0
  30. data/lib/assets/Images/download_2x.png +0 -0
  31. data/lib/assets/Images/left_arrow_2x.png +0 -0
  32. data/lib/assets/Images/magnify_2x.png +0 -0
  33. data/lib/assets/Images/minus_2x.png +0 -0
  34. data/lib/assets/Images/playbutton.svg +15 -0
  35. data/lib/assets/Images/plus_2x.png +0 -0
  36. data/lib/assets/Images/right_arrow_2x.png +0 -0
  37. data/lib/assets/Images/search_2x.png +0 -0
  38. data/lib/assets/Images/shortstack_2x.png +0 -0
  39. data/lib/assets/JavaScript/devpubs-1.1.15.js +1293 -0
  40. data/lib/jazzy.rb +133 -0
  41. data/lib/jazzy/jazzhtml.rb +7 -0
  42. data/lib/jazzy/klass.mustache +325 -0
  43. data/lib/jazzy/klass.rb +27 -0
  44. data/lib/jazzy/partials/klass-method.mustache +84 -0
  45. data/lib/jazzy/partials/klass-overview.mustache +6 -0
  46. data/lib/jazzy/partials/klass-property.mustache +52 -0
  47. data/parser/ASTDump.xcodeproj/project.pbxproj +288 -0
  48. data/parser/ASTDump.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  49. data/parser/ASTDump.xcodeproj/project.xcworkspace/xcshareddata/ASTDump.xccheckout +41 -0
  50. data/parser/ASTDump.xcodeproj/project.xcworkspace/xcuserdata/ta.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  51. data/parser/ASTDump.xcodeproj/xcuserdata/ta.xcuserdatad/xcschemes/ASTDump.xcscheme +86 -0
  52. data/parser/ASTDump.xcodeproj/xcuserdata/ta.xcuserdatad/xcschemes/xcschememanagement.plist +22 -0
  53. data/parser/ASTDump/JAZMusician.h +38 -0
  54. data/parser/ASTDump/JAZMusician.m +19 -0
  55. data/parser/ASTDump/main.cpp +71 -0
  56. data/parser/clang-c/BuildSystem.h +148 -0
  57. data/parser/clang-c/CXCompilationDatabase.h +170 -0
  58. data/parser/clang-c/CXErrorCode.h +64 -0
  59. data/parser/clang-c/CXString.h +61 -0
  60. data/parser/clang-c/Documentation.h +554 -0
  61. data/parser/clang-c/Index.h +5438 -0
  62. data/parser/clang-c/Platform.h +45 -0
  63. metadata +190 -0
@@ -0,0 +1,133 @@
1
+ class Jazzy
2
+ def self.headers(path)
3
+ paths = []
4
+ Find.find(path) do |path|
5
+ if (path =~ /.*\.h$/) and not (path =~ /.*private\.h$/i) and not (path =~ /test.*\//i)
6
+ paths << File.expand_path(path)
7
+ end
8
+ end
9
+ return paths
10
+ end
11
+
12
+ def self.document(path)
13
+ bin_path = File.expand_path(File.join( File.dirname(__FILE__),'../bin'))
14
+
15
+ klass = Jazzy::Klass.new
16
+
17
+ string = `#{bin_path}/SwiftHeader #{path}`
18
+ a = string.split(/^\[/); swift = a[0]; map = "[\n"+a[-1]
19
+
20
+ map.gsub!(/(key.\w+):/,'"\1":')
21
+ map.gsub!(/(source..+),/,'"\1",')
22
+
23
+ #print map
24
+ #gets
25
+
26
+ map = JSON.parse(map)[0]
27
+
28
+ swiftmap = {}
29
+
30
+ map["key.entities"].each do |e|
31
+ swiftmap[e["key.usr"]] = {}
32
+ swiftmap[e["key.usr"]]["declaration"] = swift.byteslice(e["key.offset"], e["key.length"])
33
+ swiftmap[e["key.usr"]]["name"] = e["key.name"]
34
+ end
35
+
36
+ xml = `#{bin_path}/ASTDump #{path}`
37
+
38
+ doc = Nokogiri::XML(xml)
39
+
40
+ # Fill in Overview
41
+ doc.xpath("//Other[1]").each do |e|
42
+ klass[:name] = e.xpath("Name").text
43
+ klass[:usr] = e.xpath("USR").text
44
+ klass[:declaration] = {}
45
+ klass[:declaration][:objc] = e.xpath("Declaration").text.strip
46
+ klass[:abstract] = e.xpath("Abstract/Para").text.strip
47
+ paras = []; e.xpath("./Discussion/Para").each {|p| paras << p.text.strip }
48
+ klass[:discussion] = paras.join("\n\n")
49
+ end
50
+
51
+ # Inherits
52
+ klass[:inherits] = []
53
+ map["key.inherits"].each do |i|
54
+ klass[:inherits] << { usr: i["key.usr"], name: i["key.name"] }
55
+ end
56
+
57
+ # Conforms to
58
+ klass[:conforms] = []
59
+ map["key.conforms"].each do |c|
60
+ klass[:conforms] << { usr: c["key.usr"], name: c["key.name"] }
61
+ end
62
+
63
+ # Import
64
+ klass[:import] = swift.split("\n")[0].chomp.gsub('import ', '')
65
+
66
+ # Fill in Properties
67
+ klass[:properties] = []
68
+ doc.xpath("//Other[position()>1]").each do |e|
69
+ property = {}
70
+ property[:usr] = e.xpath("USR").text
71
+ property[:name] = {}
72
+ property[:name][:objc] = e.xpath("Name").text
73
+ property[:name][:swift] = swiftmap[property[:usr]]["name"]
74
+ property[:term] = property[:usr]
75
+ property[:declaration] = {}
76
+ property[:declaration][:objc] = e.xpath("Declaration").text.strip
77
+ property[:declaration][:swift] = swiftmap[property[:usr]]["declaration"]
78
+ property[:abstract] = e.xpath("Abstract/Para").text.strip
79
+ paras = []; e.xpath("Discussion/Para").each {|p| paras << p.text.strip }
80
+ property[:discussion] = paras.join("\n\n") unless paras.length == 0
81
+ klass[:properties] << property
82
+ end
83
+
84
+ # Fill in Methods
85
+ klass[:methods] = []
86
+ doc.xpath("//Function").each do |e|
87
+ method = {}
88
+ method[:usr] = e.xpath("USR").text
89
+ method[:name] = {}
90
+ method[:name][:objc] = e.xpath("Name").text
91
+ method[:name][:swift] = swiftmap[method[:usr]]["name"]
92
+ next if method[:usr].include?('(py)')
93
+ method[:term] = method[:usr].split(')')[-1]
94
+ method[:declaration] = {}
95
+ method[:declaration][:objc] = e.xpath("Declaration").text
96
+ method[:declaration][:swift] = swiftmap[method[:usr]]["declaration"]
97
+ method[:abstract] = e.xpath("Abstract/Para").text.strip
98
+ paras = []; e.xpath("Discussion/Para").each {|p| paras << p.text.strip }
99
+ method[:discussion] = paras.join("\n\n") unless paras.length == 0
100
+ method[:result] = e.xpath("ResultDiscussion/Para").text.strip
101
+
102
+ method[:parameters] = []
103
+ parameters = []; e.xpath("//Parameter").each do |p|
104
+ param = {}
105
+ param[:name] = p.xpath("Name").text
106
+ param[:discussion] = p.xpath("Discussion/Para").text.strip
107
+ method[:parameters] << param
108
+ end
109
+
110
+ klass[:methods] << method
111
+ end
112
+
113
+ klass.render
114
+ end
115
+
116
+ def self.assets(dir)
117
+ Dir.mkdir(File.join(dir,'CSS'))
118
+ Dir.mkdir(File.join(dir,'JavaScript'))
119
+ Dir.mkdir(File.join(dir,'Images'))
120
+ FileUtils.cp_r(Dir[File.expand_path(File.join( File.dirname(__FILE__),'assets/*'))],dir)
121
+ end
122
+
123
+ end
124
+
125
+ require 'mustache'
126
+ require 'redcarpet'
127
+ require 'nokogiri'
128
+ require 'json'
129
+ require 'active_support/core_ext/hash/conversions'
130
+ require 'date'
131
+ require 'uri'
132
+ require "jazzy/klass.rb"
133
+ require "jazzy/jazzhtml.rb"
@@ -0,0 +1,7 @@
1
+ class JazzHTML < Redcarpet::Render::HTML
2
+ def paragraph(text)
3
+ "<p class=\"para\">#{text}</p>"
4
+ end
5
+ end
6
+
7
+ $markdown = Redcarpet::Markdown.new(JazzHTML, extensions = {})
@@ -0,0 +1,325 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <title>{{name}} Class Reference</title>
6
+ <link rel="stylesheet" type="text/css" href="CSS/style-1.1.15.css" />
7
+ <meta charset='utf-8'>
8
+ <meta id="g-version" name="g-version" content="fe723145" />
9
+ <meta id="j-version" name="j-version" content="1.1.5" />
10
+ <meta id="build" name="build" content="f1aa04d1aa2f963cad215bcb4e8adc61" />
11
+ <meta id="document-version" name="document-version" content="1.0.4" />
12
+ <meta id="book-assignments" name="book-assignments" content="{Type/Reference}, {Framework/Core Services Layer/CloudKit}" />
13
+ <meta scheme="apple_ref" id="identifier" name="identifier" content="//apple_ref/doc/uid/TP40014033" />
14
+ <meta id="book-title" name="book-title" content="CKAsset Class Reference" />
15
+ <meta id="book-resource-type" name="book-resource-type" content="Reference" />
16
+ <meta id="book-root" name="book-root" content="./" />
17
+ <meta id="book-json" name="book-json" content="book.json">
18
+ <meta id="date" name="date" content="2014-05-22" />
19
+ <meta id="description" name="description" content="Describes a data file to be stored in iCloud." />
20
+ <meta id="IndexTitle" name="IndexTitle" content="" />
21
+
22
+ <meta id="devcenter" name="devcenter" content="<!-- DEVCENTER_NAME -->" />
23
+ <meta id="devcenter-url" name="devcenter-url" content="<!-- DEVCENTER_URL -->" />
24
+ <meta id="reflib" name="reflib" content="<!-- REFLIB_NAME -->" />
25
+
26
+ <meta id="xcode-display" name="xcode-display" content="render" />
27
+ <meta name="apple-mobile-web-app-capable" content="yes" />
28
+ <meta name="viewport" content="width=device-width, maximum-scale=1.0">
29
+ <meta id="framework" name="framework" content="CloudKit" />
30
+ </head>
31
+
32
+ <body id="reference" class="jazz both">
33
+ <div id="_omniture_top">
34
+ <!-- SiteCatalyst code will be injected here when viewed in production -->
35
+ </div>
36
+ <a name="//apple_ref/doc/uid/TP40014033" title="{{name}} Class Reference"></a>
37
+
38
+ <header id="ios_header" class="hideOnPrint hideInXcode">
39
+ <div class="content-wrapper">
40
+ <p class="header-text">
41
+ <a href="../../../../navigation/">iOS Developer Library</a>
42
+ </p>
43
+ <p id="wwdr">
44
+ <img id="apple_logo" src="Images/apple2.png" height="14px" width="12px" aria-hidden="true" /><a href="https://developer.apple.com">Developer</a>
45
+ </p>
46
+ </div>
47
+ </header>
48
+
49
+ <section id="valence">
50
+ <div class="content-wrapper">
51
+ <p id="hierarchial_navigation">
52
+ <a href="../CloudKit_Framework_Reference/index.html#//apple_ref/doc/uid/TP40014064" id="design_resources_link">Framework Reference</a>
53
+ <img id="carat" src="Images/carat_2x.png" height="10px" width="6px" aria-hidden="true" />
54
+ <span id="book_title">{{name}} Class Reference</span>
55
+ </p>
56
+ <form id="search" class="hideInXcode" method="get" action="../../../../search/" accept-charset="utf-8" autocomplete="off">
57
+ <input type="search" id="ssi_SearchField" placeholder="Search iOS Developer Library" name="q" autocomplete="off" tabindex="2" />
58
+ </form>
59
+
60
+ <img id="shortstack" src="Images/shortstack_2x.png" />
61
+ </div>
62
+ </section>
63
+ <div class="content-wrapper">
64
+ <nav class='book-parts hideInXcode'>
65
+ <ul class="nav-parts">
66
+ <li class="part-name tasks">
67
+
68
+ Tasks
69
+
70
+ <!--FIXME-->
71
+ <ul class="nav-chapters">
72
+ <li class="nav-chapter">
73
+ <a href="#//apple_ref/doc/uid/TP40014033-CH1-SW5">Initializing an Asset</a>
74
+ </li>
75
+ <li class="nav-chapter">
76
+ <a href="#//apple_ref/doc/uid/TP40014033-CH1-SW3">Getting the URL of the Asset</a>
77
+ </li>
78
+ </ul>
79
+ </li>
80
+ </ul>
81
+ </nav>
82
+ <article class="chapter">
83
+ <a name="//apple_ref/doc/uid/TP40014033-CH1"></a>
84
+ <a name="//apple_ref/doc/uid/TP40014033-CH1-SW2"></a>
85
+ <a name="//apple_ref/occ/cl/CKAsset"></a>
86
+ <a name="//apple_ref/swift/cl/CKAsset"></a>
87
+ <a name="//apple_ref/doc/c_ref/CKAsset"></a>
88
+ <div class="pixel-line"></div>
89
+
90
+ <menu id="bashful" type="toolbar">
91
+ <div class="shield"></div>
92
+ <menuitem id="language">
93
+ <span>Language:</span>
94
+ <input id="swift" type="radio" name="li" value="Swift" />
95
+ <label for="swift">Swift</label>
96
+ <input id="obj_c" type="radio" name="li" value="Objective-C" />
97
+ <label for="obj_c">Obj-C</label>
98
+ <input id="both" type="radio" name="li" value="both" />
99
+ <label for="both" class="selected">Both</label>
100
+ </menuitem>
101
+ <menuitem id="jump_to" class="menu-bar-item closed">
102
+ <span>On This Page</span>
103
+ <div class="chevron">
104
+ <div class="chevy chevron-left"></div>
105
+ <div class="chevy chevron-right"></div>
106
+ </div>
107
+ <menu type="list" class="details">
108
+ <input class="filter" type="search" placeholder="Filter list of symbols" autocorrect="off" spellcheck="false" tabindex="1" />
109
+ <span id="filter_matches" role="status" aria-live="polite"></span>
110
+ <ul class="list-bullet Objective-C">
111
+ <li class="item">
112
+ <a class="otp-indent" href="#//apple_ref/occ/instp/CKAsset/fileURL">fileURL</a>
113
+ </li>
114
+ <li class="item">
115
+ <a href="#//apple_ref/occ/instm/CKAsset/initWithFileURL:">- initWithFileURL:</a>
116
+ </li>
117
+ </ul>
118
+ <ul class="list-bullet Swift">
119
+ <li class="item">
120
+ <a class="otp-indent" href="#//apple_ref/occ/instp/CKAsset/fileURL">fileURL</a>
121
+ </li>
122
+ <li class="item">
123
+ <a class="otp-indent" href="#//apple_ref/occ/instm/CKAsset/initWithFileURL:">init(fileURL:)</a>
124
+ </li>
125
+ </ul>
126
+ </menu>
127
+ </menuitem>
128
+ <menuitem id="options" class="menu-bar-item closed">
129
+ <span>Options</span>
130
+ <div class="chevron">
131
+ <div class="chevy chevron-left"></div>
132
+ <div class="chevy chevron-right"></div>
133
+ </div>
134
+ <menu type="list" class="details">
135
+ <menuitem>
136
+ <span>Deployment Target:</span>
137
+
138
+ <select id="deployment_target_ios" data-availability="8.0">
139
+ <option value="999">Latest</option>
140
+ <option value="8.0">iOS 8.0</option>
141
+ <option value="7.1" disabled>iOS 7.1</option>
142
+ <option value="7.0" disabled>iOS 7.0</option>
143
+ <option value="6.1" disabled>iOS 6.1</option>
144
+ <option value="6.0" disabled>iOS 6.0</option>
145
+ <option value="5.1" disabled>iOS 5.1</option>
146
+ <option value="5.0" disabled>iOS 5.0</option>
147
+ <option value="4.3" disabled>iOS 4.3</option>
148
+ <option value="4.2" disabled>iOS 4.2</option>
149
+ <option value="4.1" disabled>iOS 4.1</option>
150
+ <option value="4.0" disabled>iOS 4.0</option>
151
+ <option value="3.2" disabled>iOS 3.2</option>
152
+ <option value="3.1" disabled>iOS 3.1</option>
153
+ <option value="3.0" disabled>iOS 3.0</option>
154
+ <option value="2.2" disabled>iOS 2.2</option>
155
+ <option value="2.1" disabled>iOS 2.1</option>
156
+ <option value="2.0" disabled>iOS 2.0</option>
157
+ </select>
158
+ </menuitem>
159
+ <br />
160
+ <menuitem>
161
+ <input id="deprecated" type="checkbox" name="deprecated" />
162
+ <label for="deprecated">
163
+ Hide deprecated symbols
164
+ <span class="keyboard-shortcut" title="Keyboard shortcut: D">D</span>
165
+ </label>
166
+ </menuitem>
167
+ <br />
168
+ <menuitem>
169
+ <input id="auto_expand" type="checkbox" name="auto_expand" />
170
+ <label for="auto_expand">
171
+ Auto-expand all symbols
172
+ <span class="keyboard-shortcut" title="Keyboard shortcut: A">A</span>
173
+ </label>
174
+ </menuitem>
175
+ </menu>
176
+ </menuitem>
177
+ </menu>
178
+ <div class="rubber-band-gap"></div>
179
+
180
+ <h1 class="chapter-name">{{name}}</h1>
181
+
182
+ <section id="reference_container">
183
+ <!--
184
+ <div class="important clear">
185
+
186
+ <aside class="aside">
187
+ <p class="aside-title">Important
188
+ </p>
189
+ <p class="para">This is a preliminary document for an API or technology in development. Apple is supplying this information to help you plan for the adoption of the technologies and programming interfaces described herein for use on Apple-branded products. This information is subject to change, and software implemented according to this document should be tested with final operating system software and final documentation. Newer versions of this document may be provided with future seeds of the API or technology.
190
+ </p>
191
+
192
+ </aside>
193
+ </div>
194
+ -->
195
+
196
+ <section class="z-class-description section">
197
+ <a name="//apple_ref/doc/uid/TP40014033-CH1-DontLinkElementID_1"></a>
198
+ {{> jazzy/partials/klass-overview }}
199
+ </section>
200
+
201
+
202
+ <section id="metadata_table">
203
+
204
+ <div class="inheritance">
205
+ <p class="para">Inheritance</p>
206
+ <hr />
207
+ <ul class="Swift">
208
+ {{#inherits}}
209
+ <li class="depth4">
210
+ <code class="code-voice">
211
+ <a href="{{usr}}">{{name}}</a>
212
+ </code>
213
+ </li>
214
+ {{/inherits}}
215
+
216
+ <li class="depth5 subclass">
217
+ <code class="code-voice">{{name}}</code>
218
+ </li>
219
+ </ul>
220
+ <ul class="Objective-C">
221
+ {{#inherits}}
222
+ <li class="depth4">
223
+ <code class="code-voice">
224
+ <a href="{{usr}}">{{name}}</a>
225
+ </code>
226
+ </li>
227
+ {{/inherits}}
228
+ <li class="depth5 subclass">
229
+ <code class="code-voice">{{name}}</code>
230
+ </li>
231
+ </ul>
232
+ </div>
233
+
234
+ <div class="conforms-to">
235
+ <p class="para">Conforms To</p>
236
+ <hr />
237
+ <ul>
238
+ {{#conforms}}
239
+ <li class="Swift">
240
+ <code class="code-voice">
241
+ {{name}}
242
+ </code>
243
+ </li>
244
+ {{/conforms}}
245
+ <li class="Objective-C">
246
+ <code class="code-voice">
247
+ <a href="../../../Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/index.html#//apple_ref/occ/intf/NSObject" data-id="//apple_ref/occ/intf/NSObject">NSObject</a>
248
+ </code>
249
+ </li>
250
+ </ul>
251
+ </div>
252
+
253
+ <div class="last-box">
254
+ <div class="z-module-import half">
255
+ <p class="para">Import Statement</p>
256
+ <hr />
257
+ <code class="code-voice Swift">import {{import}}</code>
258
+ <code class="code-voice Objective-C">@import {{import}};</code>
259
+ </div>
260
+
261
+ <div class="z-reference-info-availability half">
262
+ <p class="para">Availability</p>
263
+ <hr />
264
+ <span>Available in iOS 8.0 and later.</span>
265
+ <br />
266
+ </div>
267
+ </div>
268
+
269
+ </section>
270
+
271
+
272
+ <section class="section task-group-section">
273
+ <a name="//apple_ref/doc/uid/TP40014033-CH1-DontLinkElementID_2"></a>
274
+ <div class="task-group">
275
+ <div class="task-name-container">
276
+ <a name="//apple_ref/doc/uid/TP40014033-CH1-SW3"></a>
277
+ <a href="#//apple_ref/doc/uid/TP40014033-CH1-SW3">
278
+ <h3 class="section-name">Getting the URL of the Asset</h3>
279
+ </a>
280
+ </div>
281
+ <ul class="task-group-list">
282
+ {{#methods}}
283
+ {{> jazzy/partials/klass-method}}
284
+ {{/methods}}
285
+ {{#properties}}
286
+ {{> jazzy/partials/klass-property}}
287
+ {{/properties}}
288
+ <li class="hiding-symbol-counts">
289
+ <p><em class="hiding-swift"></em>
290
+ </p>
291
+ <p><em class="hiding-obj-c"></em>
292
+ </p>
293
+ <p><em class="hiding-dep"></em>
294
+ </p>
295
+ <p><em class="hiding-dt"></em>
296
+ </p>
297
+ </li>
298
+ </ul>
299
+ </div>
300
+ </section>
301
+
302
+
303
+ </section>
304
+
305
+
306
+ <section id="next_previous">
307
+ <p class="copyright">Copyright &#x00a9; 2014 Apple Inc. All rights reserved.
308
+ <a class="link" href="http://www.apple.com/legal/terms/site.html" target="_blank" rel="external">Terms of Use</a> |
309
+ <a class="link" href="http://www.apple.com/privacy/" target="_blank" rel="external">Privacy Policy</a> | Updated: 2014-05-22
310
+ </p>
311
+ </section>
312
+
313
+ </article>
314
+
315
+ </div>
316
+ <footer id="footer">
317
+ <div class="content-wrapper">
318
+ <div id="leave_feedback" class="button" role="button" tabindex="0">Feedback</div>
319
+ </div>
320
+ <script src="JavaScript/devpubs-1.1.15.js" type="text/javascript" charset="utf-8"></script>
321
+ </footer>
322
+
323
+
324
+ </body>
325
+ </html>