verku 0.8.0.p

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.gitignore +49 -0
  4. data/BUILD.md +6 -0
  5. data/Gemfile +14 -0
  6. data/Gemfile.lock +82 -0
  7. data/LICENSE.md +22 -0
  8. data/README.md +149 -0
  9. data/Rakefile +72 -0
  10. data/VERSION +1 -0
  11. data/bin/verku +5 -0
  12. data/lib/verku.rb +56 -0
  13. data/lib/verku/adapters/markdown.rb +44 -0
  14. data/lib/verku/cli.rb +93 -0
  15. data/lib/verku/dependency.rb +19 -0
  16. data/lib/verku/exporter.rb +77 -0
  17. data/lib/verku/extensions/string.rb +19 -0
  18. data/lib/verku/generator.rb +55 -0
  19. data/lib/verku/parser.rb +85 -0
  20. data/lib/verku/parser/epub.rb +187 -0
  21. data/lib/verku/parser/html.rb +245 -0
  22. data/lib/verku/parser/mobi.rb +17 -0
  23. data/lib/verku/parser/pdf.rb +54 -0
  24. data/lib/verku/parser/txt.rb +1 -0
  25. data/lib/verku/stats.rb +114 -0
  26. data/lib/verku/stream.rb +27 -0
  27. data/lib/verku/toc.rb +6 -0
  28. data/lib/verku/toc/epub.rb +41 -0
  29. data/lib/verku/toc/html.rb +78 -0
  30. data/lib/verku/version.rb +10 -0
  31. data/templates/config.erb +80 -0
  32. data/templates/cover.jpg +0 -0
  33. data/templates/dp-logo.png +0 -0
  34. data/templates/epub/back.erb +22 -0
  35. data/templates/epub/copyright.erb +46 -0
  36. data/templates/epub/cover.erb +12 -0
  37. data/templates/epub/cover.html +12 -0
  38. data/templates/epub/page.erb +15 -0
  39. data/templates/epub/user.css +500 -0
  40. data/templates/extras.tex +1 -0
  41. data/templates/html/copyright.erb +46 -0
  42. data/templates/html/layout.css +352 -0
  43. data/templates/html/layout.erb +45 -0
  44. data/templates/html/syntax.css +58 -0
  45. data/templates/html/thanks.erb +21 -0
  46. data/templates/html/user.css +7 -0
  47. data/templates/latex.erb +416 -0
  48. data/templates/merovex-logo.jpg +0 -0
  49. data/templates/merovex-logo.png +0 -0
  50. data/templates/pdf/layout.erb +418 -0
  51. data/templates/rakefile.rb +103 -0
  52. data/templates/readme.erb +3 -0
  53. data/templates/text/01-Getting-Started.md +27 -0
  54. data/templates/text/02-Creating-Chapters.md +22 -0
  55. data/templates/text/03-Generating-Output.md +2 -0
  56. data/templates/text/10-Test-Markdown.md +157 -0
  57. data/test/helper.rb +34 -0
  58. data/test/test_bookmaker.rb +7 -0
  59. data/verku.gemspec +142 -0
  60. metadata +317 -0
data/lib/verku/toc.rb ADDED
@@ -0,0 +1,6 @@
1
+ module Verku
2
+ module TOC
3
+ autoload :HTML, "verku/toc/html"
4
+ autoload :Epub, "verku/toc/epub"
5
+ end
6
+ end
@@ -0,0 +1,41 @@
1
+ module Verku
2
+ module TOC
3
+ class Epub
4
+ attr_accessor :navigation
5
+
6
+ def initialize(navigation)
7
+ @navigation = navigation
8
+ end
9
+
10
+ def to_html
11
+ ERB.new(template).result OpenStruct.new(:navigation => navigation).instance_eval{ binding }
12
+ end
13
+
14
+ def template
15
+ <<-HTML.strip_heredoc.force_encoding("utf-8")
16
+ <?xml version="1.0" encoding="utf-8" ?>
17
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
18
+ <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
19
+ <head>
20
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
21
+ <link rel="stylesheet" type="text/css" href="epub.css"/>
22
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
23
+ <title>Table of Contents</title>
24
+ </head>
25
+ <body>
26
+ <div id="toc">
27
+ <ul>
28
+ <% navigation.each do |nav| %>
29
+ <li>
30
+ <a href="<%= nav[:content] %>"><%= nav[:label] %></a>
31
+ </li>
32
+ <% end %>
33
+ </ul>
34
+ </div>
35
+ </body>
36
+ </html>
37
+ HTML
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,78 @@
1
+ module Verku
2
+ module TOC
3
+ class HTML
4
+ # Return the table of contents in hash format.
5
+ #
6
+ attr_reader :toc
7
+
8
+ private_class_method :new
9
+ attr_reader :buffer # :nodoc:
10
+ attr_reader :attrs # :nodoc:
11
+ attr_accessor :content # :nodoc:
12
+
13
+ # Traverse every title and add a +id+ attribute.
14
+ # Return the modified content.
15
+ #
16
+ def self.normalize(content)
17
+ counter = {}
18
+ html = Nokogiri::HTML.parse(content)
19
+ html.search("h1, h2, h3, h4, h5, h6").each do |tag|
20
+ title = tag.inner_text
21
+ permalink = title.to_permalink
22
+
23
+ counter[permalink] ||= 0
24
+ counter[permalink] += 1
25
+
26
+ permalink = "#{permalink}-#{counter[permalink]}" if counter[permalink] > 1
27
+
28
+ tag.set_attribute("id", permalink)
29
+ end
30
+
31
+ html.css("body").to_xhtml.gsub(/<body>(.*?)<\/body>/m, "\\1")
32
+ end
33
+
34
+ # Traverse every title normalizing its content as a permalink.
35
+ #
36
+ def self.generate(content)
37
+ content = normalize(content)
38
+ listener = new
39
+ listener.content = content
40
+ Stream.new(content, listener).parse
41
+ listener
42
+ end
43
+
44
+ def initialize # :nodoc:
45
+ @toc = []
46
+ @counters = {}
47
+ end
48
+
49
+ def tag(node) # :nodoc:
50
+ toc << {
51
+ :level => node.name.gsub(/[^\d]/, "").to_i,
52
+ :text => node.text,
53
+ :permalink => node["id"]
54
+ }
55
+ end
56
+
57
+ # Return a hash with all normalized attributes.
58
+ #
59
+ def to_hash
60
+ {
61
+ :content => content,
62
+ :html => to_html,
63
+ :toc => toc
64
+ }
65
+ end
66
+
67
+ # Return the table of contents in HTML format.
68
+ #
69
+ def to_html
70
+ String.new.tap do |html|
71
+ toc.each do |options|
72
+ html << %[<div class="level#{options[:level]} #{options[:permalink]}"><a href="##{options[:permalink]}"><span>#{CGI.escape_html(options[:text])}</span></a></div>]
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,10 @@
1
+ module Verku
2
+ module Version
3
+ MAJOR = 0
4
+ MINOR = 8
5
+ PATCH = 0
6
+ BUILD = 'p'
7
+
8
+ STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
9
+ end
10
+ end
@@ -0,0 +1,80 @@
1
+ # The book's title. Will be used everywhere!
2
+ title: "<%= @title %>"
3
+
4
+ epub_cover: "cover.jpg" # Name of bookcover
5
+
6
+ # If you have returning characters, put them here:
7
+ # returning_characters: ""
8
+ #next_book: Title of next book in series
9
+
10
+ # The book's language.
11
+ language: "en"
12
+
13
+ # Type: 'fiction' or 'nonfiction'
14
+ type: 'fiction'
15
+
16
+ # Status: 'draft' or 'final'
17
+ status: "draft"
18
+
19
+ # Chapter Style based on Memoir class
20
+ # ftp://ftp.tex.ac.uk/tex-archive/documentation/MemoirChapStyles/MemoirChapStyles.pdf
21
+ chapter_style: "chappell"
22
+
23
+ # Your book copyright info.
24
+ # Here's some examples:
25
+ #
26
+ # Copyright <%= @year %> by <%= @name %>.
27
+ # Copyright <%= @year %> by <%= @name %>. This work is licensed under MIT License.
28
+ # This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
29
+ # This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
30
+ # This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
31
+ #
32
+ copyright: "Copyright (C) <%= @year %> <%= @name %>."
33
+
34
+ # Who's publishing this book.
35
+ publisher: "<%= @name %>"
36
+
37
+ # When this book was published.
38
+ published_at: "<%= Date.today %>"
39
+
40
+ # Some book description.
41
+ subject: "[Your book description]"
42
+
43
+ # Some keywords that identify this book.
44
+ keywords: "[Your book keywords (comma-separated)]"
45
+
46
+ # WTF UUID?
47
+ # https://en.wikipedia.org/wiki/Universally_unique_identifier
48
+ uuid: "<%= @uuid %>"
49
+
50
+ # Your book identification like ISBN or ISSN.
51
+ identifier:
52
+ id: "9-87654-3231-0123"
53
+ type: "ISBN-13" # can be ISBN, ISSN or URL
54
+
55
+ # This book authors.
56
+ authors:
57
+ - "<%= @name %>"
58
+
59
+ # The base URL from your source code.
60
+ base_url: http://example.com
61
+
62
+ series:
63
+ title: "Series TItle"
64
+ books:
65
+ - "Book in Series"
66
+ - "Book in Series"
67
+ #
68
+ fonts:
69
+ serif: "Georgia"
70
+ sans: "Tahoma"
71
+ mono: "Courier"
72
+
73
+ designer:
74
+ book: "Ben Wilson"
75
+ cover: "<%= @name %>"
76
+
77
+ editors:
78
+ text:
79
+
80
+
Binary file
Binary file
@@ -0,0 +1,22 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <title>Back Page</title>
5
+ <style type="text/css"> img { max-width: 100%; } </style>
6
+ </head>
7
+ <body>
8
+ <div class="copyright">
9
+
10
+ <h2 class="no-toc"><%= title %></h2>
11
+
12
+ <p><%= returning_characters %> will return in <em><%= next_book %></em>.</p>
13
+
14
+ <h3>Follow Me</h3>
15
+
16
+ <strong><%= authors.join(', ') %></strong> can be followed on Twitter and Facebook.
17
+
18
+ Visit his web site at <%= "<a href='#{base_url}'>#{base_url}</a>" %> for more information. You can also sign up for announcements of other books in this series at <%= "<a href='#{base_url}'>#{base_url}</a>" %>.
19
+ </div>
20
+
21
+ </body>
22
+ </html>
@@ -0,0 +1,46 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <title>Copyright Page</title>
5
+ <style type="text/css"> img { max-width: 100%; } </style>
6
+ </head>
7
+ <body>
8
+ <div class="copyright">
9
+ <h2 class="no-toc"><%= title %></h2>
10
+ <% if type == 'fiction' %>
11
+ <p>This is a work of fiction. Names, characters, places and incidents are either
12
+ the product of the author's imagination or are used fictitiously, and any resemblance to
13
+ actual persons, living or dead, business establishments, events or locales is entirely
14
+ coincidental.</p>
15
+ <% end %>
16
+
17
+ <p><em><%= copyright.gsub("(C)", "&copy;") %></em></p>
18
+
19
+ <% unless designer['cover'].nil? || designer['cover'].empty? %>
20
+ <p> Cover Design by <%= designer['cover'] %></p>
21
+ <% end %>
22
+
23
+ <% unless designer['book'].nil? || designer['book'].empty? %>
24
+ <p> Book Design by <%= designer['book'] %></p>
25
+ <% end %>
26
+
27
+ <% unless editors['text'].nil? || editors['text'].empty? %>
28
+ <p> Book Design by <%= editors['text'].join(',') %></p>
29
+ <% end %>
30
+
31
+
32
+ <p> All rights reserved.</p>
33
+
34
+ <p> No part of this publication may be reproduced, stored in a retrieval system, posted on the Internet, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without prior written permission from the author. The only exception is by a reviewer, who may quote short excerpts in a review.</p>
35
+
36
+ <p> Visit my website at <%= "<a href='#{base_url}'>#{base_url}</a>" %></p>
37
+
38
+ <p> Printed in the United States of America</p>
39
+
40
+ <p><em>First Printing, <%= published_at %></em></p>
41
+
42
+ <p><%= identifier['type'] %> <%= identifier['id'] %></p>
43
+
44
+ </div>
45
+ </body>
46
+ </html>
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <title>Cover</title>
5
+ <style type="text/css"> img { max-width: 100%; } </style>
6
+ </head>
7
+ <body>
8
+ <div id="cover-image">
9
+ <img src="<%=epub_cover%>" alt="Cover Image for <%=title %>"/>
10
+ </div>
11
+ </body>
12
+ </html>
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <title>Cover</title>
5
+ <style type="text/css"> img { max-width: 100%; } </style>
6
+ </head>
7
+ <body>
8
+ <div id="cover-image">
9
+ <img src="<%=epub_cover%>" alt="Cover Image for <%=title %>"/>
10
+ </div>
11
+ </body>
12
+ </html>
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= language %>">
4
+ <head>
5
+ <title></title>
6
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
7
+ <link rel="stylesheet" type="text/css" href="user.css"/>
8
+ </head>
9
+
10
+ <body>
11
+ <div class="chapter">
12
+ <%= content %>
13
+ </div>
14
+ </body>
15
+ </html>
@@ -0,0 +1,500 @@
1
+ /*! normalize.css v1.0.0 | MIT License | git.io/normalize */
2
+
3
+ /* ==========================================================================
4
+ HTML5 display definitions
5
+ ========================================================================== */
6
+
7
+ /*
8
+ * Corrects `block` display not defined in IE 6/7/8/9 and Firefox 3.
9
+ */
10
+
11
+ article,
12
+ aside,
13
+ details,
14
+ figcaption,
15
+ figure,
16
+ footer,
17
+ header,
18
+ hgroup,
19
+ nav,
20
+ section,
21
+ summary {
22
+ display: block;
23
+ }
24
+
25
+ /*
26
+ * Corrects `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
27
+ */
28
+
29
+ audio,
30
+ canvas,
31
+ video {
32
+ display: inline-block;
33
+ *display: inline;
34
+ *zoom: 1;
35
+ }
36
+
37
+ /*
38
+ * Prevents modern browsers from displaying `audio` without controls.
39
+ * Remove excess height in iOS 5 devices.
40
+ */
41
+
42
+ audio:not([controls]) {
43
+ display: none;
44
+ height: 0;
45
+ }
46
+
47
+ /*
48
+ * Addresses styling for `hidden` attribute not present in IE 7/8/9, Firefox 3,
49
+ * and Safari 4.
50
+ * Known issue: no IE 6 support.
51
+ */
52
+
53
+ [hidden] {
54
+ display: none;
55
+ }
56
+
57
+ /* ==========================================================================
58
+ Base
59
+ ========================================================================== */
60
+
61
+ /*
62
+ * 1. Corrects text resizing oddly in IE 6/7 when body `font-size` is set using
63
+ * `em` units.
64
+ * 2. Prevents iOS text size adjust after orientation change, without disabling
65
+ * user zoom.
66
+ */
67
+
68
+ html {
69
+ font-size: 100%; /* 1 */
70
+ -webkit-text-size-adjust: 100%; /* 2 */
71
+ -ms-text-size-adjust: 100%; /* 2 */
72
+ }
73
+
74
+ /*
75
+ * Addresses `font-family` inconsistency between `textarea` and other form
76
+ * elements.
77
+ */
78
+
79
+ html,
80
+ button,
81
+ input,
82
+ select,
83
+ textarea {
84
+ font-family: sans-serif;
85
+ }
86
+
87
+ /*
88
+ * Addresses margins handled incorrectly in IE 6/7.
89
+ */
90
+
91
+ body {
92
+ margin: 0;
93
+ }
94
+
95
+ /* ==========================================================================
96
+ Links
97
+ ========================================================================== */
98
+
99
+ /*
100
+ * Addresses `outline` inconsistency between Chrome and other browsers.
101
+ */
102
+
103
+ a:focus {
104
+ outline: thin dotted;
105
+ }
106
+
107
+ /*
108
+ * Improves readability when focused and also mouse hovered in all browsers.
109
+ */
110
+
111
+ a:active,
112
+ a:hover {
113
+ outline: 0;
114
+ }
115
+
116
+ /* ==========================================================================
117
+ Typography
118
+ ========================================================================== */
119
+
120
+ /*
121
+ * Addresses font sizes and margins set differently in IE 6/7.
122
+ * Addresses font sizes within `section` and `article` in Firefox 4+, Safari 5,
123
+ * and Chrome.
124
+ */
125
+
126
+ h1 {
127
+ font-size: 2em;
128
+ margin: 0.67em 0;
129
+ }
130
+
131
+ h2 {
132
+ font-size: 1.5em;
133
+ margin: 0.83em 0;
134
+ }
135
+
136
+ h3 {
137
+ font-size: 1.17em;
138
+ margin: 1em 0;
139
+ }
140
+
141
+ h4 {
142
+ font-size: 1em;
143
+ margin: 1.33em 0;
144
+ }
145
+
146
+ h5 {
147
+ font-size: 0.83em;
148
+ margin: 1.67em 0;
149
+ }
150
+
151
+ h6 {
152
+ font-size: 0.75em;
153
+ margin: 2.33em 0;
154
+ }
155
+
156
+ /*
157
+ * Addresses styling not present in IE 7/8/9, Safari 5, and Chrome.
158
+ */
159
+
160
+ abbr[title] {
161
+ border-bottom: 1px dotted;
162
+ }
163
+
164
+ /*
165
+ * Addresses style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
166
+ */
167
+
168
+ b,
169
+ strong {
170
+ font-weight: bold;
171
+ }
172
+
173
+ blockquote {
174
+ margin: 1em 40px;
175
+ }
176
+
177
+ /*
178
+ * Addresses styling not present in Safari 5 and Chrome.
179
+ */
180
+
181
+ dfn {
182
+ font-style: italic;
183
+ }
184
+
185
+ /*
186
+ * Addresses styling not present in IE 6/7/8/9.
187
+ */
188
+
189
+ mark {
190
+ background: #ff0;
191
+ color: #000;
192
+ }
193
+
194
+ /*
195
+ * Addresses margins set differently in IE 6/7.
196
+ */
197
+
198
+ p,
199
+ pre {
200
+ margin: 1em 0;
201
+ }
202
+
203
+ /*
204
+ * Corrects font family set oddly in IE 6, Safari 4/5, and Chrome.
205
+ */
206
+
207
+ code,
208
+ kbd,
209
+ pre,
210
+ samp {
211
+ font-family: monospace, serif;
212
+ _font-family: 'courier new', monospace;
213
+ font-size: 1em;
214
+ }
215
+
216
+ /*
217
+ * Improves readability of pre-formatted text in all browsers.
218
+ */
219
+
220
+ pre {
221
+ white-space: pre;
222
+ white-space: pre-wrap;
223
+ word-wrap: break-word;
224
+ }
225
+
226
+ /*
227
+ * Addresses CSS quotes not supported in IE 6/7.
228
+ */
229
+
230
+ q {
231
+ quotes: none;
232
+ }
233
+
234
+ /*
235
+ * Addresses `quotes` property not supported in Safari 4.
236
+ */
237
+
238
+ q:before,
239
+ q:after {
240
+ content: '';
241
+ content: none;
242
+ }
243
+
244
+ small {
245
+ font-size: 75%;
246
+ }
247
+
248
+ /*
249
+ * Prevents `sub` and `sup` affecting `line-height` in all browsers.
250
+ */
251
+
252
+ sub,
253
+ sup {
254
+ font-size: 75%;
255
+ line-height: 0;
256
+ position: relative;
257
+ vertical-align: baseline;
258
+ }
259
+
260
+ sup {
261
+ top: -0.5em;
262
+ }
263
+
264
+ sub {
265
+ bottom: -0.25em;
266
+ }
267
+
268
+ /* ==========================================================================
269
+ Lists
270
+ ========================================================================== */
271
+
272
+ /*
273
+ * Addresses margins set differently in IE 6/7.
274
+ */
275
+
276
+ dl,
277
+ menu,
278
+ ol,
279
+ ul {
280
+ margin: 1em 0;
281
+ }
282
+
283
+ dd {
284
+ margin: 0 0 0 40px;
285
+ }
286
+
287
+ /*
288
+ * Addresses paddings set differently in IE 6/7.
289
+ */
290
+
291
+ menu,
292
+ ol,
293
+ ul {
294
+ padding: 0 0 0 40px;
295
+ }
296
+
297
+ /*
298
+ * Corrects list images handled incorrectly in IE 7.
299
+ */
300
+
301
+ nav ul,
302
+ nav ol {
303
+ list-style: none;
304
+ list-style-image: none;
305
+ }
306
+
307
+ /* ==========================================================================
308
+ Embedded content
309
+ ========================================================================== */
310
+
311
+ /*
312
+ * 1. Removes border when inside `a` element in IE 6/7/8/9 and Firefox 3.
313
+ * 2. Improves image quality when scaled in IE 7.
314
+ */
315
+
316
+ img {
317
+ border: 0; /* 1 */
318
+ -ms-interpolation-mode: bicubic; /* 2 */
319
+ }
320
+
321
+ /*
322
+ * Corrects overflow displayed oddly in IE 9.
323
+ */
324
+
325
+ svg:not(:root) {
326
+ overflow: hidden;
327
+ }
328
+
329
+ /* ==========================================================================
330
+ Figures
331
+ ========================================================================== */
332
+
333
+ /*
334
+ * Addresses margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
335
+ */
336
+
337
+ figure {
338
+ margin: 0;
339
+ }
340
+
341
+ /* ==========================================================================
342
+ Forms
343
+ ========================================================================== */
344
+
345
+ /*
346
+ * Corrects margin displayed oddly in IE 6/7.
347
+ */
348
+
349
+ form {
350
+ margin: 0;
351
+ }
352
+
353
+ /*
354
+ * Define consistent border, margin, and padding.
355
+ */
356
+
357
+ fieldset {
358
+ border: 1px solid #c0c0c0;
359
+ margin: 0 2px;
360
+ padding: 0.35em 0.625em 0.75em;
361
+ }
362
+
363
+ /*
364
+ * 1. Corrects color not being inherited in IE 6/7/8/9.
365
+ * 2. Corrects text not wrapping in Firefox 3.
366
+ * 3. Corrects alignment displayed oddly in IE 6/7.
367
+ */
368
+
369
+ legend {
370
+ border: 0; /* 1 */
371
+ padding: 0;
372
+ white-space: normal; /* 2 */
373
+ *margin-left: -7px; /* 3 */
374
+ }
375
+
376
+ /*
377
+ * 1. Corrects font size not being inherited in all browsers.
378
+ * 2. Addresses margins set differently in IE 6/7, Firefox 3+, Safari 5,
379
+ * and Chrome.
380
+ * 3. Improves appearance and consistency in all browsers.
381
+ */
382
+
383
+ button,
384
+ input,
385
+ select,
386
+ textarea {
387
+ font-size: 100%; /* 1 */
388
+ margin: 0; /* 2 */
389
+ vertical-align: baseline; /* 3 */
390
+ *vertical-align: middle; /* 3 */
391
+ }
392
+
393
+ /*
394
+ * Addresses Firefox 3+ setting `line-height` on `input` using `!important` in
395
+ * the UA stylesheet.
396
+ */
397
+
398
+ button,
399
+ input {
400
+ line-height: normal;
401
+ }
402
+
403
+ /*
404
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
405
+ * and `video` controls.
406
+ * 2. Corrects inability to style clickable `input` types in iOS.
407
+ * 3. Improves usability and consistency of cursor style between image-type
408
+ * `input` and others.
409
+ * 4. Removes inner spacing in IE 7 without affecting normal text inputs.
410
+ * Known issue: inner spacing remains in IE 6.
411
+ */
412
+
413
+ button,
414
+ html input[type="button"], /* 1 */
415
+ input[type="reset"],
416
+ input[type="submit"] {
417
+ -webkit-appearance: button; /* 2 */
418
+ cursor: pointer; /* 3 */
419
+ *overflow: visible; /* 4 */
420
+ }
421
+
422
+ /*
423
+ * Re-set default cursor for disabled elements.
424
+ */
425
+
426
+ button[disabled],
427
+ input[disabled] {
428
+ cursor: default;
429
+ }
430
+
431
+ /*
432
+ * 1. Addresses box sizing set to content-box in IE 8/9.
433
+ * 2. Removes excess padding in IE 8/9.
434
+ * 3. Removes excess padding in IE 7.
435
+ * Known issue: excess padding remains in IE 6.
436
+ */
437
+
438
+ input[type="checkbox"],
439
+ input[type="radio"] {
440
+ box-sizing: border-box; /* 1 */
441
+ padding: 0; /* 2 */
442
+ *height: 13px; /* 3 */
443
+ *width: 13px; /* 3 */
444
+ }
445
+
446
+ /*
447
+ * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome.
448
+ * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome
449
+ * (include `-moz` to future-proof).
450
+ */
451
+
452
+ input[type="search"] {
453
+ -webkit-appearance: textfield; /* 1 */
454
+ -moz-box-sizing: content-box;
455
+ -webkit-box-sizing: content-box; /* 2 */
456
+ box-sizing: content-box;
457
+ }
458
+
459
+ /*
460
+ * Removes inner padding and search cancel button in Safari 5 and Chrome
461
+ * on OS X.
462
+ */
463
+
464
+ input[type="search"]::-webkit-search-cancel-button,
465
+ input[type="search"]::-webkit-search-decoration {
466
+ -webkit-appearance: none;
467
+ }
468
+
469
+ /*
470
+ * Removes inner padding and border in Firefox 3+.
471
+ */
472
+
473
+ button::-moz-focus-inner,
474
+ input::-moz-focus-inner {
475
+ border: 0;
476
+ padding: 0;
477
+ }
478
+
479
+ /*
480
+ * 1. Removes default vertical scrollbar in IE 6/7/8/9.
481
+ * 2. Improves readability and alignment in all browsers.
482
+ */
483
+
484
+ textarea {
485
+ overflow: auto; /* 1 */
486
+ vertical-align: top; /* 2 */
487
+ }
488
+
489
+ /* ==========================================================================
490
+ Tables
491
+ ========================================================================== */
492
+
493
+ /*
494
+ * Remove most spacing between table cells.
495
+ */
496
+
497
+ table {
498
+ border-collapse: collapse;
499
+ border-spacing: 0;
500
+ }