mirror of
https://github.com/middleman/middleman.git
synced 2022-11-09 12:20:27 -05:00
more tweaks, rdoc
This commit is contained in:
parent
7426243824
commit
d40111d67e
9 changed files with 120 additions and 21 deletions
17
Rakefile
17
Rakefile
|
@ -47,6 +47,8 @@ task :spec => :check_dependencies
|
||||||
task :default => :spec
|
task :default => :spec
|
||||||
|
|
||||||
require 'rake/rdoctask'
|
require 'rake/rdoctask'
|
||||||
|
require 'sdoc'
|
||||||
|
|
||||||
Rake::RDocTask.new do |rdoc|
|
Rake::RDocTask.new do |rdoc|
|
||||||
if File.exist?('VERSION')
|
if File.exist?('VERSION')
|
||||||
version = File.read('VERSION')
|
version = File.read('VERSION')
|
||||||
|
@ -54,8 +56,23 @@ Rake::RDocTask.new do |rdoc|
|
||||||
version = ""
|
version = ""
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# rdoc.template = 'direct'
|
||||||
|
|
||||||
rdoc.rdoc_dir = 'rdoc'
|
rdoc.rdoc_dir = 'rdoc'
|
||||||
rdoc.title = "middleman #{version}"
|
rdoc.title = "middleman #{version}"
|
||||||
rdoc.rdoc_files.include('README*')
|
rdoc.rdoc_files.include('README*')
|
||||||
rdoc.rdoc_files.include('lib/**/*.rb')
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
desc "Build and publish documentation using GitHub Pages."
|
||||||
|
task :pages do
|
||||||
|
if !`git status`.include?('nothing to commit')
|
||||||
|
abort "dirty index - not publishing!"
|
||||||
|
end
|
||||||
|
|
||||||
|
Rake::Task[:rerdoc].invoke
|
||||||
|
`git checkout gh-pages`
|
||||||
|
`ls -1 | grep -v rdoc | xargs rm -rf; mv rdoc/* .; rm -rf rdoc`
|
||||||
|
`git commit -a -m "update docs"; git push origin gh-pages`
|
||||||
|
`git checkout master`
|
||||||
|
end
|
20
bin/mm-build
20
bin/mm-build
|
@ -54,10 +54,30 @@ module Generators
|
||||||
end
|
end
|
||||||
|
|
||||||
# Monkey-patch to use a dynamic renderer
|
# Monkey-patch to use a dynamic renderer
|
||||||
|
class Templater::Actions::File
|
||||||
|
def identical?
|
||||||
|
if exists?
|
||||||
|
return true if File.mtime(source) < File.mtime(destination)
|
||||||
|
::FileUtils.identical?(source, destination)
|
||||||
|
else
|
||||||
|
false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class Templater::Actions::Template
|
class Templater::Actions::Template
|
||||||
def render
|
def render
|
||||||
::Middleman::Builder.render_file(source, destination)
|
::Middleman::Builder.render_file(source, destination)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def identical?
|
||||||
|
if ::File.exists?(destination)
|
||||||
|
return true if File.mtime(source) < File.mtime(destination)
|
||||||
|
::File.read(destination) == render
|
||||||
|
else
|
||||||
|
false
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Generators.run_cli(Dir.pwd, 'mm-build', 1, %w(build --force).concat(ARGV))
|
Generators.run_cli(Dir.pwd, 'mm-build', 1, %w(build --force).concat(ARGV))
|
14
bin/mm-init
14
bin/mm-init
|
@ -9,8 +9,9 @@ module Generators
|
||||||
desc "Creates a new staticmatic scaffold."
|
desc "Creates a new staticmatic scaffold."
|
||||||
first_argument :location, :required => true, :desc => "Project location"
|
first_argument :location, :required => true, :desc => "Project location"
|
||||||
|
|
||||||
# css_dir
|
option :css_dir, :desc => 'The path to the css files'
|
||||||
# images_dir
|
option :js_dir, :desc => 'The path to the javascript files'
|
||||||
|
option :images_dir, :desc => 'The path to the image files'
|
||||||
|
|
||||||
def destination_root
|
def destination_root
|
||||||
File.expand_path(location)
|
File.expand_path(location)
|
||||||
|
@ -20,12 +21,13 @@ module Generators
|
||||||
File.join(File.dirname(__FILE__), '..', 'lib', 'middleman', 'template')
|
File.join(File.dirname(__FILE__), '..', 'lib', 'middleman', 'template')
|
||||||
end
|
end
|
||||||
|
|
||||||
file :init, "init.rb"
|
template :init, "init.rb"
|
||||||
glob! :views
|
glob! :views
|
||||||
glob! :public
|
glob! :public
|
||||||
empty_directory :stylesheets, "public/stylesheets"
|
|
||||||
empty_directory :javascripts, "public/javascripts"
|
empty_directory :stylesheets, File.join("public", css_dir)
|
||||||
empty_directory :images, "public/images"
|
empty_directory :javascripts, File.join("public", js_dir)
|
||||||
|
empty_directory :images, File.join("public", images_dir)
|
||||||
end
|
end
|
||||||
|
|
||||||
add :setup, NewSite
|
add :setup, NewSite
|
||||||
|
|
|
@ -15,8 +15,8 @@ module Middleman
|
||||||
set :app_file, __FILE__
|
set :app_file, __FILE__
|
||||||
set :root, Dir.pwd
|
set :root, Dir.pwd
|
||||||
set :environment, ENV['MM_ENV'] || :development
|
set :environment, ENV['MM_ENV'] || :development
|
||||||
set :supported_formats, []
|
set :supported_formats, ["erb"]
|
||||||
set :index_file, 'index.html'
|
set :index_file, "index.html"
|
||||||
set :js_dir, "javascripts"
|
set :js_dir, "javascripts"
|
||||||
set :css_dir, "stylesheets"
|
set :css_dir, "stylesheets"
|
||||||
set :images_dir, "images"
|
set :images_dir, "images"
|
||||||
|
@ -36,6 +36,7 @@ module Middleman
|
||||||
disable :relative_assets
|
disable :relative_assets
|
||||||
disable :markaby
|
disable :markaby
|
||||||
disable :maruku
|
disable :maruku
|
||||||
|
disable :smush_pngs
|
||||||
|
|
||||||
# Default build features
|
# Default build features
|
||||||
configure :build do
|
configure :build do
|
||||||
|
|
|
@ -1,17 +1,14 @@
|
||||||
class Middleman::Base
|
class Middleman::Base
|
||||||
helpers do
|
|
||||||
alias_method :pre_cache_buster_asset_url, :asset_url
|
alias_method :pre_cache_buster_asset_url, :asset_url
|
||||||
|
helpers do
|
||||||
def asset_url(path, prefix="")
|
def asset_url(path, prefix="")
|
||||||
path = pre_cache_buster_asset_url(path, prefix)
|
http_path = pre_cache_buster_asset_url(path, prefix)
|
||||||
if path.include?("://")
|
if http_path.include?("://") || !%w(.css .png .jpg .js .gif).include?(File.extname(http_path))
|
||||||
path
|
http_path
|
||||||
else
|
else
|
||||||
real_path = File.join(options.public, path)
|
real_path = File.join(self.class.environment == "build" ? options.build_dir : options.public, prefix, path)
|
||||||
if File.readable?(real_path)
|
http_path << "?" + File.mtime(real_path).strftime("%s") if File.readable?(real_path)
|
||||||
path << "?" + File.mtime(real_path).strftime("%s")
|
http_path
|
||||||
else
|
|
||||||
$stderr.puts "WARNING: '#{File.basename(path)}' was not found (or cannot be read) in #{File.dirname(real_path)}"
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -72,7 +72,7 @@ module Middleman
|
||||||
static_version = options.public + request.path_info
|
static_version = options.public + request.path_info
|
||||||
send_file(static_version) if File.exists? static_version
|
send_file(static_version) if File.exists? static_version
|
||||||
|
|
||||||
location_of_sass_file = options.environment == "build" ? "build" : "public"
|
location_of_sass_file = options.environment == "build" ? File.join(options.build_dir, options.css_dir) : "public"
|
||||||
css_filename = File.join(Dir.pwd, location_of_sass_file) + request.path_info
|
css_filename = File.join(Dir.pwd, location_of_sass_file) + request.path_info
|
||||||
sass(path.to_sym, Compass.sass_engine_options.merge({ :css_filename => css_filename }))
|
sass(path.to_sym, Compass.sass_engine_options.merge({ :css_filename => css_filename }))
|
||||||
rescue Exception => e
|
rescue Exception => e
|
||||||
|
|
58
lib/middleman/features/smush_pngs.rb
Normal file
58
lib/middleman/features/smush_pngs.rb
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
require 'json'
|
||||||
|
require 'open-uri'
|
||||||
|
|
||||||
|
begin
|
||||||
|
require 'httpclient'
|
||||||
|
rescue LoadError
|
||||||
|
puts "httpclient not available. Install it with: gem install httpclient"
|
||||||
|
end
|
||||||
|
|
||||||
|
module Middleman
|
||||||
|
module SmushPngs
|
||||||
|
def self.included(base)
|
||||||
|
base.supported_formats << "png"
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_path(file)
|
||||||
|
if File.extname(file) == ".png"
|
||||||
|
file = File.join(options.public, file)
|
||||||
|
optimized = optimized_image_data_for(file)
|
||||||
|
|
||||||
|
begin
|
||||||
|
raise "Error: got larger" if size(file) < optimized.size
|
||||||
|
raise "Error: empty file downloaded" if optimized.size < 20
|
||||||
|
|
||||||
|
optimized
|
||||||
|
rescue
|
||||||
|
File.read(file)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
super
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
def size(file)
|
||||||
|
File.exist?(file) ? File.size(file) : 0
|
||||||
|
end
|
||||||
|
|
||||||
|
def optimized_image_data_for(file)
|
||||||
|
# I leave these urls here, just in case it stops working again...
|
||||||
|
# url = "http://smush.it/ws.php" # original, redirects to somewhere else..
|
||||||
|
url = 'http://ws1.adq.ac4.yahoo.com/ysmush.it/ws.php'
|
||||||
|
# url = "http://developer.yahoo.com/yslow/smushit/ws.php" # official but does not work
|
||||||
|
# url = "http://smushit.com/ysmush.it/ws.php" # used at the new page but does not hande uploads
|
||||||
|
# url = "http://smushit.eperf.vip.ac4.yahoo.com/ysmush.it/ws.php" # used at the new page but does not hande uploads
|
||||||
|
response = HTTPClient.post url, { 'files[]' => File.new(file) }
|
||||||
|
response = JSON.parse(response.body.content)
|
||||||
|
raise "smush.it: #{response['error']}" if response['error']
|
||||||
|
image_url = response['dest']
|
||||||
|
raise "no dest path found" unless image_url
|
||||||
|
open(image_url) { |source| source.read() }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class Base
|
||||||
|
include Middleman::SmushPngs
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,3 +1,7 @@
|
||||||
|
<% if css_dir %>set :css_dir, "<%= css_dir -%>"<% end %>
|
||||||
|
<% if js_dir %>set :js_dir, "<%= js_dir -%>"<% end %>
|
||||||
|
<% if images_dir %>set :images_dir, "<%= images_dir -%>"<% end %>
|
||||||
|
|
||||||
# Helpers
|
# Helpers
|
||||||
helpers do
|
helpers do
|
||||||
end
|
end
|
Loading…
Reference in a new issue