write_down 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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.