write_down 0.0.3 → 0.0.5

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.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/Gemfile +1 -1
  4. data/README.md +2 -2
  5. data/bin/write_down +42 -1
  6. data/lib/write_down/article.rb +64 -0
  7. data/lib/write_down/configuration.rb +6 -0
  8. data/lib/write_down/converter.rb +8 -0
  9. data/lib/write_down/page.rb +6 -0
  10. data/lib/write_down/series.rb +10 -0
  11. data/lib/write_down/site.rb +10 -0
  12. data/lib/write_down/template.rb +20 -0
  13. data/lib/write_down/version.rb +1 -1
  14. data/lib/write_down.rb +31 -1
  15. data/template/emacs/404.html +157 -0
  16. data/template/emacs/CHANGELOG.md +133 -0
  17. data/template/emacs/CONTRIBUTING.md +154 -0
  18. data/template/emacs/LICENSE.md +19 -0
  19. data/template/emacs/README.md +1 -0
  20. data/template/emacs/apple-touch-icon-precomposed.png +0 -0
  21. data/template/emacs/crossdomain.xml +15 -0
  22. data/template/emacs/css/custom.css +18 -0
  23. data/template/emacs/css/main.css +304 -0
  24. data/template/emacs/css/normalize.css +527 -0
  25. data/template/emacs/favicon.ico +0 -0
  26. data/template/emacs/humans.txt +15 -0
  27. data/template/emacs/img/.gitignore +0 -0
  28. data/template/emacs/index.html +62 -0
  29. data/template/emacs/js/main.js +1 -0
  30. data/template/emacs/js/plugins.js +24 -0
  31. data/template/emacs/js/vendor/jquery-1.10.2.min.js +6 -0
  32. data/template/emacs/js/vendor/modernizr-2.6.2.min.js +4 -0
  33. data/template/emacs/post.html +80 -0
  34. data/template/emacs/robots.txt +3 -0
  35. data/template/simple/404.html +157 -0
  36. data/template/simple/CNAME +1 -0
  37. data/template/simple/README.md +1 -0
  38. data/template/simple/_disqus.mustache +19 -0
  39. data/template/simple/_footer.mustache +28 -0
  40. data/template/simple/_header.mustache +38 -0
  41. data/template/simple/apple-touch-icon-precomposed.png +0 -0
  42. data/template/simple/crossdomain.xml +15 -0
  43. data/template/simple/css/layout.css +72 -0
  44. data/template/simple/css/main.css +304 -0
  45. data/template/simple/css/normalize.css +527 -0
  46. data/template/simple/favicon.ico +0 -0
  47. data/template/simple/humans.txt +15 -0
  48. data/template/simple/img/.gitignore +0 -0
  49. data/template/simple/index.html +12 -0
  50. data/template/simple/js/main.js +1 -0
  51. data/template/simple/js/plugins.js +24 -0
  52. data/template/simple/js/vendor/jquery-1.10.2.min.js +6 -0
  53. data/template/simple/js/vendor/modernizr-2.6.2.min.js +4 -0
  54. data/template/simple/post.html +9 -0
  55. data/template/simple/robots.txt +3 -0
  56. data/theme/ghost/assets/css/screen.css +911 -0
  57. data/theme/ghost/index.html +75 -0
  58. data/theme/ghost/post.html +112 -0
  59. data/theme/html5-boilerplate/.gitattributes +1 -0
  60. data/theme/html5-boilerplate/.gitignore +2 -0
  61. data/theme/html5-boilerplate/.htaccess +551 -0
  62. data/theme/html5-boilerplate/404.html +157 -0
  63. data/theme/html5-boilerplate/CHANGELOG.md +133 -0
  64. data/theme/html5-boilerplate/CONTRIBUTING.md +154 -0
  65. data/theme/html5-boilerplate/LICENSE.md +19 -0
  66. data/theme/html5-boilerplate/README.md +61 -0
  67. data/theme/html5-boilerplate/apple-touch-icon-precomposed.png +0 -0
  68. data/theme/html5-boilerplate/crossdomain.xml +15 -0
  69. data/theme/html5-boilerplate/css/main.css +297 -0
  70. data/theme/html5-boilerplate/css/normalize.css +527 -0
  71. data/theme/html5-boilerplate/favicon.ico +0 -0
  72. data/theme/html5-boilerplate/humans.txt +15 -0
  73. data/theme/html5-boilerplate/img/.gitignore +0 -0
  74. data/theme/html5-boilerplate/index.html +91 -0
  75. data/theme/html5-boilerplate/js/main.js +1 -0
  76. data/theme/html5-boilerplate/js/plugins.js +24 -0
  77. data/theme/html5-boilerplate/js/vendor/jquery-1.10.2.min.js +6 -0
  78. data/theme/html5-boilerplate/js/vendor/modernizr-2.6.2.min.js +4 -0
  79. data/theme/html5-boilerplate/post.html +70 -0
  80. data/theme/html5-boilerplate/robots.txt +3 -0
  81. data/write_down.gemspec +3 -0
  82. metadata +125 -11
  83. data/.rvmrc +0 -62
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 086f9981235572369e49a15c942459afcaee020c
4
- data.tar.gz: 8361e50e23d16b7470fe1fb1ac212b246f7a51dd
3
+ metadata.gz: fa18d35891eb1c5b91441efe68e7af906f76b6fe
4
+ data.tar.gz: 36bc4253c45dc12535cdabf6824312e024367a93
5
5
  SHA512:
6
- metadata.gz: c6699b386d0ca46c823e53d35f0bdd1691cb00433fd41d78b3af624c422baa5c488f54acd878b01f7966e8f809d404bcb3fcb25995ba9b6293fd1d7bd17a163f
7
- data.tar.gz: 052b3977f6f6deb2ccc00bbf61e7597dd7369d126f60603bb6cbf707aa394d6c703ad36a65ef0ff40443028da88653f02e7c8bc655e8df5abd4916695cfb7c52
6
+ metadata.gz: 24b689ce00659c8dc99205aa1f01df9c01e7a98b2a971d1a4a08c6ad445e66fcbc60f6e2d09b455e81ea3cc255370b8a6df16b7652d21672c848d676ef09d253
7
+ data.tar.gz: 3a20b4d425daf515dfb6f7a851fba5a09aa242e85bb720496d758bee2602c462b21decfb6401aaa5ae79b79fa0e431cf505d200e7f3ede0a9ec643780aaa71a7
data/.gitignore CHANGED
@@ -15,3 +15,7 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .rvmrc
19
+ .ruby-version
20
+ .ruby-gemset
21
+ *.sh
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source 'http://ruby.taobao.org'
2
2
 
3
3
  # Specify your gem's dependencies in write_down.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # WriteDown
2
2
 
3
- TODO: Write a gem description
3
+ yet another static blog generator
4
4
 
5
5
  ## Installation
6
6
 
@@ -18,7 +18,7 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ $ write_down source dist
22
22
 
23
23
  ## Contributing
24
24
 
data/bin/write_down CHANGED
@@ -1,2 +1,43 @@
1
+ #!/usr/bin/env ruby
2
+ require 'optparse'
1
3
  require "write_down"
2
- puts WriteDown.hello
4
+
5
+ options = {}
6
+
7
+ optparse = OptionParser.new do|opts|
8
+
9
+ # opts.banner= <<-BANNER "Usage: write_down -t the_theme_name -s the_posts_source -d the_generated_dist"
10
+ opts.banner= <<-BANNER
11
+ yet another static blog generator
12
+
13
+ Usage: write_down -t the_theme_name -s the_posts_source -d the_generated_dist
14
+
15
+ BANNER
16
+
17
+ # Define the options, and what they do
18
+ options[:theme] = 'simple'
19
+ opts.on("-t theme", "the theme name") do |theme|
20
+ options[:theme] = theme
21
+ end
22
+
23
+ # Create a flag
24
+ opts.on("-s source", "the posts source") do |source|
25
+ options[:source] = source
26
+ end
27
+
28
+ opts.on("-d dist", "the generated dist") do |dist|
29
+ options[:dist] = dist
30
+ end
31
+
32
+ # # This displays the help screen, all programs are
33
+ # # assumed to have this option.
34
+ opts.on( '-h', '--help', 'Display this screen' ) do
35
+ puts opts
36
+ exit
37
+ end
38
+ end
39
+
40
+ optparse.parse!
41
+ # puts options.inspect
42
+
43
+ WriteDown.build options
@@ -0,0 +1,64 @@
1
+ module WriteDown
2
+ class Article
3
+ attr_accessor :title, :content, :link, :created_at, :updated_at, :file_name, :series
4
+ # link 可以是 uri, 或者其他 ID, 总之是一个资源的唯一定位符
5
+
6
+
7
+ #返回 article 对象的集合
8
+ def self.build source_folder
9
+ articles = Array.new
10
+
11
+ Dir.foreach(source_folder) do |file|
12
+ unless file.to_s.start_with?"." #排除.开头的文件
13
+ begin
14
+ file_path = "#{source_folder}/#{file}"
15
+ f = File.new(file_path,"r")
16
+ if File.directory?(f) #是目录
17
+ series = Series.new
18
+ series.name = File.basename(file_path) #系列的名字就是文件夹的名字
19
+
20
+ Dir.foreach(f) do |sub_f|
21
+ unless sub_f.to_s.start_with?"." #排除.开头的文件
22
+ file_path = "#{f.path}/#{sub_f}"
23
+ article = Article.new
24
+ article.build_from_file file_path
25
+ articles << article #所有的文章集合
26
+ series.articles << article #某个系列的文章集合
27
+ end
28
+ end
29
+ $site.series << series
30
+ else #最外层的文章
31
+ article = Article.new
32
+ article.build_from_file f
33
+ articles << article
34
+ end
35
+ rescue => err
36
+ puts "build from source folder error: #{err}"
37
+ end
38
+ end
39
+ end
40
+
41
+ articles
42
+ end
43
+
44
+ def build_from_file file_path
45
+ basename = File.basename(file_path)
46
+ file = File.new(file_path)
47
+ file_content = file.read #读取所有内容
48
+ html_content = Converter.convert_markdown file_content #转成 html 了
49
+ puts self
50
+ self.content = html_content
51
+ self.file_name = basename #文件名
52
+ self.link = basename.chomp(File.extname(file_path)) + ".html" #链接形式以后要改
53
+ self.title = self.get_title #读取合适的 title
54
+ self.created_at = file.ctime
55
+ self.updated_at = file.mtime
56
+ file.close
57
+ end
58
+
59
+ def get_title
60
+ doc = Nokogiri::HTML(self.content)
61
+ doc.css('h1').first.content ||= self.file_name
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,6 @@
1
+ module WriteDown
2
+ class Configuration
3
+ #常用固定值
4
+ #其余hash
5
+ end
6
+ end
@@ -0,0 +1,8 @@
1
+ module WriteDown
2
+ class Converter
3
+ #转换 markdown(引擎在这里更换)
4
+ def self.convert_markdown markdown_content
5
+ html = Minidown.render(markdown_content)
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,6 @@
1
+ module WriteDown
2
+ class Page
3
+ attr_accessor :title, :keyword, :description
4
+ #单一页面的变量, 可以包含比 article 更多的东西, 比如侧边栏之类的或者插件
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ module WriteDown
2
+ class Series
3
+ attr_accessor :name, :articles
4
+ #artcile 的集合
5
+
6
+ def initialize
7
+ self.articles = Array.new
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module WriteDown
2
+ class Site
3
+ attr_accessor :name, :series
4
+ #全局变量, 包含其他所有的模型
5
+
6
+ def initialize
7
+ self.series = Array.new
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,20 @@
1
+ module WriteDown
2
+ class Template
3
+ #替换模板变量
4
+ def self.render dist, articles
5
+ #套入模板
6
+ index_file_content = File.open(File.expand_path(dist+"/index.html")).read
7
+ post_file_content = File.open(File.expand_path(dist+"/post.html")).read
8
+ index_html = Mustache.render(index_file_content, :articles => articles, :site => $site) #TODO should sort by some column?
9
+ ret_fs = File.open(dist+"/index.html", "w")
10
+ ret_fs.puts index_html
11
+ ret_fs.close
12
+ articles.each do |article|
13
+ article_html = Mustache.render(post_file_content, :site => $site, :articles => articles)
14
+ article_fs = File.open(dist+"/"+article.link, "w")
15
+ article_fs.puts article_html
16
+ article_fs.close
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,3 +1,3 @@
1
1
  module WriteDown
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.5"
3
3
  end
data/lib/write_down.rb CHANGED
@@ -1,7 +1,37 @@
1
1
  require "write_down/version"
2
+ require "minidown"
3
+ require "mustache"
4
+ require "nokogiri"
5
+ require "write_down/article"
6
+ require "write_down/converter"
7
+ require "write_down/template"
8
+ require "write_down/series"
9
+ require "write_down/site"
10
+ require "write_down/page"
2
11
 
3
12
  module WriteDown
13
+
14
+ $site = Site.new
15
+
16
+ #just a demo
4
17
  def self.hello
5
- "hello! I am write down!"
18
+ "hello! I am write down! Enjoy!"
19
+ end
20
+
21
+ def self.build options
22
+ puts "generating by theme #{options[:theme]} ........"
23
+ #复制 html 模板到目标目录
24
+ FileUtils.cp_r File.expand_path("../template/#{options[:theme]}", File.dirname(__FILE__)) + '/.', options[:dist]
25
+ articles = Article.build options[:source]
26
+ Template.render options[:dist], articles
6
27
  end
28
+
29
+ #定义一套步骤
30
+ def process
31
+ # 检查
32
+ # 初始化结构
33
+ # 渲染+填充
34
+ # 结束
35
+ end
36
+
7
37
  end
@@ -0,0 +1,157 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Page Not Found :(</title>
6
+ <style>
7
+ ::-moz-selection {
8
+ background: #b3d4fc;
9
+ text-shadow: none;
10
+ }
11
+
12
+ ::selection {
13
+ background: #b3d4fc;
14
+ text-shadow: none;
15
+ }
16
+
17
+ html {
18
+ padding: 30px 10px;
19
+ font-size: 20px;
20
+ line-height: 1.4;
21
+ color: #737373;
22
+ background: #f0f0f0;
23
+ -webkit-text-size-adjust: 100%;
24
+ -ms-text-size-adjust: 100%;
25
+ }
26
+
27
+ html,
28
+ input {
29
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
30
+ }
31
+
32
+ body {
33
+ max-width: 500px;
34
+ _width: 500px;
35
+ padding: 30px 20px 50px;
36
+ border: 1px solid #b3b3b3;
37
+ border-radius: 4px;
38
+ margin: 0 auto;
39
+ box-shadow: 0 1px 10px #a7a7a7, inset 0 1px 0 #fff;
40
+ background: #fcfcfc;
41
+ }
42
+
43
+ h1 {
44
+ margin: 0 10px;
45
+ font-size: 50px;
46
+ text-align: center;
47
+ }
48
+
49
+ h1 span {
50
+ color: #bbb;
51
+ }
52
+
53
+ h3 {
54
+ margin: 1.5em 0 0.5em;
55
+ }
56
+
57
+ p {
58
+ margin: 1em 0;
59
+ }
60
+
61
+ ul {
62
+ padding: 0 0 0 40px;
63
+ margin: 1em 0;
64
+ }
65
+
66
+ .container {
67
+ max-width: 380px;
68
+ _width: 380px;
69
+ margin: 0 auto;
70
+ }
71
+
72
+ /* google search */
73
+
74
+ #goog-fixurl ul {
75
+ list-style: none;
76
+ padding: 0;
77
+ margin: 0;
78
+ }
79
+
80
+ #goog-fixurl form {
81
+ margin: 0;
82
+ }
83
+
84
+ #goog-wm-qt,
85
+ #goog-wm-sb {
86
+ border: 1px solid #bbb;
87
+ font-size: 16px;
88
+ line-height: normal;
89
+ vertical-align: top;
90
+ color: #444;
91
+ border-radius: 2px;
92
+ }
93
+
94
+ #goog-wm-qt {
95
+ width: 220px;
96
+ height: 20px;
97
+ padding: 5px;
98
+ margin: 5px 10px 0 0;
99
+ box-shadow: inset 0 1px 1px #ccc;
100
+ }
101
+
102
+ #goog-wm-sb {
103
+ display: inline-block;
104
+ height: 32px;
105
+ padding: 0 10px;
106
+ margin: 5px 0 0;
107
+ white-space: nowrap;
108
+ cursor: pointer;
109
+ background-color: #f5f5f5;
110
+ background-image: -webkit-linear-gradient(rgba(255,255,255,0), #f1f1f1);
111
+ background-image: -moz-linear-gradient(rgba(255,255,255,0), #f1f1f1);
112
+ background-image: -ms-linear-gradient(rgba(255,255,255,0), #f1f1f1);
113
+ background-image: -o-linear-gradient(rgba(255,255,255,0), #f1f1f1);
114
+ -webkit-appearance: none;
115
+ -moz-appearance: none;
116
+ appearance: none;
117
+ *overflow: visible;
118
+ *display: inline;
119
+ *zoom: 1;
120
+ }
121
+
122
+ #goog-wm-sb:hover,
123
+ #goog-wm-sb:focus {
124
+ border-color: #aaa;
125
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
126
+ background-color: #f8f8f8;
127
+ }
128
+
129
+ #goog-wm-qt:hover,
130
+ #goog-wm-qt:focus {
131
+ border-color: #105cb6;
132
+ outline: 0;
133
+ color: #222;
134
+ }
135
+
136
+ input::-moz-focus-inner {
137
+ padding: 0;
138
+ border: 0;
139
+ }
140
+ </style>
141
+ </head>
142
+ <body>
143
+ <div class="container">
144
+ <h1>Not found <span>:(</span></h1>
145
+ <p>Sorry, but the page you were trying to view does not exist.</p>
146
+ <p>It looks like this was the result of either:</p>
147
+ <ul>
148
+ <li>a mistyped address</li>
149
+ <li>an out-of-date link</li>
150
+ </ul>
151
+ <script>
152
+ var GOOG_FIXURL_LANG = (navigator.language || '').slice(0,2),GOOG_FIXURL_SITE = location.host;
153
+ </script>
154
+ <script src="//linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
155
+ </div>
156
+ </body>
157
+ </html>
@@ -0,0 +1,133 @@
1
+ ### HEAD
2
+
3
+ ### 4.3.0 (September 10, 2013)
4
+
5
+ * Use one apple-touch-icon instead of six ([#1367](https://github.com/h5bp/html5-boilerplate/issues/1367)).
6
+ * Move font-related declarations from `body` to `html` ([#1411](https://github.com/h5bp/html5-boilerplate/issues/1411)).
7
+ * Update to Apache Server Configs 1.1.0.
8
+ * Add `initial-scale=1` to the viewport `meta` ([#1398](https://github.com/h5bp/html5-boilerplate/pull/1398)).
9
+ * Vertical centering for audio-, canvas- and video-tags ([#1326](https://github.com/h5bp/html5-boilerplate/issues/1326)).
10
+ * Remove Google Chrome Frame related code ([#1379](https://github.com/h5bp/html5-boilerplate/pull/1379), [#1396](https://github.com/h5bp/html5-boilerplate/pull/1396)).
11
+ * Update to Google Universal Analytics ([#1347](https://github.com/h5bp/html5-boilerplate/issues/1347)).
12
+ * Update to jQuery 1.10.2.
13
+ * Update to Normalize.css 1.1.3.
14
+
15
+ ### 4.2.0 (April 8, 2013)
16
+
17
+ * Remove Google Analytics protocol check ([#1319](https://github.com/h5bp/html5-boilerplate/pull/1319)).
18
+ * Update to Normalize.css 1.1.1.
19
+ * Update Apache configurations to include the latest changes in the canonical
20
+ [`.htaccess`](https://github.com/h5bp/server-configs-apache) file.
21
+ * Use a protocol relative URL for the 404 template script.
22
+ * Update to jQuery 1.9.1.
23
+
24
+ ### 4.1.0 (January 21, 2013)
25
+
26
+ * Update to Normalize.css 1.1.0.
27
+ * Update to jQuery 1.9.0.
28
+
29
+ ### 4.0.3 (January 12, 2013)
30
+
31
+ * Use 32x32 favicon.ico ([#1286](https://github.com/h5bp/html5-boilerplate/pull/1286)).
32
+ * Remove named function expression in plugins.js ([#1280](https://github.com/h5bp/html5-boilerplate/pull/1280)).
33
+ * Adjust CSS image-replacement code ([#1239](https://github.com/h5bp/html5-boilerplate/issues/1239)).
34
+ * Update HiDPI example media query ([#1127](https://github.com/h5bp/html5-boilerplate/issues/1127)).
35
+
36
+ ### 4.0.2 (December 9, 2012)
37
+
38
+ * Update placeholder icons.
39
+ * Update to Normalize.css 1.0.2.
40
+ * Update to jQuery 1.8.3.
41
+
42
+ ### 4.0.1 (October 20, 2012)
43
+
44
+ * Further improvements to `console` method stubbing ([#1206](https://github.com/h5bp/html5-boilerplate/issues/1206), [#1229](https://github.com/h5bp/html5-boilerplate/pull/1229)).
45
+ * Update to jQuery 1.8.2.
46
+ * Update to Modernizr 2.6.2.
47
+ * Minor additions to the documentation.
48
+
49
+ ### 4.0.0 (August 28, 2012)
50
+
51
+ * Improve the Apache compression configuration ([#1012](https://github.com/h5bp/html5-boilerplate/issues/1012), [#1173](https://github.com/h5bp/html5-boilerplate/issues/1173)).
52
+ * Add a HiDPI example media query ([#1127](https://github.com/h5bp/html5-boilerplate/issues/1127)).
53
+ * Add bundled docs ([#1154](https://github.com/h5bp/html5-boilerplate/issues/1154)).
54
+ * Add MIT license ([#1139](https://github.com/h5bp/html5-boilerplate/issues/1139)).
55
+ * Update to Normalize.css 1.0.1.
56
+ * Separate Normalize.css from the rest of the CSS ([#1160](https://github.com/h5bp/html5-boilerplate/issues/1160)).
57
+ * Improve `console.log` protection ([#1107](https://github.com/h5bp/html5-boilerplate/issues/1107)).
58
+ * Replace hot pink text selection color with a neutral color.
59
+ * Change image replacement technique ([#1149](https://github.com/h5bp/html5-boilerplate/issues/1149)).
60
+ * Code format and consistency changes ([#1112](https://github.com/h5bp/html5-boilerplate/issues/1112)).
61
+ * Rename CSS file and rename JS files and subdirectories.
62
+ * Update to jQuery 1.8 ([#1161](https://github.com/h5bp/html5-boilerplate/issues/1161)).
63
+ * Update to Modernizr 2.6.1 ([#1086](https://github.com/h5bp/html5-boilerplate/issues/1086)).
64
+ * Remove uncompressed jQuery ([#1153](https://github.com/h5bp/html5-boilerplate/issues/1153)).
65
+ * Remove superfluous inline comments ([#1150](https://github.com/h5bp/html5-boilerplate/issues/1150)).
66
+
67
+ ### 3.0.2 (February 19, 2012)
68
+
69
+ * Update to Modernizr 2.5.3.
70
+
71
+ ### 3.0.1 (February 08, 2012).
72
+
73
+ * Update to Modernizr 2.5.2 (includes html5shiv 3.3).
74
+
75
+ ### 3.0.0 (February 06, 2012)
76
+
77
+ * Improvements to `.htaccess`.
78
+ * Improve 404 design.
79
+ * Simplify JS folder structure.
80
+ * Change `html` IE class names changed to target ranges rather than specific versions of IE.
81
+ * Update CSS to include latest normalize.css changes and better typographic defaults ([#825](https://github.com/h5bp/html5-boilerplate/issues/825)).
82
+ * Update to Modernizr 2.5 (includes yepnope 1.5 and html5shiv 3.2).
83
+ * Update to jQuery 1.7.1.
84
+ * Revert to async snippet for the Google Analytics script.
85
+ * Remove the ant build script ([#826](https://github.com/h5bp/html5-boilerplate/issues/826)).
86
+ * Remove Respond.js ([#816](https://github.com/h5bp/html5-boilerplate/issues/816)).
87
+ * Remove the `demo/` directory ([#808](https://github.com/h5bp/html5-boilerplate/issues/808)).
88
+ * Remove the `test/` directory ([#808](https://github.com/h5bp/html5-boilerplate/issues/808)).
89
+ * Remove Google Chrome Frame script for IE6 users; replace with links to Chrome Frame and options for alternative browsers.
90
+ * Remove `initial-scale=1` from the viewport `meta` ([#824](https://github.com/h5bp/html5-boilerplate/issues/824)).
91
+ * Remove `defer` from all scripts to avoid legacy IE bugs.
92
+ * Remove explicit Site Speed tracking for Google Analytics. It's now enabled by default.
93
+
94
+ ### 2.0.0 (August 10, 2011)
95
+
96
+ * Change starting CSS to be based on normalize.css instead of reset.css ([#500](https://github.com/h5bp/html5-boilerplate/issues/500)).
97
+ * Add Respond.js media query polyfill.
98
+ * Add Google Chrome Frame script prompt for IE6 users.
99
+ * Simplify the `html` conditional comments for modern browsers and add an `oldie` class.
100
+ * Update clearfix to use "micro clearfix".
101
+ * Add placeholder CSS MQs for mobile-first approach.
102
+ * Add `textarea { resize: vertical; }` to only allow vertical resizing.
103
+ * Add `img { max-width: 100%; }` to the print styles; prevents images being truncated.
104
+ * Add Site Speed tracking for Google Analytics.
105
+ * Update to jQuery 1.6.2 (and use minified by default).
106
+ * Update to Modernizr 2.0 Complete, Production minified (includes yepnope, html5shiv, and Respond.js).
107
+ * Use `Modernizr.load()` to load the Google Analytics script.
108
+ * Much faster build process.
109
+ * Add build script options for CSSLint, JSLint, JSHint tools.
110
+ * Build script now compresses all images in subfolders.
111
+ * Build script now versions files by SHA hash.
112
+ * Many `.htaccess` improvements including: disable directory browsing, improved support for all versions of Apache, more robust and extensive HTTP compression rules.
113
+ * Remove `handheld.css` as it has very poor device support.
114
+ * Remove touch-icon `link` elements from the HTML and include improved touch-icon support.
115
+ * Remove the cache-busting query paramaters from files references in the HTML.
116
+ * Remove IE6 PNGFix.
117
+
118
+ ### 1.0.0 (March 21, 2011)
119
+
120
+ * Rewrite build script to make it more customizable and flexible.
121
+ * Add a humans.txt.
122
+ * Numerous `.htaccess` improvements (including inline documentation).
123
+ * Move the alternative server configurations to the H5BP server configs repo.
124
+ * Use a protocol-relative url to reference jQuery and prevent mixed content warnings.
125
+ * Optimize the Google Analytics snippet.
126
+ * Use Eric Meyer's recent CSS reset update and the HTML5 Doctor reset.
127
+ * More robust `sub`/`sup` CSS styles.
128
+ * Add keyboard `.focusable` helper class that extends `.visuallyhidden`.
129
+ * Print styles no longer print hash or JavaScript links.
130
+ * Add a print reset for IE's proprietary filters.
131
+ * Remove IE9-specific conditional class on the `html` element.
132
+ * Remove margins from lists within `nav` elements.
133
+ * Remove YUI profiling.