Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Initial commit

  • Loading branch information...
commit 650837ded24f89387bccbec8f12ad6f3fa7f968e 0 parents
@ryanstout authored
Showing with 6,576 additions and 0 deletions.
  1. +20 −0 MIT-LICENSE
  2. +89 −0 README
  3. +32 −0 Rakefile
  4. +69 −0 app/controllers/blog_comments_controller.rb
  5. +107 −0 app/controllers/blog_posts_controller.rb
  6. +63 −0 app/models/blog_comment.rb
  7. +53 −0 app/models/blog_post.rb
  8. +34 −0 app/views/blog_comments/_new_blog_comment.html.erb
  9. +7 −0 app/views/blog_posts/_admin_links.html.erb
  10. +46 −0 app/views/blog_posts/_blog_post.html.erb
  11. +17 −0 app/views/blog_posts/_comment.html.erb
  12. +6 −0 app/views/blog_posts/_comments.html.erb
  13. +50 −0 app/views/blog_posts/_form.html.erb
  14. +19 −0 app/views/blog_posts/drafts.html.erb
  15. +4 −0 app/views/blog_posts/edit.html.erb
  16. +12 −0 app/views/blog_posts/index.atom.builder
  17. +21 −0 app/views/blog_posts/index.html.erb
  18. +4 −0 app/views/blog_posts/new.html.erb
  19. +6 −0 app/views/blog_posts/show.html.erb
  20. +4 −0 config/routes.rb
  21. +7 −0 generators/blog_comments_migration/blog_comments_migration_generator.rb
  22. +23 −0 generators/blog_comments_migration/templates/migration.rb
  23. +7 −0 generators/blog_kit_config/blog_kit_config_generator.rb
  24. +29 −0 generators/blog_kit_config/templates/config/blog_kit.yml
  25. +7 −0 generators/blog_posts_migration/blog_posts_migration_generator.rb
  26. +17 −0 generators/blog_posts_migration/templates/migration.rb
  27. +114 −0 generators/syntax/active4d.css
  28. +72 −0 generators/syntax/all_hallows_eve.css
  29. +147 −0 generators/syntax/amy.css
  30. +88 −0 generators/syntax/blackboard.css
  31. +605 −0 generators/syntax/brilliance_black.css
  32. +599 −0 generators/syntax/brilliance_dull.css
  33. +149 −0 generators/syntax/cobalt.css
  34. +121 −0 generators/syntax/dawn.css
  35. +121 −0 generators/syntax/eiffel.css
  36. +109 −0 generators/syntax/espresso_libre.css
  37. +62 −0 generators/syntax/idle.css
  38. +80 −0 generators/syntax/iplastic.css
  39. +73 −0 generators/syntax/lazy.css
  40. +123 −0 generators/syntax/mac_classic.css
  41. +104 −0 generators/syntax/magicwb_amiga.css
  42. +188 −0 generators/syntax/pastels_on_dark.css
  43. +85 −0 generators/syntax/slush_poppies.css
  44. +51 −0 generators/syntax/spacecadet.css
  45. +180 −0 generators/syntax/sunburst.css
  46. +137 −0 generators/syntax/twilight.css
  47. +91 −0 generators/syntax/zenburnesque.css
  48. +4 −0 init.rb
  49. +1 −0  install.rb
  50. +77 −0 lib/akismetor.rb
  51. +38 −0 lib/blog_kit.rb
  52. +47 −0 lib/blog_kit_model_helper.rb
  53. +27 −0 spec/controllers/blog_kit_spec.rb
  54. +1 −0  spec/debug.log
  55. +5 −0 spec/spec.opts
  56. +1 −0  spec/spec.rb
  57. +64 −0 spec/spec_helper.rb
  58. 0  tasks/blog_kit_tasks.rake
  59. BIN  test/blog_kit.sqlite3.db
  60. +4 −0 test/database.yml
  61. +1,948 −0 test/debug.log
  62. 0  test/functional/blog_comments_controller_test.rb
  63. +42 −0 test/functional/blog_comments_migration_generator_test.rb
  64. +33 −0 test/functional/blog_kit_config_generator_test.rb
  65. +84 −0 test/functional/blog_posts_controller_test.rb
  66. +42 −0 test/functional/blog_posts_migration_generator_test.rb
  67. +41 −0 test/schema.rb
  68. +64 −0 test/test_helper.rb
  69. +1 −0  uninstall.rb
20 MIT-LICENSE
@@ -0,0 +1,20 @@
+Copyright (c) 2010 [name of plugin creator]
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
89 README
@@ -0,0 +1,89 @@
+BlogKit
+=======
+
+BlogKit is a rails plugin to add a blog to your app. It has the following features.
+
++ Admin for Blog Articles
++ Search engine friendly urls
++ Uses existing user model
++ Comments via existing user model
++ Highlights code (with ultraviolet)
++ Uses your existing layouts
++ Easily customizable css
++ Akismet (spam filtering) Support
++ Markdown (default) or just plain html parsing
++ Image and Gravatar support
++ Anonymous Comments (optional)
++ Atom Feeds
+
+Coming Soon:
+- Tags
+- Image upload
+
+
+Setup
+=====
+
+BlogKit is designed to work with your existing user model, at the moment, it assumes this will be
+called User. Your User class and application controller simply need to respond to some methods to
+be able to use BlogKit. These methods, while not standardized are very common, and come with plugins
+like Authlogic and restful_authentication.
+
+ApplicationController should respond to:
+#require_user
+#current_user
+
+User model should respond to:
+#admin? - returns true if the user can edit posts and delete comments
+#name - the users name
+#blog_image_url (optional)
+#email (options - for gravatar support)
+
+Requirements
+============
+
+Rails 2.3.x (Rails 3 support coming soon)
+
+- Ultraviolet (and its deps)
+- Will_Paginate
+- BlueCloth 2
+
+
+Code Highlighting Example
+=======
+
+To get code highlighted, place the following tag:
+
+<code lang="ruby">
+
+</code>
+
+Available Themes
+================
+active4d
+all_hallows_eve
+amy
+blackboard
+brilliance_black
+brilliance_dull
+cobalt
+dawn
+eiffel
+espresso_libre
+idle
+iplastic
+lazy
+mac_classic
+magicwb_amiga
+pastels_on_dark
+slush_poppies
+spacecadet
+sunburst
+twilight
+zenburnesque
+
+
+Copyright (c) 2010 [name of plugin creator], released under the MIT license
+
+
+/script/plugin install --revision "tag 1.0.1" http://github.com/dasil003/tm_syntax_highlighting.git
32 Rakefile
@@ -0,0 +1,32 @@
+require 'rake'
+require 'rake/testtask'
+require 'rake/rdoctask'
+require 'spec'
+require 'spec/rake/spectask'
+
+
+desc 'Test the blog_kit plugin.'
+Rake::TestTask.new(:test) do |t|
+ t.libs << 'lib'
+ t.libs << 'test'
+ t.pattern = 'test/**/*_test.rb'
+ t.verbose = true
+end
+
+desc 'Generate documentation for the blog_kit plugin.'
+Rake::RDocTask.new(:rdoc) do |rdoc|
+ rdoc.rdoc_dir = 'rdoc'
+ rdoc.title = 'BlogKit'
+ rdoc.options << '--line-numbers' << '--inline-source'
+ rdoc.rdoc_files.include('README')
+ rdoc.rdoc_files.include('lib/**/*.rb')
+end
+
+desc 'Default: run specs.'
+task :default => :spec
+
+desc "Run the specs under spec/models"
+Spec::Rake::SpecTask.new do |t|
+ t.spec_opts = ['--options', "spec/spec.opts"]
+ t.spec_files = FileList['spec/*_spec.rb', 'spec/**/*_spec.rb']
+end
69 app/controllers/blog_comments_controller.rb
@@ -0,0 +1,69 @@
+class BlogCommentsController < ApplicationController
+ unloadable
+
+ layout(BlogKit.instance.settings['layout'] || 'application')
+
+ before_filter :require_user, :only => [:destroy]
+ before_filter :require_admin, :only => [:destroy]
+ before_filter :require_blog_post
+
+ def create
+ @blog_comment = @blog_post.blog_comments.new(params[:blog_comment])
+ @blog_comment.user_id = current_user.id if current_user
+ @blog_comment.request = request
+
+ respond_to do |format|
+ if @blog_comment.save
+ flash[:notice] = 'Your comments has been posted.'
+ format.html { redirect_to(@blog_post) }
+ format.xml { render :xml => @blog_comment, :status => :created, :location => @blog_comment }
+ else
+ format.html do
+ @blog_comments = @blog_post.blog_comments.paginate(:page => params[:page], :order => 'created_at DESC')
+ render :template => '../views/blog_posts/show.html.erb'
+ end
+ format.xml { render :xml => @blog_comment.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ def update
+ @blog_comment = BlogComment.find(params[:id])
+
+ respond_to do |format|
+ if @blog_comment.update_attributes(params[:blog_comment])
+ flash[:notice] = 'BlogComment was successfully updated.'
+ format.html { redirect_to(@blog_comment) }
+ format.xml { head :ok }
+ else
+ format.html { render :action => "edit" }
+ format.xml { render :xml => @blog_comment.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ def destroy
+ @blog_comment = BlogComment.find(params[:id])
+ @blog_comment.destroy
+
+ flash[:notice] = 'The comment has been deleted'
+
+ respond_to do |format|
+ format.html { redirect_to(blog_post_url(@blog_post)) }
+ format.xml { head :ok }
+ end
+ end
+
+ private
+ def require_blog_post
+ @blog_post = BlogPost.find(params[:blog_post_id])
+
+ unless @blog_post
+ flash[:notice] = 'The post you were looking for could not be found'
+ redirect_to :controller => 'blog_posts'
+ return false
+ end
+
+ return true
+ end
+end
107 app/controllers/blog_posts_controller.rb
@@ -0,0 +1,107 @@
+class BlogPostsController < ApplicationController
+ unloadable
+
+ layout(BlogKit.instance.settings['layout'] || 'application')
+
+ before_filter :require_user, :except => [:index, :show]
+ before_filter :require_admin, :except => [:index, :show]
+
+
+ def index
+ @blog_posts = BlogPost.published.paginate(:page => params[:page], :per_page => 5, :order => 'published_at DESC')
+
+ respond_to do |format|
+ format.html # index.html.erb
+ format.xml { render :xml => @blog_posts }
+ format.atom
+ end
+ end
+
+ def drafts
+ @blog_posts = BlogPost.drafts.paginate(:page => params[:page], :order => 'updated_at DESC')
+
+ respond_to do |format|
+ format.html # index.html.erb
+ format.xml { render :xml => @blog_posts }
+ end
+ end
+
+ def show
+ @blog_post = BlogPost.find(params[:id])
+ @blog_comment = @blog_post.blog_comments.new
+ @blog_comments = @blog_post.blog_comments.paginate(:page => params[:page], :order => 'created_at DESC')
+
+ respond_to do |format|
+ format.html # show.html.erb
+ format.xml { render :xml => @blog_post }
+ end
+ end
+
+ def new
+ puts "made it"
+ @blog_post = BlogPost.new
+
+ respond_to do |format|
+ format.html # new.html.erb
+ format.xml { render :xml => @blog_post }
+ end
+ end
+
+ def edit
+ @blog_post = BlogPost.find(params[:id])
+ end
+
+ def create
+ @blog_post = BlogPost.new(params[:blog_post])
+ @blog_post.user_id = current_user.id
+
+ respond_to do |format|
+ if @blog_post.save
+ flash[:notice] = 'BlogPost was successfully created.'
+ format.html { redirect_to(@blog_post) }
+ format.xml { render :xml => @blog_post, :status => :created, :location => @blog_post }
+ else
+ format.html { render :action => "new" }
+ format.xml { render :xml => @blog_post.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ def update
+ @blog_post = BlogPost.find(params[:id])
+
+ respond_to do |format|
+ if @blog_post.update_attributes(params[:blog_post])
+ flash[:notice] = 'BlogPost was successfully updated.'
+ format.html { redirect_to(@blog_post) }
+ format.xml { head :ok }
+ else
+ format.html { render :action => "edit" }
+ format.xml { render :xml => @blog_post.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ def destroy
+ @blog_post = BlogPost.find(params[:id])
+ @blog_post.destroy
+
+ flash[:notice] = 'The blog post has been deleted'
+
+ respond_to do |format|
+ format.html { redirect_to(blog_posts_url) }
+ format.xml { head :ok }
+ end
+ end
+
+ private
+ def require_admin
+ if !current_user || !current_user.admin?
+ flash[:notice] = 'You must be an admin to view this page'
+ redirect_to blog_posts_path
+ return false
+ end
+
+ return true
+ end
+end
63 app/models/blog_comment.rb
@@ -0,0 +1,63 @@
+class BlogComment < ActiveRecord::Base
+ include BlogKitModelHelper
+
+ unloadable
+
+ belongs_to :user
+ belongs_to :blog_article
+
+ validates_presence_of :body
+
+ before_save :check_for_spam
+
+ def validate
+ if !self.user
+ self.errors.add(:name, 'is required') if self.name.blank?
+ end
+ end
+
+ def formatted_created_at
+ self.created_at.strftime(BlogKit.instance.settings['post_date_format'] || '%m/%d/%Y at %I:%M%p')
+ end
+
+ def parsed_body
+ self.code_highlight_and_markdown(self.body)
+ end
+
+ def user_name
+ name = self.user ? self.user.name : self.name
+ if !self.site_url.blank?
+ return "<a href=\"#{self.site_url}\">#{name}</a>"
+ else
+ return name
+ end
+ end
+
+ # Used to set more tracking for akismet
+ def request=(request)
+ self.user_ip = request.remote_ip
+ self.user_agent = request.env['HTTP_USER_AGENT']
+ self.referrer = request.env['HTTP_REFERER']
+ end
+
+ def check_for_spam
+ if BlogKit.instance.settings['akismet_key'] && BlogKit.instance.settings['blog_url']
+ return !Akismetor.spam?(akismet_attributes)
+ end
+ true
+ end
+
+ def akismet_attributes
+ {
+ :key => BlogKit.instance.settings['akismet_key'],
+ :blog => BlogKit.instance.settings['blog_url'],
+ :user_ip => user_ip,
+ :user_agent => user_agent,
+ :comment_author => name,
+ :comment_author_email => email,
+ :comment_author_url => site_url,
+ :comment_content => body
+ }
+ end
+
+end
53 app/models/blog_post.rb
@@ -0,0 +1,53 @@
+require 'bluecloth'
+require 'uv'
+
+class BlogPost < ActiveRecord::Base
+ include BlogKitModelHelper
+
+ unloadable
+
+ belongs_to :user
+
+ has_many :blog_comments, :dependent => :destroy
+
+ validates_presence_of :title
+ validates_presence_of :body
+
+ named_scope :published, { :conditions => {:published => true }}
+ named_scope :drafts, { :conditions => {:published => false }}
+
+ before_save :check_published
+
+ def check_published
+ if self.published_change && self.published_change == [false, true]
+ # Moved to published state, update published_on
+ self.published_at = Time.now
+ end
+ end
+
+ def show_user?
+ (!BlogKit.instance.settings['show_user_who_published'] || BlogKit.instance.settings['show_user_who_published'] == true) && self.user
+ end
+
+
+ def user_name(skip_link=false)
+ if !skip_link && BlogKit.instance.settings['link_to_user']
+ return "<a href=\"/users/#{self.user.id}\">#{self.user.name}</a>"
+ else
+ return self.user.name
+ end
+ end
+
+ def parsed_body
+ self.code_highlight_and_markdown(self.body)
+ end
+
+ def formatted_updated_at
+ self.updated_at.strftime(BlogKit.instance.settings['post_date_format'] || '%m/%d/%Y at %I:%M%p')
+ end
+
+ # Provide SEO Friendly URL's
+ def to_param
+ "#{id}-#{title.gsub(/[^a-z0-9]+/i, '-')}"
+ end
+end
34 app/views/blog_comments/_new_blog_comment.html.erb
@@ -0,0 +1,34 @@
+<div class="blogNewComment">
+ <h2>Post a Comment</h2>
+ <% if !current_user && (!BlogKit.instance.settings['anonymous_comments'] || BlogKit.instance.settings['anonymous_comments'] == false) %>
+ <p>You must be logged in to post a comment.</p>
+ <% else %>
+ <% if current_user %>
+ <p>Posting as <span class="blogPoster"><%= current_user.name %></span></p>
+ <% end %>
+ <% form_for([@blog_post, blog_comment]) do |f| %>
+ <%= f.error_messages %>
+ <% unless current_user %>
+ <p>
+ <%= f.label :name %><br />
+ <%= f.text_field :name %>
+ </p>
+ <p>
+ <%= f.label :site_url, 'Web Site' %><br />
+ <%= f.text_field :site_url %>
+ </p>
+ <p>
+ <%= f.label :email, 'Email (optional)' %><br />
+ <%= f.text_field :email %>
+ </p>
+ <% end %>
+ <p>
+ <%= f.label :body %><br />
+ <%= f.text_area :body, :class => 'blogNewCommentField' %>
+ </p>
+ <p>
+ <%= f.submit 'Post' %>
+ </p>
+ <% end %>
+ <% end %>
+</div>
7 app/views/blog_posts/_admin_links.html.erb
@@ -0,0 +1,7 @@
+<% if current_user && current_user.admin? %>
+ <div class="blogAdminLinks">
+ <%= link_to 'New Blog Post', new_blog_post_path %>
+ <%= link_to 'Edit Drafts', drafts_blog_posts_path %>
+ <%= link_to 'Published Posts', blog_posts_path %>
+ </div>
+<% end %>
46 app/views/blog_posts/_blog_post.html.erb
@@ -0,0 +1,46 @@
+<div class="blogPost">
+ <div class="blogUserImage">
+ <%= blog_post.user_image_tag %>
+ </div>
+
+ <h1 class="blogPostTitle">
+ <%= link_to(h(blog_post.title), blog_post) %>
+ <% if !blog_post.published? %>
+ [Draft]
+ <% end %>
+ </h1>
+
+ <p class="blogPostPostedAt">
+ Posted
+ <% if blog_post.show_user? %>
+ By <span class="blogPoster"><%= blog_post.user_name %></span>
+ <% end %>
+ on
+ <span class="blogPostDate"><%= blog_post.formatted_updated_at %></span>
+
+ <% if current_user && current_user.admin? %>
+ <br />
+ <%= link_to('Edit Post', edit_blog_post_path(blog_post))%>
+ <%= link_to('Delete', blog_post_path(blog_post), :method => :delete, :confirm => "Are you sure you want to destroy the post: #{blog_post.title}") %>
+ <% end %>
+ </p>
+
+ <div class="blogPostBody">
+ <%= blog_post.parsed_body %>
+ </div>
+
+
+ <p class="blogFooter">
+ <%= link_to(pluralize(blog_post.blog_comments.count, 'comment'), blog_post_path(blog_post), :class => 'blogCommentCount') %>
+ <% if params[:action] == 'show' %>
+ <%= link_to('Back', blog_posts_path) %>
+ <% end %>
+ </p>
+
+ <% if defined?(show_comments) %>
+ <%= render :partial => 'blog_comments/new_blog_comment', :locals => {:blog_comment => @blog_comment} %>
+ <%= render :partial => 'blog_posts/comments' %>
+ <% end %>
+
+ <br style="clear: both;" />
+</div>
17 app/views/blog_posts/_comment.html.erb
@@ -0,0 +1,17 @@
+<div class="blogComment<% if comment.user && comment.user.respond_to?(:admin?) && comment.user.admin? %> blogCommentAdmin<% end %>">
+ <div class="blogUserImage">
+ <%= comment.user_image_tag %>
+ </div>
+
+ Posted
+ By <span class="blogPoster"><%= comment.user_name %></span>
+ on
+ <span class="blogPostDate"><%= comment.formatted_created_at%></span>
+
+ <%= comment.parsed_body %>
+
+ <% if current_user && current_user.admin? %>
+ <p><%= link_to('Delete', blog_post_blog_comment_path(@blog_post, comment), :method => :delete, :confirm => 'Are you sure you want to delete this comment?') %></p>
+ <% end %>
+ <br style="clear: both;" />
+</div>
6 app/views/blog_posts/_comments.html.erb
@@ -0,0 +1,6 @@
+<div class="blogComments">
+ <h2>Showing <%= pluralize(@blog_post.blog_comments.count, 'comment') %></h2>
+ <% @blog_comments.each do |comment| %>
+ <%= render :partial => 'blog_posts/comment', :locals => {:comment => comment} %>
+ <% end %>
+</div>
50 app/views/blog_posts/_form.html.erb
@@ -0,0 +1,50 @@
+<% if BlogKit.instance.settings['use_markdown'] == false && BlogKit.instance.settings['html_editor'] == true %>
+ <script type="text/javascript" src="http://js.nicedit.com/nicEdit-latest.js"></script>
+ <script type="text/javascript">
+ bkLib.onDomLoaded(function() { nicEditors.allTextAreas() });
+ </script>
+<% end %>
+
+<div class="editBlogPost">
+ <% if BlogKit.instance.settings['use_markdown'] != false %>
+ <div class="blogMarkdownHelp">
+ <h2>Editing Help</h2>
+ <p>This blog uses Markdown to format its syntax, here is a quick guide</p>
+ <ul>
+ <li>**bold text**</li>
+ <li>*italicized text*</li>
+ <li>&gt;This text is blockquoted</li>
+ <li>&gt;&gt;This text is a nested blockquote</li>
+ <li>* This is an unordered list (ul) item</li>
+ <li>1. This is an ordered list (ol) item</li>
+ <li>[This is a link](http://www.example.com/)</li>
+ <li>[This is a link](http://www.example.com/ "with a title attribute")</li>
+ <li>
+ Code can be highlighted with the following wrapper<br />
+
+<pre>&lt;code lang=&quot;ruby&quot;&gt;
+ ... your code ...
+&lt;/code&gt;</pre>
+ </li>
+ </ul>
+ </div>
+ <% end %>
+ <% form_for(@blog_post) do |f| %>
+ <%= f.error_messages %>
+ <p>
+ <%= f.label :title %><br />
+ <%= f.text_field :title %>
+ </p>
+ <p>
+ <%= f.label :body %><br />
+ <%= f.text_area :body %>
+ </p>
+ <p>
+ <%= f.label :published, 'Status' %><br />
+ <%= f.radio_button :published, false %><%= f.label :published_false, 'Draft' %>
+ <%= f.radio_button :published, true %><%= f.label :published_true, 'Publish' %>
+ <p>
+ <%= f.submit 'Save' %> or <%= link_to 'Back', blog_posts_path %>
+ </p>
+ <% end %>
+</div>
19 app/views/blog_posts/drafts.html.erb
@@ -0,0 +1,19 @@
+<%= stylesheet_link_tag 'blog_kit' %>
+<%= stylesheet_link_tag 'syntax/' + (BlogKit.instance.settings['theme'] || 'mac_classic') %>
+
+<%= render :partial => 'admin_links' %>
+
+<% if @blog_posts.size == 0 && !params[:page] %>
+ <div class="blogPost">
+ <h1>No Blog Posts</h1>
+ <p>There are currently no blog posts, please check back shortly.</p>
+ </div>
+<% else %>
+ <%= render :collection => @blog_posts, :partial => 'blog_post' %>
+<% end %>
+
+<div class="blogPages">
+ <%= will_paginate @blog_posts %>
+</div>
+
+<%= render :partial => 'admin_links' %>
4 app/views/blog_posts/edit.html.erb
@@ -0,0 +1,4 @@
+<%= stylesheet_link_tag 'blog_kit' %>
+<h1>Edit Blog Post</h1>
+
+<%= render :partial => 'form' %>
12 app/views/blog_posts/index.atom.builder
@@ -0,0 +1,12 @@
+atom_feed do |feed|
+ feed.title(BlogKit.instance.settings['blog_name'])
+ feed.update(@blog_posts.first.created_at)
+
+ @blog_posts.each do |post|
+ feed.entry(post) do |entry|
+ entry.title(post.title)
+ entry.content(post.body, :type => 'html')
+ entry.author { |author| author.name(post.user_name(true)) }
+ end
+ end
+end
21 app/views/blog_posts/index.html.erb
@@ -0,0 +1,21 @@
+<% self.respond_to?(:title) && title(BlogKit.instance.settings['blog_name'] || 'Blog') %>
+<%= stylesheet_link_tag 'blog_kit' %>
+<%= stylesheet_link_tag 'syntax/' + (BlogKit.instance.settings['theme'] || 'mac_classic') %>
+<%= auto_discovery_link_tag :atom, blog_posts_path(:format => :atom) %>
+
+<%= render :partial => 'admin_links' %>
+
+<% if @blog_posts.size == 0 && !params[:page] %>
+ <div class="blogPost">
+ <h1>No Blog Posts</h1>
+ <p>There are currently no blog posts, please check back shortly.</p>
+ </div>
+<% else %>
+ <%= render :collection => @blog_posts, :partial => 'blog_post' %>
+<% end %>
+
+<div class="blogPages">
+ <%= will_paginate @blog_posts %>
+</div>
+
+<%= render :partial => 'admin_links' %>
4 app/views/blog_posts/new.html.erb
@@ -0,0 +1,4 @@
+<%= stylesheet_link_tag 'blog_kit' %>
+<h1>New Blog Post</h1>
+
+<%= render :partial => 'form' %>
6 app/views/blog_posts/show.html.erb
@@ -0,0 +1,6 @@
+<%= stylesheet_link_tag 'blog_kit' %>
+<%= stylesheet_link_tag 'syntax/' + (BlogKit.instance.settings['theme'] || 'mac_classic') %>
+
+<%= render :object => @blog_post, :partial => 'blog_posts/blog_post', :locals => {:show_comments => true} %>
+
+<%= render :partial => 'admin_links' %>
4 config/routes.rb
@@ -0,0 +1,4 @@
+ActionController::Routing::Routes.draw do |map|
+ map.resources :blog_posts, :collection => {:drafts => :any}, :has_many => :blog_comments
+
+end
7 generators/blog_comments_migration/blog_comments_migration_generator.rb
@@ -0,0 +1,7 @@
+class BlogCommentsMigrationGenerator < Rails::Generator::Base
+ def manifest
+ record do |m|
+ m.migration_template 'migration.rb', "db/migrate", {:migration_file_name => "create_blog_comments"}
+ end
+ end
+end
23 generators/blog_comments_migration/templates/migration.rb
@@ -0,0 +1,23 @@
+class CreateBlogComments < ActiveRecord::Migration
+ def self.up
+ create_table :blog_comments do |t|
+ t.column :blog_post_id, :integer
+ t.column :user_id, :integer
+ t.column :user_ip, :string
+ t.column :user_agent, :string
+ t.column :referrer, :string
+ t.column :name, :string
+ t.column :site_url, :string
+ t.column :email, :string
+ t.column :body, :text
+ t.column :created_at, :datetime
+ end
+
+ add_index :blog_comments, :blog_post_id
+ end
+
+ def self.down
+ remove_index :blog_comments, :blog_post_id
+ drop_table :blog_comments
+ end
+end
7 generators/blog_kit_config/blog_kit_config_generator.rb
@@ -0,0 +1,7 @@
+class BlogKitConfigGenerator < Rails::Generator::Base
+ def manifest
+ record do |m|
+ m.file "config/blog_kit.yml", "config/blog_kit.yml"
+ end
+ end
+end
29 generators/blog_kit_config/templates/config/blog_kit.yml
@@ -0,0 +1,29 @@
+# BlogKit configuration file
+---
+
+# ================ Visual settings ================
+
+# Show "Published By ..."
+blog_name: '__EDIT BLOG_NAME__'
+show_user_who_published: true
+post_date_format: '%m/%d/%Y at %I:%M%p' # strftime format
+gravatar: true
+anonymous_comments: true
+
+use_markdown: true
+
+# Only enabled if you don't use markdown
+# html_editor: true
+
+layout: 'application'
+
+theme: 'mac_classic'
+
+# Link to the default user path (/users/[id])
+link_to_user: true
+
+# Akismet settings (spam filtering)
+# akismet_key: '__your_key_here__'
+
+# Blog URL - required for akismet
+# blog_url: '__your_blog_url_here__'
7 generators/blog_posts_migration/blog_posts_migration_generator.rb
@@ -0,0 +1,7 @@
+class BlogPostsMigrationGenerator < Rails::Generator::Base
+ def manifest
+ record do |m|
+ m.migration_template 'migration.rb', "db/migrate", {:migration_file_name => "create_blog_posts"}
+ end
+ end
+end
17 generators/blog_posts_migration/templates/migration.rb
@@ -0,0 +1,17 @@
+class CreateBlogPosts < ActiveRecord::Migration
+ def self.up
+ create_table :blog_posts do |t|
+ t.column :title, :string, :null => false
+ t.column :body, :text
+ t.column :created_at, :datetime
+ t.column :updated_at, :datetime
+ t.column :published, :boolean, :null => false, :default => false
+ t.column :user_id, :integer
+ t.column :published_at, :datetime
+ end
+ end
+
+ def self.down
+ drop_table :blog_posts
+ end
+end
114 generators/syntax/active4d.css
@@ -0,0 +1,114 @@
+pre.active4d .DiffHeader {
+ background-color: #656565;
+ color: #FFFFFF;
+}
+pre.active4d .Operator {
+}
+pre.active4d .InheritedClass {
+}
+pre.active4d .TypeName {
+ color: #21439C;
+}
+pre.active4d .Number {
+ color: #A8017E;
+}
+pre.active4d .EmbeddedSource {
+ background-color: #ECF1FF;
+}
+pre.active4d {
+ background-color: #FFFFFF;
+ color: #000000;
+}
+pre.active4d .DiffInsertedLine {
+ background-color: #98FF9A;
+ color: #000000;
+}
+pre.active4d .LibraryVariable {
+ color: #A535AE;
+}
+pre.active4d .Storage {
+ color: #FF5600;
+}
+pre.active4d .InterpolatedEntity {
+ font-weight: bold;
+ color: #66CCFF;
+}
+pre.active4d .line-numbers {
+ background-color: #BAD6FD;
+ color: #000000;
+}
+pre.active4d .LocalVariable {
+ font-weight: bold;
+ color: #6392FF;
+}
+pre.active4d .DiffLineRange {
+ background-color: #1B63FF;
+ color: #FFFFFF;
+}
+pre.active4d .BlockComment {
+ color: #D33435;
+}
+pre.active4d .TagName {
+ color: #016CFF;
+}
+pre.active4d .FunctionArgument {
+}
+pre.active4d .BuiltInConstant {
+ color: #A535AE;
+}
+pre.active4d .LineComment {
+ color: #D33535;
+}
+pre.active4d .DiffDeletedLine {
+ background-color: #FF7880;
+ color: #000000;
+}
+pre.active4d .NamedConstant {
+ color: #B7734C;
+}
+pre.active4d .CommandMethod {
+ font-weight: bold;
+ color: #45AE34;
+}
+pre.active4d .TableField {
+ color: #0BB600;
+}
+pre.active4d .PlainXmlText {
+ color: #000000;
+}
+pre.active4d .Invalid {
+ background-color: #990000;
+ color: #FFFFFF;
+}
+pre.active4d .LibraryClassType {
+ color: #A535AE;
+}
+pre.active4d .TagAttribute {
+ color: #963DFF;
+}
+pre.active4d .Keyword {
+ font-weight: bold;
+ color: #006699;
+}
+pre.active4d .UserDefinedConstant {
+}
+pre.active4d .String {
+ color: #666666;
+}
+pre.active4d .DiffUnchangedLine {
+ color: #5E5E5E;
+}
+pre.active4d .TagContainer {
+ color: #7A7A7A;
+}
+pre.active4d .FunctionName {
+ color: #21439C;
+}
+pre.active4d .Variable {
+ font-weight: bold;
+ color: #0053FF;
+}
+pre.active4d .DateTimeLiteral {
+ font-weight: bold;
+ color: #66CCFF;
+}
72 generators/syntax/all_hallows_eve.css
@@ -0,0 +1,72 @@
+pre.all_hallows_eve .ClassInheritance {
+ font-style: italic;
+}
+pre.all_hallows_eve .Constant {
+ color: #3387CC;
+}
+pre.all_hallows_eve .TypeName {
+ text-decoration: underline;
+}
+pre.all_hallows_eve .TextBase {
+ background-color: #434242;
+ color: #FFFFFF;
+}
+pre.all_hallows_eve {
+ background-color: #000000;
+ color: #FFFFFF;
+}
+pre.all_hallows_eve .StringEscapesExecuted {
+ color: #555555;
+}
+pre.all_hallows_eve .line-numbers {
+ background-color: #73597E;
+ color: #FFFFFF;
+}
+pre.all_hallows_eve .StringExecuted {
+ background-color: #CCCC33;
+ color: #000000;
+}
+pre.all_hallows_eve .BlockComment {
+ background-color: #9B9B9B;
+ color: #FFFFFF;
+}
+pre.all_hallows_eve .TagName {
+ text-decoration: underline;
+}
+pre.all_hallows_eve .PreProcessorLine {
+ color: #D0D0FF;
+}
+pre.all_hallows_eve .SupportFunction {
+ color: #C83730;
+}
+pre.all_hallows_eve .FunctionArgument {
+ font-style: italic;
+}
+pre.all_hallows_eve .PreProcessorDirective {
+}
+pre.all_hallows_eve .StringEscapes {
+ color: #AAAAAA;
+}
+pre.all_hallows_eve .SourceBase {
+ background-color: #000000;
+ color: #FFFFFF;
+}
+pre.all_hallows_eve .TagAttribute {
+}
+pre.all_hallows_eve .StringLiteral {
+ color: #CCCC33;
+}
+pre.all_hallows_eve .String {
+ color: #66CC33;
+}
+pre.all_hallows_eve .Keyword {
+ color: #CC7833;
+}
+pre.all_hallows_eve .RegularExpression {
+ color: #CCCC33;
+}
+pre.all_hallows_eve .FunctionName {
+}
+pre.all_hallows_eve .Comment {
+ color: #9933CC;
+}
147 generators/syntax/amy.css
@@ -0,0 +1,147 @@
+pre.amy .PolymorphicVariants {
+ color: #60B0FF;
+ font-style: italic;
+}
+pre.amy .KeywordDecorator {
+ color: #D0D0FF;
+}
+pre.amy .Punctuation {
+ color: #805080;
+}
+pre.amy .InheritedClass {
+}
+pre.amy .InvalidDepricated {
+ background-color: #CC66FF;
+ color: #200020;
+}
+pre.amy .LibraryVariable {
+}
+pre.amy .TokenReferenceOcamlyacc {
+ color: #3CB0D0;
+}
+pre.amy .Storage {
+ color: #B0FFF0;
+}
+pre.amy .KeywordOperator {
+ color: #A0A0FF;
+}
+pre.amy .CharacterConstant {
+ color: #666666;
+}
+pre.amy .line-numbers {
+ background-color: #800000;
+ color: #000000;
+}
+pre.amy .ClassName {
+ color: #70E080;
+}
+pre.amy .Int64Constant {
+ font-style: italic;
+}
+pre.amy .NonTerminalReferenceOcamlyacc {
+ color: #C0F0F0;
+}
+pre.amy .TokenDefinitionOcamlyacc {
+ color: #3080A0;
+}
+pre.amy .ClassType {
+ color: #70E0A0;
+}
+pre.amy .ControlKeyword {
+ color: #80A0FF;
+}
+pre.amy .LineNumberDirectives {
+ text-decoration: underline;
+ color: #C080C0;
+}
+pre.amy .FloatingPointConstant {
+ text-decoration: underline;
+}
+pre.amy .Int32Constant {
+ font-weight: bold;
+}
+pre.amy .TagName {
+ color: #009090;
+}
+pre.amy .ModuleTypeDefinitions {
+ text-decoration: underline;
+ color: #B000B0;
+}
+pre.amy .Integer {
+ color: #7090B0;
+}
+pre.amy .Camlp4TempParser {
+}
+pre.amy .InvalidIllegal {
+ font-weight: bold;
+ background-color: #FFFF00;
+ color: #400080;
+}
+pre.amy .LibraryConstant {
+ background-color: #200020;
+}
+pre.amy .ModuleDefinitions {
+ color: #B000B0;
+}
+pre.amy .Variants {
+ color: #60B0FF;
+}
+pre.amy .CompilerDirectives {
+ color: #C080C0;
+}
+pre.amy .FloatingPointInfixOperator {
+ text-decoration: underline;
+}
+pre.amy .BuiltInConstant1 {
+}
+pre.amy {
+ background-color: #200020;
+ color: #D0D0FF;
+}
+pre.amy .FunctionArgument {
+ color: #80B0B0;
+}
+pre.amy .FloatingPointPrefixOperator {
+ text-decoration: underline;
+}
+pre.amy .NativeintConstant {
+ font-weight: bold;
+}
+pre.amy .BuiltInConstant {
+ color: #707090;
+}
+pre.amy .BooleanConstant {
+ color: #8080A0;
+}
+pre.amy .LibraryClassType {
+}
+pre.amy .TagAttribute {
+}
+pre.amy .Keyword {
+ color: #A080FF;
+}
+pre.amy .UserDefinedConstant {
+}
+pre.amy .String {
+ color: #999999;
+}
+pre.amy .Camlp4Code {
+ background-color: #350060;
+}
+pre.amy .NonTerminalDefinitionOcamlyacc {
+ color: #90E0E0;
+}
+pre.amy .FunctionName {
+ color: #50A0A0;
+}
+pre.amy .SupportModules {
+ color: #A00050;
+}
+pre.amy .Variable {
+ color: #008080;
+}
+pre.amy .Comment {
+ background-color: #200020;
+ color: #404080;
+ font-style: italic;
+}
88 generators/syntax/blackboard.css
@@ -0,0 +1,88 @@
+pre.blackboard .LatexSupport {
+ color: #FBDE2D;
+}
+pre.blackboard .OcamlInfixOperator {
+ color: #8DA6CE;
+}
+pre.blackboard .MetaFunctionCallPy {
+ color: #BECDE6;
+}
+pre.blackboard .Superclass {
+ color: #FF6400;
+ font-style: italic;
+}
+pre.blackboard .Constant {
+ color: #D8FA3C;
+}
+pre.blackboard {
+ background-color: #0C1021;
+ color: #F8F8F8;
+}
+pre.blackboard .OcamlFPConstant {
+ text-decoration: underline;
+}
+pre.blackboard .OcamlFPInfixOperator {
+ text-decoration: underline;
+}
+pre.blackboard .Support {
+ color: #8DA6CE;
+}
+pre.blackboard .OcamlOperator {
+ color: #F8F8F8;
+}
+pre.blackboard .Storage {
+ color: #FBDE2D;
+}
+pre.blackboard .line-numbers {
+ background-color: #253B76;
+ color: #FFFFFF;
+}
+pre.blackboard .StringInterpolation {
+ color: #FF6400;
+}
+pre.blackboard .InvalidIllegal {
+ background-color: #9D1E15;
+ color: #F8F8F8;
+}
+pre.blackboard .PlistUnquotedString {
+ color: #FFFFFF;
+}
+pre.blackboard .OcamlVariant {
+ color: #D5E0F3;
+}
+pre.blackboard .MetaTag {
+ color: #7F90AA;
+}
+pre.blackboard .LatexEnvironment {
+ background-color: #F7F7F8;
+}
+pre.blackboard .OcamlFPPrefixOperator {
+ text-decoration: underline;
+}
+pre.blackboard .OcamlPrefixOperator {
+ color: #8DA6CE;
+}
+pre.blackboard .EntityNameSection {
+ color: #FFFFFF;
+}
+pre.blackboard .String {
+ color: #61CE3C;
+}
+pre.blackboard .Keyword {
+ color: #FBDE2D;
+}
+pre.blackboard .LatexEnvironmentNested {
+ background-color: #7691F3;
+}
+pre.blackboard .InvalidDeprecated {
+ color: #AB2A1D;
+ font-style: italic;
+}
+pre.blackboard .Variable {
+}
+pre.blackboard .Entity {
+ color: #FF6400;
+}
+pre.blackboard .Comment {
+ color: #AEAEAE;
+}
605 generators/syntax/brilliance_black.css
@@ -0,0 +1,605 @@
+pre.brilliance_black .MetaGroupBraces2 {
+ background-color: #0E0E0E;
+}
+pre.brilliance_black .StringEmbeddedSource {
+ color: #406180;
+}
+pre.brilliance_black .line-numbers {
+ background-color: #2E2EE6;
+ color: #000000;
+}
+pre.brilliance_black .StorageModifier {
+ color: #803D00;
+}
+pre.brilliance_black .TagWildcard {
+ font-weight: bold;
+ color: #FF7900;
+}
+pre.brilliance_black .MUnderline {
+ text-decoration: underline;
+}
+pre.brilliance_black .MetaGroupBraces3 {
+ background-color: #111111;
+}
+pre.brilliance_black .MiscPunctuation {
+ font-weight: bold;
+ color: #4C4C4C;
+}
+pre.brilliance_black .LEntityNameSection {
+ background-color: #FFFFFF;
+ color: #000000;
+}
+pre.brilliance_black .MItalic {
+ font-style: italic;
+}
+pre.brilliance_black .MetaGroupBraces4 {
+ background-color: #151515;
+}
+pre.brilliance_black .DDiffDelete {
+ background-color: #400021;
+ color: #FF40A3;
+}
+pre.brilliance_black .LMetaEnvironmentList {
+ background-color: #010101;
+ color: #515151;
+}
+pre.brilliance_black .InheritedClass {
+ background-color: #480204;
+ color: #FF0086;
+}
+pre.brilliance_black .LKeywordOperatorBraces {
+ color: #666666;
+}
+pre.brilliance_black .MetaGroupBraces5 {
+ background-color: #191919;
+}
+pre.brilliance_black .ObjectPunctuation {
+ font-weight: bold;
+ color: #0C823B;
+}
+pre.brilliance_black .LMetaEndDocument {
+ background-color: #CDCDCD;
+ color: #000000;
+}
+pre.brilliance_black .LibraryConstant {
+ color: #00FFF8;
+}
+pre.brilliance_black .LibraryVariable {
+ background-color: #024846;
+ color: #00FFF8;
+}
+pre.brilliance_black .MetaGroupBraces6 {
+ background-color: #1C1C1C;
+}
+pre.brilliance_black .MetaSourceEmbedded {
+ background-color: #010101;
+ color: #666666;
+}
+pre.brilliance_black .MetaBracePipe {
+ background-color: #1E1E1E;
+ color: #4C4C4C;
+}
+pre.brilliance_black .LMetaLabelReference {
+ background-color: #404040;
+}
+pre.brilliance_black .MetaGroupBraces7 {
+ background-color: #1F1F1F;
+}
+pre.brilliance_black .TagBlockForm {
+ background-color: #031C34;
+}
+pre.brilliance_black .MRawBlock {
+ background-color: #000000;
+ color: #999999;
+}
+pre.brilliance_black .KeywordControl {
+ background-color: #230248;
+ color: #F800FF;
+}
+pre.brilliance_black .KeywordOperatorGetter {
+ color: #8083FF;
+}
+pre.brilliance_black .LVariableParameterCite {
+ background-color: #400022;
+ color: #FFBFE1;
+}
+pre.brilliance_black .MetaGroupBraces8 {
+ background-color: #212121;
+}
+pre.brilliance_black .MetaDelimiter {
+ font-weight: bold;
+ background-color: #151515;
+ color: #FFFFFF;
+}
+pre.brilliance_black .LMetaEnvironmentList2 {
+ background-color: #010101;
+ color: #515151;
+}
+pre.brilliance_black .LMetaFootnote {
+ background-color: #020448;
+ color: #3D43EF;
+}
+pre.brilliance_black .KeywordOperatorSetter {
+}
+pre.brilliance_black .StringRegexGroup1 {
+ background-color: #274802;
+}
+pre.brilliance_black .TagName {
+ color: #EFEFEF;
+}
+pre.brilliance_black .VariableLanguageThisJsPrototype {
+ color: #666666;
+}
+pre.brilliance_black .MetaGroupBraces9 {
+ background-color: #242424;
+}
+pre.brilliance_black .BoldStringQuotes {
+ font-weight: bold;
+ color: #803D00;
+}
+pre.brilliance_black .MetaDelimiterObjectJs {
+ background-color: #010101;
+}
+pre.brilliance_black .MetaDelimiterStatementJs {
+ background-color: #000000;
+}
+pre.brilliance_black .Invalid {
+ font-weight: bold;
+ background-color: #FF0007;
+ color: #330000;
+}
+pre.brilliance_black .LMetaEnvironmentList3 {
+ background-color: #000000;
+ color: #515151;
+}
+pre.brilliance_black .MQuoteBlock {
+ background-color: #656565;
+}
+pre.brilliance_black .ClassMethod {
+ color: #FF0086;
+}
+pre.brilliance_black .Keyword {
+ color: #F800FF;
+}
+pre.brilliance_black .AttributeMatch {
+ background-color: #020448;
+ color: #0007FF;
+}
+pre.brilliance_black .HackKeywordControlRubyStartBlock {
+}
+pre.brilliance_black .StringRegexGroup2 {
+ background-color: #274802;
+ color: #EBEBEB;
+}
+pre.brilliance_black .MetaBraceCurlyFunction {
+ background-color: #230248;
+ color: #8083FF;
+}
+pre.brilliance_black .DDiffAdd {
+ background-color: #00401E;
+ color: #40FF9A;
+}
+pre.brilliance_black .MetaBraceErbReturnValue {
+ background-color: #284935;
+ color: #45815D;
+}
+pre.brilliance_black .LMetaEnvironmentList4 {
+ color: #515151;
+}
+pre.brilliance_black .TagAttribute {
+ color: #F5F5F5;
+}
+pre.brilliance_black .MReference {
+ color: #0086FF;
+}
+pre.brilliance_black .Function {
+ background-color: #480227;
+ color: #800043;
+}
+pre.brilliance_black .StringRegexGroup3 {
+ background-color: #274802;
+ color: #EBEBEB;
+}
+pre.brilliance_black .GlobalVariable {
+ background-color: #022748;
+ color: #00807C;
+}
+pre.brilliance_black .LMetaEnvironmentList5 {
+ color: #515151;
+}
+pre.brilliance_black .EntityNamePreprocessor {
+ background-color: #482302;
+}
+pre.brilliance_black .StringRegexGroup4 {
+ background-color: #274802;
+ color: #EBEBEB;
+}
+pre.brilliance_black .LSupportFunctionSection {
+ color: #D9D9D9;
+}
+pre.brilliance_black .LMetaEnvironmentList6 {
+ color: #515151;
+}
+pre.brilliance_black .Id {
+ color: #FF0086;
+}
+pre.brilliance_black .CurlyPunctuation {
+ font-weight: bold;
+ color: #FFFFFF;
+}
+pre.brilliance_black .SubtlegradientCom {
+ background-color: #FFFFFF;
+ text-decoration: underline;
+ color: #555555;
+}
+pre.brilliance_black .StringPunctuation {
+ color: #803D00;
+}
+pre.brilliance_black .LSupportFunction {
+ color: #BC80FF;
+}
+pre.brilliance_black .TextSubversionCommit {
+ background-color: #FFFFFF;
+ color: #000000;
+}
+pre.brilliance_black .SourceEmbededSource {
+ background-color: #161616;
+}
+pre.brilliance_black .TagOther {
+ background-color: #480204;
+ color: #FF0007;
+}
+pre.brilliance_black .ClassVariable {
+ background-color: #02068E;
+ color: #0086FF;
+}
+pre.brilliance_black .LVariableParameterLabel {
+ color: #E6E6E6;
+}
+pre.brilliance_black .MetaGroupAssertionRegexp {
+ background-color: #024B8E;
+}
+pre.brilliance_black .DDiffChanged {
+ background-color: #803D00;
+ color: #FFFF55;
+}
+pre.brilliance_black .HtmlComment {
+ font-style: italic;
+}
+pre.brilliance_black .StringInterpolated {
+ background-color: #1A1A1A;
+ color: #FFFC80;
+}
+pre.brilliance_black .BuiltInConstant1 {
+ background-color: #044802;
+ color: #07FF00;
+}
+pre.brilliance_black .InstanceConstructor {
+ background-color: #480227;
+}
+pre.brilliance_black .Instance {
+ color: #FF0007;
+}
+pre.brilliance_black .MetaPropertyList {
+ font-weight: bold;
+ color: #333333;
+}
+pre.brilliance_black .Latex {
+}
+pre.brilliance_black .LMarkupRaw {
+ background-color: #000000;
+}
+pre.brilliance_black .StringPunctuationIi {
+ color: #F5EF28;
+}
+pre.brilliance_black .Css {
+}
+pre.brilliance_black .ClassName {
+ color: #FF0007;
+}
+pre.brilliance_black .MetaPropertyName {
+ color: #999999;
+}
+pre.brilliance_black .LKeywordControlRef {
+ background-color: #260001;
+ color: #FF0007;
+}
+pre.brilliance_black .MetaHeadersBlogKeywordOtherBlog {
+ background-color: #036562;
+ color: #06403E;
+}
+pre.brilliance_black .PseudoClass {
+ color: #7900FF;
+}
+pre.brilliance_black .TagBlockHead {
+ background-color: #121212;
+}
+pre.brilliance_black .StringRegexArbitraryRepitition {
+ background-color: #274802;
+ color: #00FFF8;
+}
+pre.brilliance_black .LKeywordOperatorDelimiter {
+ background-color: #010101;
+}
+pre.brilliance_black .FunctionArgument {
+ background-color: #230248;
+ color: #8083FF;
+}
+pre.brilliance_black .MReferenceName {
+ background-color: #022748;
+ color: #00FFF8;
+}
+pre.brilliance_black .TextSubversionCommitMetaScopeChangedFiles {
+ background-color: #000000;
+ color: #FFFFFF;
+}
+pre.brilliance_black .VariablePunctuation {
+ color: #666666;
+}
+pre.brilliance_black .MUnderlineLink {
+ text-decoration: underline;
+ color: #00FFF8;
+}
+pre.brilliance_black .Selector {
+ background-color: #010101;
+ color: #666666;
+}
+pre.brilliance_black .TagDoctype {
+ background-color: #333333;
+ color: #CDCDCD;
+}
+pre.brilliance_black .Class {
+ background-color: #8E0206;
+ color: #800004;
+}
+pre.brilliance_black .BuiltInConstant {
+ color: #07FF00;
+}
+pre.brilliance_black .MBold {
+ font-weight: bold;
+}
+pre.brilliance_black .MHeading {
+ background-color: #272727;
+ color: #666666;
+}
+pre.brilliance_black .ConstantVariable {
+ color: #00FFF8;
+}
+pre.brilliance_black .XmlTag {
+ color: #666666;
+}
+pre.brilliance_black .MHr {
+ background-color: #FFFFFF;
+ color: #000000;
+}
+pre.brilliance_black .LKeywordControlCite {
+ background-color: #260014;
+ color: #FF0086;
+}
+pre.brilliance_black .FunctionPunctuation {
+ font-weight: bold;
+ color: #800043;
+}
+pre.brilliance_black .Variable {
+ color: #0086FF;
+}
+pre.brilliance_black .Syntax {
+ color: #333333;
+}
+pre.brilliance_black .MetaPropertyValue {
+ background-color: #0D0D0D;
+ color: #999999;
+}
+pre.brilliance_black .KeywordOperator {
+ color: #6100CC;
+}
+pre.brilliance_black .StringUnquoted {
+ color: #FFBC80;
+}
+pre.brilliance_black .LConstantLanguageGeneral {
+}
+pre.brilliance_black .TextStringSource {
+ color: #999999;
+}
+pre.brilliance_black .LVariableParameterLabelReference {
+ background-color: #400002;
+ color: #FFBC80;
+}
+pre.brilliance_black .Source {
+ background-color: #000000;
+}
+pre.brilliance_black .MetaHeadersBlogStringUnquotedBlog {
+ background-color: #656523;
+ color: #803D00;
+}
+pre.brilliance_black .StringRegexCharacterClass {
+ background-color: #274802;
+ color: #86FF00;
+}
+pre.brilliance_black .LibraryFunction {
+ color: #6100CC;
+}
+pre.brilliance_black .MetaBlockContentSlate {
+ color: #CDCDCD;
+}
+pre.brilliance_black .TextStringSourceStringSource {
+}
+pre.brilliance_black .MetaBraceErb1 {
+ background-color: #000000;
+}
+pre.brilliance_black .TagInline {
+ background-color: #482302;
+ color: #FF7900;
+}
+pre.brilliance_black .String {
+ background-color: #482302;
+ color: #FFFC80;
+}
+pre.brilliance_black .MetaBlockSlate {
+ color: #666666;
+}
+pre.brilliance_black .MetaHeadersBlog1 {
+ background-color: #FFFFFF;
+ color: #666666;
+}
+pre.brilliance_black .SourceRubyRailsEmbeddedOneLine {
+ background-color: #036562;
+}
+pre.brilliance_black .SourceRubyRailsEmbeddedReturnValueOneLine {
+ background-color: #3A3A3A;
+}
+pre.brilliance_black .MMarkup {
+ background-color: #1E1E1E;
+ color: #FFF800;
+}
+pre.brilliance_black .TagBlock {
+ background-color: #2C2C2C;
+ color: #4C4C4C;
+}
+pre.brilliance_black .CommentPunctuation1 {
+ color: #333333;
+}
+pre.brilliance_black .SourceStringInterpolatedSource {
+ background-color: #010101;
+ color: #999999;
+}
+pre.brilliance_black .SourceStringSource {
+ background-color: #272727;
+ color: #FFFFFF;
+}
+pre.brilliance_black .xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx {
+ background-color: #FFFFFF;
+ color: #E6E6E6;
+}
+pre.brilliance_black .LKeywordOperatorBrackets {
+ color: #999999;
+}
+pre.brilliance_black .SourceRegexpKeyword {
+ color: #FF0086;
+}
+pre.brilliance_black .TagMeta {
+ background-color: #230248;
+ color: #F800FF;
+}
+pre.brilliance_black .GlobalPreDefinedVariable {
+ background-color: #024846;
+ color: #00FF79;
+}
+pre.brilliance_black .TagForm {
+ background-color: #022748;
+ color: #0086FF;
+}
+pre.brilliance_black .Tag {
+ color: #333333;
+}
+pre.brilliance_black .UserDefinedConstant {
+ color: #00FF79;
+}
+pre.brilliance_black .NormalVariables {
+ color: #406180;
+}
+pre.brilliance_black .ThomasAylott {
+ font-weight: bold;
+ background-color: #FFFFFF;
+ color: #000000;
+}
+pre.brilliance_black .Comment1 {
+ color: #333333;
+}
+pre.brilliance_black .TextSource {
+ background-color: #000000;
+ color: #CCCCCC;
+}
+pre.brilliance_black .MetaBraceErb {
+ background-color: #036562;
+ color: #00FFF8;
+}
+pre.brilliance_black .SupportTypePropertyName {
+ background-color: #000000;
+ color: #FFFFFF;
+}
+pre.brilliance_black .StringLiteral {
+ background-color: #274802;
+ color: #FFF800;
+}
+pre.brilliance_black .MetaGroupBracesRoundJs {
+}
+pre.brilliance_black .MetaHeadersBlog {
+ background-color: #FFFFFF;
+}
+pre.brilliance_black .Comment {
+ background-color: #030365;
+ color: #5555FF;
+ font-style: italic;
+}
+pre.brilliance_black .Class1 {
+ color: #F800FF;
+}
+pre.brilliance_black .Text {
+ color: #FFFFFF;
+}
+pre.brilliance_black .StringRegex {
+ background-color: #274802;
+ color: #FFF800;
+}
+pre.brilliance_black .CommentPunctuation {
+ font-weight: bold;
+ color: #1414F9;
+}
+pre.brilliance_black .MetaTagInlineSource {
+ background-color: #482302;
+}
+pre.brilliance_black .TagStructure {
+ background-color: #2A2A2A;
+ color: #666666;
+}
+pre.brilliance_black .Tag1 {
+ color: #FF0007;
+}
+pre.brilliance_black .FunctionName {
+ color: #FF0086;
+}
+pre.brilliance_black .LMetaGroupBraces {
+ color: #515151;
+}
+pre.brilliance_black .Storage {
+ color: #FF7900;
+}
+pre.brilliance_black .MetaAssertion {
+ color: #0086FF;
+}
+pre.brilliance_black .MetaBraceCurlyMetaGroup {
+ background-color: #010101;
+ color: #CDCDCD;
+}
+pre.brilliance_black .ArrayPunctuation {
+ font-weight: bold;
+ background-color: #341A03;
+ color: #7F5E40;
+}
+pre.brilliance_black .SpecialFunction {
+ color: #8C60BF;
+}
+pre.brilliance_black .InstanceVariable {
+ color: #406180;
+}
+pre.brilliance_black .CharacterConstant {
+ color: #86FF00;
+}
+pre.brilliance_black {
+ background-color: #050505;
+ color: #CDCDCD;
+}
+pre.brilliance_black .LibraryClassType {
+ background-color: #480204;
+ color: #FF0007;
+}
+pre.brilliance_black .Number {
+ color: #C6FF00;
+}
+pre.brilliance_black .MetaGroupBraces1 {
+ background-color: #0A0A0A;
+}
+pre.brilliance_black .TagValue {
+ color: #EBEBEB;
+}
599 generators/syntax/brilliance_dull.css
@@ -0,0 +1,599 @@
+pre.brilliance_dull .MetaGroupBraces2 {
+ background-color: #0E0E0E;
+}
+pre.brilliance_dull .StringEmbeddedSource {
+ color: #555F68;
+}
+pre.brilliance_dull .line-numbers {
+ background-color: #2B2F53;
+ color: #FFFFFF;
+}
+pre.brilliance_dull .StorageModifier {
+}
+pre.brilliance_dull .TagWildcard {
+ font-weight: bold;
+ color: #A57C57;
+}
+pre.brilliance_dull .MUnderline {
+ text-decoration: underline;
+}
+pre.brilliance_dull .MetaGroupBraces3 {
+ background-color: #111111;
+}
+pre.brilliance_dull .MiscPunctuation {
+ font-weight: bold;
+ color: #666666;
+}
+pre.brilliance_dull .LEntityNameSection {
+ background-color: #FFFFFF;
+ color: #000000;
+}
+pre.brilliance_dull .MItalic {
+ font-style: italic;
+}
+pre.brilliance_dull .MetaGroupBraces4 {
+ background-color: #151515;
+}
+pre.brilliance_dull .DDiffDelete {
+ background-color: #28151F;
+ color: #BB82A0;
+}
+pre.brilliance_dull .LMetaEnvironmentList {
+ background-color: #000000;
+ color: #515151;
+}
+pre.brilliance_dull .InheritedClass {
+ background-color: #2C1818;
+ color: #A45880;
+}
+pre.brilliance_dull .LKeywordOperatorBraces {
+ color: #666666;
+}
+pre.brilliance_dull .MetaGroupBraces5 {
+ background-color: #191919;
+}
+pre.brilliance_dull .ObjectPunctuation {
+ font-weight: bold;
+ color: #345741;
+}
+pre.brilliance_dull .LMetaEndDocument {
+ background-color: #CCCCCC;
+ color: #000000;
+}
+pre.brilliance_dull .LibraryConstant {
+ color: #57A5A3;
+}
+pre.brilliance_dull .LibraryVariable {
+ background-color: #182D2C;
+ color: #57A5A3;
+}
+pre.brilliance_dull .MetaGroupBraces6 {
+ background-color: #1C1C1C;
+}
+pre.brilliance_dull .MetaSourceEmbedded {
+ background-color: #000000;
+ color: #666666;
+}
+pre.brilliance_dull .MetaBracePipe {
+ background-color: #1C1C1C;
+ color: #4C4C4C;
+}
+pre.brilliance_dull .KeywordOperatorArithmetic {
+ color: #5B6190;
+}
+pre.brilliance_dull .LMetaLabelReference {
+ background-color: #3C3C3C;
+}
+pre.brilliance_dull .MetaGroupBraces7 {
+ background-color: #1F1F1F;
+}
+pre.brilliance_dull .LVariableParameterCite {
+ background-color: #28151F;
+ color: #E7D4DF;
+}
+pre.brilliance_dull .TagBlockForm {
+ background-color: #10181F;
+}
+pre.brilliance_dull .MRawBlock {
+ background-color: #000000;
+ color: #999999;
+}
+pre.brilliance_dull .KeywordControl {
+ color: #A358A5;
+}
+pre.brilliance_dull .MetaGroupBraces8 {
+ background-color: #212121;
+}
+pre.brilliance_dull .MetaDelimiter {
+ font-weight: bold;
+ background-color: #111111;
+ color: #FFFFFF;
+}
+pre.brilliance_dull .LMetaEnvironmentList2 {
+ background-color: #000000;
+ color: #515151;
+}
+pre.brilliance_dull .LMetaFootnote {
+ background-color: #18172D;
+ color: #7A7BB0;
+}
+pre.brilliance_dull .RegexKeyword {
+}
+pre.brilliance_dull .StringRegexGroup1 {
+ background-color: #232D18;
+}
+pre.brilliance_dull .TagName {
+ color: #EFEFEF;
+}
+pre.brilliance_dull .VariableLanguageThisJsPrototype {
+ color: #666666;
+}
+pre.brilliance_dull .MetaGroupBraces9 {
+ background-color: #242424;
+}
+pre.brilliance_dull .BoldStringQuotes {
+ font-weight: bold;
+}
+pre.brilliance_dull .MetaDelimiterObjectJs {
+ background-color: #000000;
+}
+pre.brilliance_dull .MetaDelimiterStatementJs {
+ background-color: #000000;
+}
+pre.brilliance_dull .Invalid {
+ font-weight: bold;
+ background-color: #A5585A;
+ color: #201111;
+}
+pre.brilliance_dull .LMetaEnvironmentList3 {
+ background-color: #000000;
+ color: #515151;
+}
+pre.brilliance_dull .MQuoteBlock {
+ background-color: #616161;
+}
+pre.brilliance_dull .ClassMethod {
+ color: #A45880;
+}
+pre.brilliance_dull .Keyword {
+}
+pre.brilliance_dull .AttributeMatch {
+ background-color: #18172D;
+ color: #5859A5;
+}
+pre.brilliance_dull .StringRegexGroup2 {
+ background-color: #232D18;
+ color: #EAEAEA;
+}
+pre.brilliance_dull .DDiffAdd {
+ background-color: #14281D;
+ color: #82BB9C;
+}
+pre.brilliance_dull .MetaBraceErbReturnValue {
+ background-color: #182D25;
+ color: #58A58A;
+}
+pre.brilliance_dull .LMetaEnvironmentList4 {
+ color: #515151;
+}
+pre.brilliance_dull .FunctionDeclarationParametersPunctuation {
+ color: #512C2C;
+}
+pre.brilliance_dull .TagAttribute {
+ color: #F4F4F4;
+}
+pre.brilliance_dull .MReference {
+ color: #5780A5;
+}
+pre.brilliance_dull .StringRegexGroup3 {
+ background-color: #232D18;
+ color: #EAEAEA;
+}
+pre.brilliance_dull .GlobalVariable {
+ background-color: #18232D;
+ color: #2C5251;
+}
+pre.brilliance_dull .LMetaEnvironmentList5 {
+ color: #515151;
+}
+pre.brilliance_dull .EntityNamePreprocessor {
+}
+pre.brilliance_dull .FunctionDeclarationParameters {
+ color: #BABBD9;
+}
+pre.brilliance_dull .StringRegexGroup4 {
+ background-color: #232D18;
+ color: #EAEAEA;
+}
+pre.brilliance_dull .LSupportFunctionSection {
+ color: #D8D8D8;
+}
+pre.brilliance_dull .LMetaEnvironmentList6 {
+ color: #515151;
+}
+pre.brilliance_dull .Id {
+ color: #A45880;
+}
+pre.brilliance_dull .CurlyPunctuation {
+ font-weight: bold;
+ color: #FFFFFF;
+}
+pre.brilliance_dull .SubtlegradientCom {
+ background-color: #FFFFFF;
+ text-decoration: underline;
+ color: #555555;
+}
+pre.brilliance_dull .StringPunctuation {
+}
+pre.brilliance_dull .LSupportFunction {
+ color: #A358A5;
+}
+pre.brilliance_dull .TextSubversionCommit {
+ background-color: #FFFFFF;
+ color: #000000;
+}
+pre.brilliance_dull .SourceEmbededSource {
+ background-color: #131313;
+}
+pre.brilliance_dull .LVariableParameterLabel {
+ color: #E5E5E5;
+}
+pre.brilliance_dull .TagOther {
+ background-color: #2C1818;
+ color: #A5585A;
+}
+pre.brilliance_dull .ClassVariable {
+ background-color: #30305A;
+ color: #5780A5;
+}
+pre.brilliance_dull .MetaGroupAssertionRegexp {
+ background-color: #2F465A;
+}
+pre.brilliance_dull .KeywordOperatorLogical {
+ background-color: #1C1C36;
+ color: #7C85B8;
+}
+pre.brilliance_dull .DDiffChanged {
+ color: #C2C28F;
+}
+pre.brilliance_dull .HtmlComment {
+ font-style: italic;
+}
+pre.brilliance_dull .StringInterpolated {
+ background-color: #1A1A1A;
+ color: #D1D1AB;
+}
+pre.brilliance_dull .BuiltInConstant1 {
+ background-color: #182D18;
+ color: #5AA557;
+}
+pre.brilliance_dull .InstanceConstructor {
+ background-color: #2D1823;
+}
+pre.brilliance_dull .Instance {
+ color: #A5585A;
+}
+pre.brilliance_dull .MetaPropertyList {
+ font-weight: bold;
+ color: #333333;
+}
+pre.brilliance_dull .FunctionDeclarationName {
+}
+pre.brilliance_dull .Latex {
+}
+pre.brilliance_dull .LMarkupRaw {
+ background-color: #000000;
+}
+pre.brilliance_dull .StringPunctuationIi {
+ color: #ACAB6F;
+}
+pre.brilliance_dull .LKeywordControlRef {
+ background-color: #170C0C;
+ color: #A5585A;
+}
+pre.brilliance_dull .Css {
+}
+pre.brilliance_dull .ClassName {
+ color: #A5585A;
+}
+pre.brilliance_dull .MetaPropertyName {
+ color: #999999;
+}
+pre.brilliance_dull .MetaHeadersBlogKeywordOtherBlog {
+ background-color: #213F3E;
+ color: #182A29;
+}
+pre.brilliance_dull .PseudoClass {
+ color: #7D58A4;
+}
+pre.brilliance_dull {
+ background-color: #000000;
+ color: #CCCCCC;
+}
+pre.brilliance_dull .TagBlockHead {
+ background-color: #121212;
+}
+pre.brilliance_dull .StringRegexArbitraryRepitition {
+ background-color: #232D18;
+ color: #57A5A3;
+}
+pre.brilliance_dull .LKeywordOperatorDelimiter {
+ background-color: #000000;
+}
+pre.brilliance_dull .MReferenceName {
+ background-color: #18232D;
+ color: #57A5A3;
+}
+pre.brilliance_dull .TextSubversionCommitMetaScopeChangedFiles {
+ background-color: #000000;
+ color: #FFFFFF;
+}
+pre.brilliance_dull .VariablePunctuation {
+ color: #666666;
+}
+pre.brilliance_dull .MUnderlineLink {
+ text-decoration: underline;
+ color: #57A5A3;
+}
+pre.brilliance_dull .Selector {
+ background-color: #000000;
+ color: #666666;
+}
+pre.brilliance_dull .TagDoctype {
+ background-color: #333333;
+ color: #CCCCCC;
+}
+pre.brilliance_dull .Class {
+ background-color: #5A3031;
+ color: #512C2C;
+}
+pre.brilliance_dull .BuiltInConstant {
+ color: #5AA557;
+}
+pre.brilliance_dull .MBold {
+ font-weight: bold;
+}
+pre.brilliance_dull .MHeading {
+ background-color: #262626;
+ color: #666666;
+}
+pre.brilliance_dull .ConstantVariable {
+ color: #57A5A3;
+}
+pre.brilliance_dull .LKeywordControlCite {
+ background-color: #170C12;
+ color: #A45880;
+}
+pre.brilliance_dull .XmlTag {
+ color: #666666;
+}
+pre.brilliance_dull .MHr {
+ background-color: #FFFFFF;
+ color: #000000;
+}
+pre.brilliance_dull .FunctionPunctuation {
+ font-weight: bold;
+ color: #A358A5;
+}
+pre.brilliance_dull .Variable {
+ color: #789BB6;
+}
+pre.brilliance_dull .FunctionCallArgumentsPunctuation {
+ color: #A358A5;
+}
+pre.brilliance_dull .Syntax {
+ color: #333333;
+}
+pre.brilliance_dull .MetaPropertyValue {
+ background-color: #0D0D0D;
+ color: #999999;
+}
+pre.brilliance_dull .KeywordOperator {
+ color: #5B6190;
+}
+pre.brilliance_dull .StringUnquoted {
+ color: #D1BDAB;
+}
+pre.brilliance_dull .LConstantLanguageGeneral {
+}
+pre.brilliance_dull .TextStringSource {
+ color: #999999;
+}
+pre.brilliance_dull .LVariableParameterLabelReference {
+ background-color: #281516;
+ color: #D1BDAB;
+}
+pre.brilliance_dull .FunctionDeclarationParameters1 {
+ color: #BABBD9;
+}
+pre.brilliance_dull .Source {
+ background-color: #000000;
+}
+pre.brilliance_dull .LibraryFunctionCall {
+ color: #9D80BA;
+}
+pre.brilliance_dull .MetaHeadersBlogStringUnquotedBlog {
+ background-color: #4A4A36;
+}
+pre.brilliance_dull .StringRegexCharacterClass {
+ background-color: #232D18;
+ color: #80A557;
+}
+pre.brilliance_dull .LibraryFunctionName {
+ background-color: #332D39;
+ color: #5E5368;
+}
+pre.brilliance_dull .MetaBlockContentSlate {
+ color: #CCCCCC;
+}
+pre.brilliance_dull .TextStringSourceStringSource {
+}
+pre.brilliance_dull .MetaBraceErb1 {
+ background-color: #000000;
+}
+pre.brilliance_dull .String {
+ color: #D2D191;
+}