retter 0.2.5 → 1.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -11
  3. data/.travis.yml +4 -2
  4. data/ChangeLog.md +11 -5
  5. data/Gemfile +4 -1
  6. data/LICENSE.txt +22 -0
  7. data/README.md +163 -246
  8. data/Rakefile +25 -5
  9. data/bin/retter +2 -22
  10. data/lib/retter.rb +57 -43
  11. data/lib/retter/cli.rb +46 -0
  12. data/lib/retter/cli/edit.rb +33 -0
  13. data/lib/retter/cli/hooks.rb +46 -0
  14. data/lib/retter/cli/list.rb +15 -0
  15. data/lib/retter/cli/new.rb +20 -0
  16. data/lib/retter/cli/preview.rb +9 -0
  17. data/lib/retter/cli/publish.rb +22 -0
  18. data/lib/retter/deprecated.rb +160 -0
  19. data/lib/retter/entry.rb +31 -106
  20. data/lib/retter/entry/article.rb +36 -0
  21. data/lib/retter/entry/find_methods.rb +38 -0
  22. data/lib/retter/entry/model_base.rb +10 -0
  23. data/lib/retter/entry/pagination.rb +23 -0
  24. data/lib/retter/entry/sort_methods.rb +7 -0
  25. data/lib/retter/entry/utils.rb +12 -0
  26. data/lib/retter/initializing.rb +45 -0
  27. data/lib/retter/repository.rb +99 -12
  28. data/lib/retter/retterfile.rb +67 -0
  29. data/lib/retter/retterfile/context.rb +57 -0
  30. data/lib/retter/static_site.rb +34 -0
  31. data/lib/retter/static_site/app.rb +13 -0
  32. data/lib/retter/static_site/app/application.rb +94 -0
  33. data/lib/retter/{generator/skel/entries → static_site/app/assets/images}/.gitkeep +0 -0
  34. data/lib/retter/{generator/skel → static_site/app/assets}/images/orange/bg_body.jpg +0 -0
  35. data/lib/retter/{generator/skel → static_site/app/assets}/images/orange/bg_entry.jpg +0 -0
  36. data/lib/retter/{generator/skel → static_site/app/assets}/images/orange/bg_header.png +0 -0
  37. data/lib/retter/{generator/skel → static_site/app/assets}/images/orange/ic_li01.gif +0 -0
  38. data/lib/retter/{generator/skel/images → static_site/app/assets/javascripts}/.gitkeep +0 -0
  39. data/lib/retter/static_site/app/assets/stylesheets/application.css.scss +3 -0
  40. data/lib/retter/{generator/skel/stylesheets/base.css → static_site/app/assets/stylesheets/base.css.scss} +0 -0
  41. data/lib/retter/{generator/skel/stylesheets/pygments.css → static_site/app/assets/stylesheets/highlight.css.scss} +0 -0
  42. data/lib/retter/static_site/app/assets/stylesheets/orange.css.scss +262 -0
  43. data/lib/retter/static_site/app/assets/stylesheets/retter.css.scss +198 -0
  44. data/lib/retter/static_site/app/config.ru +7 -0
  45. data/lib/retter/static_site/app/controllers.rb +113 -0
  46. data/lib/retter/static_site/app/helpers.rb +36 -0
  47. data/lib/retter/{generator/skel/layouts/profile.html.haml → static_site/app/templates/about/show.html.haml} +0 -0
  48. data/lib/retter/static_site/app/templates/entries/articles/show.html.haml +7 -0
  49. data/lib/retter/static_site/app/templates/entries/index.html.haml +13 -0
  50. data/lib/retter/static_site/app/templates/entries/index.rss.haml +24 -0
  51. data/lib/retter/static_site/app/templates/entries/show.html.haml +11 -0
  52. data/lib/retter/static_site/app/templates/index/show.html.haml +14 -0
  53. data/lib/retter/static_site/app/templates/layouts/application.html.haml +34 -0
  54. data/lib/retter/static_site/builder.rb +106 -0
  55. data/lib/retter/static_site/cli.rb +25 -0
  56. data/lib/retter/static_site/cli/build.rb +85 -0
  57. data/lib/retter/static_site/cli/edit.rb +17 -0
  58. data/lib/retter/static_site/cli/migrate.rb +93 -0
  59. data/lib/retter/static_site/cli/new.rb +50 -0
  60. data/lib/retter/static_site/cli/preview.rb +66 -0
  61. data/lib/retter/static_site/markdown.rb +25 -0
  62. data/lib/retter/static_site/markdown/code_ray_renderer.rb +13 -0
  63. data/lib/retter/static_site/markdown/pygments_renderer.rb +18 -0
  64. data/lib/retter/static_site/markdown_entry.rb +111 -0
  65. data/lib/retter/static_site/monkey/sprockets_task.rb +10 -0
  66. data/lib/retter/version.rb +1 -1
  67. data/retter.gemspec +59 -43
  68. data/skel/.gitignore +2 -0
  69. data/skel/Retterfile +16 -0
  70. data/skel/config.ru +22 -0
  71. data/{lib/retter/generator/skel/javascripts → skel/retters}/.gitkeep +0 -0
  72. data/skel/retters/today.md +3 -0
  73. data/spec/cli/build_spec.rb +87 -0
  74. data/spec/cli/edit_spec.rb +76 -0
  75. data/spec/cli/invocation_spec.rb +19 -0
  76. data/spec/cli/list_spec.rb +64 -0
  77. data/spec/cli/migrate_spec.rb +65 -0
  78. data/spec/cli/new_spec.rb +30 -0
  79. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/.gitignore +0 -0
  80. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/Retterfile +6 -3
  81. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/config.ru +0 -0
  82. data/{lib/retter/generator/skel/retters/.gitkeep → spec/fixtures/sites/site-0.2.5/entries.html} +0 -0
  83. data/spec/fixtures/sites/site-0.2.5/entries.rss +0 -0
  84. data/spec/fixtures/sites/site-0.2.5/entries/.gitkeep +0 -0
  85. data/spec/fixtures/sites/site-0.2.5/images/.gitkeep +0 -0
  86. data/spec/fixtures/sites/site-0.2.5/images/orange/bg_body.jpg +0 -0
  87. data/spec/fixtures/sites/site-0.2.5/images/orange/bg_entry.jpg +0 -0
  88. data/spec/fixtures/sites/site-0.2.5/images/orange/bg_header.png +0 -0
  89. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/index.html +0 -0
  90. data/spec/fixtures/sites/site-0.2.5/javascripts/.gitkeep +0 -0
  91. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/layouts/article.html.haml +0 -0
  92. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/layouts/entries.html.haml +0 -0
  93. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/layouts/entry.html.haml +0 -0
  94. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/layouts/index.html.haml +0 -0
  95. data/spec/fixtures/sites/site-0.2.5/layouts/profile.html.haml +7 -0
  96. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/layouts/retter.html.haml +0 -0
  97. data/spec/fixtures/sites/site-0.2.5/profile.html +0 -0
  98. data/spec/fixtures/sites/site-0.2.5/retters/.gitkeep +0 -0
  99. data/spec/fixtures/sites/site-0.2.5/stylesheets/base.css +22 -0
  100. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/stylesheets/orange.css +0 -0
  101. data/spec/fixtures/sites/site-0.2.5/stylesheets/pygments.css +288 -0
  102. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/stylesheets/retter.css +0 -0
  103. data/spec/retter/deprecated_spec.rb +106 -0
  104. data/spec/retter/initializing_spec.rb +86 -0
  105. data/spec/retter/retterfile_spec.rb +32 -0
  106. data/spec/spec_helper.rb +38 -27
  107. data/spec/support/example_helper.rb +46 -0
  108. data/spec/support/matchers.rb +14 -0
  109. data/spec/support/test_site.rb +59 -0
  110. metadata +329 -236
  111. data/lib/retter/binder.rb +0 -50
  112. data/lib/retter/command.rb +0 -192
  113. data/lib/retter/config.rb +0 -96
  114. data/lib/retter/configurable.rb +0 -26
  115. data/lib/retter/entries.rb +0 -115
  116. data/lib/retter/generator.rb +0 -7
  117. data/lib/retter/generator/base.rb +0 -65
  118. data/lib/retter/generator/creator.rb +0 -34
  119. data/lib/retter/generator/skel/Gemfile +0 -5
  120. data/lib/retter/markdown.rb +0 -31
  121. data/lib/retter/markdown/code_ray_renderer.rb +0 -11
  122. data/lib/retter/markdown/pygments_renderer.rb +0 -16
  123. data/lib/retter/page.rb +0 -43
  124. data/lib/retter/page/article.rb +0 -54
  125. data/lib/retter/page/base.rb +0 -97
  126. data/lib/retter/page/entries.rb +0 -17
  127. data/lib/retter/page/entry.rb +0 -46
  128. data/lib/retter/page/feed.rb +0 -63
  129. data/lib/retter/page/index.rb +0 -17
  130. data/lib/retter/page/profile.rb +0 -17
  131. data/lib/retter/page/view_helper.rb +0 -66
  132. data/lib/retter/preprint.rb +0 -34
  133. data/spec/command/callback_spec.rb +0 -27
  134. data/spec/command/clean_spec.rb +0 -20
  135. data/spec/command/commit_spec.rb +0 -40
  136. data/spec/command/edit_spec.rb +0 -119
  137. data/spec/command/list_spec.rb +0 -42
  138. data/spec/command/open_spec.rb +0 -12
  139. data/spec/command/preview_spec.rb +0 -40
  140. data/spec/command/rebind_spec.rb +0 -276
  141. data/spec/support/example_group_helper.rb +0 -98
@@ -0,0 +1,67 @@
1
+ require 'singleton'
2
+ require 'pathname'
3
+
4
+ module Retter
5
+ class Retterfile
6
+ autoload :Context, 'retter/retterfile/context'
7
+
8
+ SOURCE_BRANCH = 'source'
9
+
10
+ include Singleton
11
+
12
+ attr_accessor :path
13
+
14
+ def seek_load(dir = ENV['RETTER_ROOT'] || ENV['RETTER_HOME'] || Dir.pwd)
15
+ return if dir.strip.empty?
16
+
17
+ seek dir
18
+ load
19
+ end
20
+
21
+ private
22
+
23
+ def seek(dir)
24
+ return if path || self.path = find_path(dir)
25
+
26
+ attempt_checkout_source_branch dir
27
+
28
+ if self.path = find_path(dir)
29
+ Retter.config.source_branch = SOURCE_BRANCH
30
+ end
31
+ end
32
+
33
+ def load
34
+ return unless path
35
+
36
+ Retter.config.root = path.dirname
37
+ Context.instance.instance_eval path.read, path.to_s
38
+ end
39
+
40
+ def find_path(dir)
41
+ dir, name = Pathname(dir).expand_path, 'Retterfile'
42
+ candidate = dir.join(name)
43
+
44
+ return if dir.root?
45
+
46
+ if candidate.exist?
47
+ return candidate
48
+ else
49
+ find_path(dir.dirname)
50
+ end
51
+ end
52
+
53
+ def attempt_checkout_source_branch(dir)
54
+ repo = Repository.new(dir)
55
+ current_branch = repo.current_branch
56
+
57
+ if repo.branches.include?(SOURCE_BRANCH) && current_branch != SOURCE_BRANCH
58
+ repo.checkout SOURCE_BRANCH
59
+ at_exit do
60
+ repo.checkout current_branch
61
+ end
62
+ end
63
+ rescue Errno::ENOENT, Repository::RepositoryError
64
+ # maybe dir isn't git repository
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,57 @@
1
+ require 'singleton'
2
+
3
+ module Retter
4
+ class Retterfile
5
+ class Context
6
+ module ConfigMethods
7
+ class << self
8
+ def extended(object)
9
+ object.callbacks ||= ActiveSupport::OrderedOptions.new
10
+ end
11
+ end
12
+
13
+ def after(name, sym = nil, &block)
14
+ key = "after_#{name}".intern
15
+
16
+ if callback = sym || block
17
+ callbacks[key] = callback
18
+ else
19
+ callbacks[key]
20
+ end
21
+ end
22
+
23
+ def publisher(&block)
24
+ block ? self[:publisher] = block : self[:publisher]
25
+ end
26
+ end
27
+
28
+ module ShortcutMethods
29
+ %w(editor shell renderer title description url author disqus_shortname).each do |name|
30
+ define_method name do |val = nil|
31
+ config = Retter.config
32
+
33
+ val ? config[name] = val : config[name]
34
+ end
35
+ end
36
+
37
+ def after(name, sym = nil, &block)
38
+ configure do |config|
39
+ config.after name, sym, &block
40
+ end
41
+ end
42
+ end
43
+
44
+ include Singleton
45
+ include ShortcutMethods
46
+ include Deprecated::Retterfile::Context
47
+
48
+ def configure(options = {})
49
+ config = Retter.config
50
+ config.api_revision = Integer(options[:api_revision]) if options[:api_revision]
51
+ config.extend ConfigMethods
52
+
53
+ yield config
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,34 @@
1
+ module Retter
2
+ module StaticSite
3
+ autoload :App, 'retter/static_site/app'
4
+ autoload :CLI, 'retter/static_site/cli'
5
+ autoload :Builder, 'retter/static_site/builder'
6
+ autoload :Markdown, 'retter/static_site/markdown'
7
+ autoload :MarkdownEntry, 'retter/static_site/markdown_entry'
8
+
9
+ class << self
10
+ def install
11
+ return false if @installed
12
+
13
+ {
14
+ MarkdownEntry => Retter::Entry,
15
+ StaticSite::CLI::Command => Retter::CLI::Command
16
+ }.each do |src, dest|
17
+ dest.__send__ :include, src
18
+ end
19
+
20
+ @installed = true
21
+ end
22
+ end
23
+
24
+ Retter.on_initialize do |config|
25
+ config.source_branch ||= 'master'
26
+ config.publish_branch ||= 'master'
27
+
28
+ if root = config.root
29
+ config.build_path ||= root.join('tmp/_build')
30
+ config.source_path ||= root.join('source')
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,13 @@
1
+ module Retter
2
+ module StaticSite
3
+ module App
4
+ autoload :Application, 'retter/static_site/app/application'
5
+
6
+ mattr_accessor :config
7
+
8
+ Retter.on_initialize do |config|
9
+ self.config = config
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,94 @@
1
+ require 'action_controller/railtie'
2
+ require 'sprockets/railtie'
3
+
4
+ require 'jquery-rails'
5
+ require 'uri'
6
+ require 'sass'
7
+ require 'haml'
8
+
9
+ require 'retter'
10
+
11
+ module Retter
12
+ module StaticSite
13
+ module App
14
+ class Application < Rails::Application
15
+ config.real_root = Pathname(__FILE__).dirname
16
+
17
+ url = URI(App.config.url)
18
+ config.action_controller.default_url_options = {host: url.host, port: url.port, protocol: url.scheme}
19
+
20
+ config.logger = Logger.new(StringIO.new)
21
+
22
+ # probably not in use
23
+ config.secret_key_base = '7da522cea316445dca8ae7f3f2941cb620c9fd36d1315b871df2bf79b567018fa0dbe7653192d290b1347500ee6f78cc1e4f1c788c6d6db53eb39c4c40cf6a8e'
24
+ config.session_store :cookie_store, key: '_retter_preview_session'
25
+
26
+ config.active_support.deprecation = :notify
27
+
28
+ config.assets.precompile += %w(*.*)
29
+ config.assets.digest = true
30
+ config.serve_static_assets = true
31
+ %w(stylesheets javascripts images).each do|type|
32
+ config.assets.paths << App.config.source_path.join('assets', type).to_path
33
+ config.assets.paths << App.config.root.join(type).to_path
34
+ config.assets.paths << config.real_root.join('assets', type).to_path
35
+ end
36
+
37
+ if Rails.env.development?
38
+ require 'rack-livereload'
39
+
40
+ config.middleware.use Rack::LiveReload
41
+ config.root = App.config.root
42
+ config.cache_classes = false
43
+ config.eager_load = false
44
+ config.consider_all_requests_local = true
45
+ config.action_controller.perform_caching = false
46
+ config.assets.compile = true
47
+ else
48
+ config.root = App.config.build_path
49
+ config.cache_classes = true
50
+ config.eager_load = true
51
+ config.consider_all_requests_local = false
52
+ config.action_controller.perform_caching = true
53
+ config.assets.js_compressor = :uglifier
54
+ config.assets.compile = false
55
+ config.assets.version = '1.0'
56
+ config.log_level = :info
57
+ config.i18n.fallbacks = true
58
+ end
59
+
60
+ config.after_initialize do |app|
61
+ app.routes.draw do
62
+ scope module: 'retter/static_site/app' do
63
+ root to: 'index#show'
64
+
65
+ scope do # compat for <0.2.5
66
+ get '/profile.html', to: 'about#show', as: :profile
67
+ get '/entries/:id.html', to: 'entries#show', as: :entry
68
+ get '/entries/:entry_id/:id.html', to: 'entries/articles#show', as: :entry_article
69
+
70
+ get '/:assets/:fname' => redirect('/assets/%{fname}'), constraints: {fname: /.+/, assets: /(stylesheets|images|javascripts)/}
71
+ end
72
+
73
+ scope as: :retter do
74
+ get :index, to: 'index#show'
75
+ get :about, to: 'about#show'
76
+
77
+ resources :entries, only: %w(index show) do
78
+ get :last_modified, on: :collection
79
+
80
+ resources :articles, only: %w(show), controller: 'entries/articles', path: ''
81
+ end
82
+ end
83
+ end
84
+ end
85
+
86
+ require_relative 'controllers'
87
+ require_relative 'helpers'
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
93
+
94
+ Haml::Template.options[:format] = :xhtml
@@ -0,0 +1,3 @@
1
+ //= require base
2
+ //= require highlight
3
+ //= require orange
@@ -0,0 +1,262 @@
1
+ @charset "utf-8";
2
+
3
+ html {
4
+ height: 100%;
5
+ }
6
+
7
+ body {
8
+ margin: 0 auto 0 auto;
9
+ padding: 0;
10
+ font-family: sans-serif;
11
+ background: #EEE;
12
+ background-image: url(asset-path('orange/bg_body.jpg'));
13
+ background-attachment: fixed;
14
+ height: 100%;
15
+ line-height: 1.5em;
16
+ }
17
+
18
+ #header ul {
19
+ list-style: none;
20
+ }
21
+
22
+ a {
23
+ text-decoration: none;
24
+ color: rgb(25,30,10);
25
+ }
26
+
27
+ #header {
28
+ height: 40px;
29
+ background-image: url(asset-path('orange/bg_header.png'));
30
+ background-repeat: repeat-x;
31
+ margin: 0;
32
+ padding: 0.2em 0 0.2em 1em;
33
+ box-shadow: 0 2px 2px rgba(0,0,0,0.4);
34
+ }
35
+
36
+ #header h1 {
37
+ color: rgb(77,144,253);
38
+ margin: 0;
39
+ padding-top: 0.2em;
40
+ }
41
+
42
+ #header h1 a {
43
+ color: #FFF;
44
+ }
45
+
46
+ #header ul#menu {
47
+ margin: 0.5em 0 0 0;
48
+ padding: 1em 0 0 2em;
49
+ }
50
+
51
+ #header ul#menu li {
52
+ float: left;
53
+ margin-right: 0.5em;
54
+ background: rgba(255,255,255,0.5);
55
+ padding: 5px;
56
+ }
57
+
58
+ #header ul#menu li a {
59
+ color: #336;
60
+ }
61
+
62
+ #header ul#menu li a:hover {
63
+ color: #09C;
64
+ }
65
+
66
+ #page {
67
+ clear: both;
68
+ margin: 6em auto 0 auto;
69
+ width: 1200px;
70
+ min-height: 100%;
71
+ position: relative;
72
+ }
73
+
74
+ #page #content {
75
+ width: 800px;
76
+ }
77
+
78
+ #page #sidebar {
79
+ width: 250px;
80
+ position: absolute;
81
+ top: 0;
82
+ margin-left: 830px;
83
+
84
+ color: #603;
85
+ border: 3px #FFC solid;
86
+ border-radius: 10px;
87
+ -moz-border-radius: 10px;
88
+ -webkit-border-radius: 10px;
89
+ padding: 0em 1em 1em 1em;
90
+ background-image: url(asset-path('orange/bg_entry.jpg'));
91
+ }
92
+
93
+ #page #sidebar h3 {
94
+ margin-bottom: 0;
95
+ padding-bottom: 0.25em;
96
+ border-bottom: 1px solid #e4d7b3;
97
+ box-shadow: 0 1px 0 #FFF;
98
+ }
99
+
100
+ #page #sidebar .author {
101
+ margin-top: 0.25em;
102
+ }
103
+
104
+ #page #sidebar .recent-entries ul {
105
+ margin-top: 0.25em;
106
+ margin-bottom: 0.25em;
107
+ padding-left: 0;
108
+ list-style: none;
109
+ }
110
+
111
+ #page #sidebar .recent-entries ul li {
112
+ font-size: 0.9em;
113
+ margin-bottom: 0.5em;
114
+ line-height: 1.3em;
115
+ }
116
+
117
+ #page #sidebar .recent-entries ul li a{
118
+ color: #ab4d01;
119
+ }
120
+
121
+ #page #sidebar .recent-entries ul li a:hover {
122
+ color: #ca600a;
123
+ }
124
+
125
+ #page #sidebar .recent-entries .archives {
126
+ text-align: right;
127
+ font-size: 0.9em;
128
+ }
129
+
130
+ #page #sidebar .recent-entries .archives a {
131
+ color: #C00;
132
+ }
133
+
134
+ #page #sidebar .recent-entries .archives a:hover {
135
+ color: #F33;
136
+ }
137
+
138
+ article {
139
+ color: #603;
140
+ border-radius: 10px;
141
+ border: 3px #FFC solid;
142
+ -moz-border-radius: 10px;
143
+ -webkit-border-radius: 10px;
144
+ padding: 1em 3em;
145
+ background-image: url(asset-path('orange/bg_entry.jpg'));
146
+ position: relative;
147
+ }
148
+
149
+ article.article {
150
+ margin-top: 60px;
151
+ padding: 2em 3em;
152
+ }
153
+
154
+ article.article ul li {
155
+ list-style-image: url(asset-path('orange/ic_li01.gif'));
156
+ }
157
+
158
+ article p a {
159
+ color: #F30;
160
+ }
161
+
162
+ article p a:hover {
163
+ color: #F93;
164
+ }
165
+
166
+ article .date {
167
+ font-size: 1em;
168
+ text-align: center;
169
+ background-color: #036;
170
+ padding: 10px;
171
+ width: 7em;
172
+ float: right;
173
+ position: absolute;
174
+ top: -24px;
175
+ left: 650px;
176
+ }
177
+
178
+ article .date a {
179
+ color: #FFF;
180
+ }
181
+
182
+ article .date a:visited {
183
+ color: #FFF;
184
+ }
185
+
186
+ article .date a:hover {
187
+ color: #669;
188
+ }
189
+
190
+ article ul#entries {
191
+ list-style: none;
192
+ padding-left: 0;
193
+ }
194
+
195
+ article ul#entries h2 {
196
+ padding-bottom: 0.25em;
197
+ margin-bottom: 0.5em;
198
+ border-bottom: 1px solid #e4d7b3;
199
+ box-shadow: 0 1px 0 #FFF;
200
+ }
201
+
202
+ article ul#entries ul {
203
+ list-style: none;
204
+ margin-top: -1.5em;
205
+ padding-left: 3em;
206
+ }
207
+
208
+ article ul#entries > li {
209
+ margin-top: 1em;
210
+ }
211
+
212
+ article img {
213
+ max-width: 100%
214
+ }
215
+
216
+ #entries {
217
+ width: 100%;
218
+ }
219
+
220
+ #comments {
221
+ color: #603;
222
+ border-radius: 10px;
223
+ border: 3px #FFC solid;
224
+ -moz-border-radius: 10px;
225
+ -webkit-border-radius: 10px;
226
+ padding: 2em 3em;
227
+ margin: 1em 0 1em 0;
228
+ background-image: url(asset-path('orange/bg_entry.jpg'));
229
+ position: relative;
230
+ }
231
+
232
+ pre {
233
+ background: #EEE;
234
+ color: rgb(0,30,67);
235
+ padding: 1em;
236
+ border-radius: 10px;
237
+ border: 1px #BBB solid;
238
+ -moz-border-radius: 10px;
239
+ -webkit-border-radius: 10px;
240
+ }
241
+
242
+ #footer {
243
+ text-align: center;
244
+ margin: 1em 0 0 0;
245
+ padding: 0.5em 0.5em 0.5em 1em;
246
+ background: #036;
247
+ color: #FFF;
248
+ position: relative;
249
+ bottom: 0;
250
+ }
251
+
252
+ #footer a {
253
+ color: #FFF;
254
+ }
255
+
256
+ #footer a:visited {
257
+ color: #FFF;
258
+ }
259
+
260
+ #footer a:hover {
261
+ color: #669;
262
+ }