middleman-jammit 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
4
+ Gemfile.lock
5
+ .DS_Store
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm ruby-1.9.2-p180@middleman-jammit --create
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in middleman-jammit.gemspec
4
+ gemspec
@@ -0,0 +1,41 @@
1
+ = middleman-jammit
2
+
3
+ Use Jammit in Middleman - merge multiple javascripts/stylesheets into one
4
+
5
+ == Usage
6
+
7
+ 1. Install
8
+
9
+ gem install middleman-jammit
10
+
11
+ 2. Create your project
12
+
13
+ mm-init your-middleman-project
14
+
15
+ 3. Create config/assets.yml and activate feature in config.rb
16
+
17
+ cd your-middleman-project; mm-jammit-install
18
+
19
+ Run with <tt>--help</tt> for options.
20
+
21
+ 4. Add this to your views/layout.haml:
22
+
23
+ = include_stylesheets :all
24
+ = include_javascripts :all
25
+
26
+ 5. Run server/builder
27
+
28
+ mm-server
29
+
30
+ individual files are used (/javascripts/site.js, /stylesheets/site.css ...)
31
+
32
+ mm-build
33
+
34
+ packages are used (/assets/all.js and /assets/all.css)
35
+
36
+ 5. Enjoy!
37
+
38
+ == Links
39
+
40
+ * https://github.com/tdreyno/middleman
41
+ * http://documentcloud.github.com/jammit/
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,12 @@
1
+ package_path: <%= options[:package_path] %>
2
+ gzip_assets: off
3
+ javascript_compressor: yui
4
+
5
+ javascripts:
6
+ all:
7
+ - <%= options[:build_dir] -%>/<%= options[:js_dir] -%>/jquery-1.6.js
8
+ - <%= options[:build_dir] -%>/<%= options[:js_dir] -%>/site.js
9
+
10
+ stylesheets:
11
+ all:
12
+ - <%= options[:build_dir] -%>/<%= options[:css_dir] -%>/site.css
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+ require "middleman"
3
+ require "thor"
4
+ require "thor/group"
5
+
6
+ module Middleman::Jammit
7
+ class Generator < Thor::Group
8
+ include Thor::Actions
9
+
10
+ class_option :package_path, :default => "assets", :desc => 'The path to the asset files'
11
+
12
+ class_option :build_dir, :default => Middleman::Server.build_dir, :desc => 'Your build dir'
13
+ class_option :css_dir, :default => Middleman::Server.css_dir, :desc => 'The path to the css files'
14
+ class_option :js_dir, :default => Middleman::Server.js_dir, :desc => 'The path to the javascript files'
15
+
16
+
17
+ def self.source_root
18
+ File.join(File.dirname(__FILE__), ".." )
19
+ end
20
+
21
+ def create_jammit_config
22
+ config_dir = File.join(Middleman::Server.root, "config")
23
+ empty_directory config_dir
24
+ template "assets.yml.tt", File.join(config_dir, "assets.yml")
25
+ prepend_file File.join(Middleman::Server.root, "config.rb") do
26
+ ['require "middleman-jammit"', 'activate :jammit', "", ""].join("\n")
27
+ end
28
+ end
29
+
30
+ end
31
+ end
32
+
33
+ Middleman::Jammit::Generator.start
@@ -0,0 +1,90 @@
1
+ require "jammit"
2
+ require "middleman/builder"
3
+
4
+ module Middleman
5
+ module Features
6
+ module Jammit
7
+
8
+ class << self
9
+ def registered(app)
10
+ full_build_dir = File.join(Middleman::Server.root, Middleman::Server.build_dir)
11
+
12
+ FileUtils.mkdir_p File.join(full_build_dir, Middleman::Server.js_dir)
13
+ FileUtils.mkdir_p File.join(full_build_dir, Middleman::Server.css_dir)
14
+
15
+ jammit_config_file = File.join(Middleman::Server.root, 'config', 'assets.yml')
16
+ raise ConfigurationNotFound, "could not find \"#{jammit_config_file}\" " unless File.exists?(jammit_config_file)
17
+ jammit_conf = YAML.load(ERB.new(File.read(jammit_config_file)).result)
18
+
19
+ touch_asset_files jammit_conf['javascripts']
20
+ touch_asset_files jammit_conf['stylesheets']
21
+
22
+ ::Jammit.load_configuration(jammit_config_file)
23
+
24
+ Middleman::Builder.after_run "jammit" do
25
+ full_package_path = File.join(full_build_dir, ::Jammit.package_path)
26
+ ::Jammit.packager.precache_all(full_package_path, Middleman::Server.root)
27
+ say_status "Jammit", "build/assets"
28
+ end
29
+
30
+ app.helpers Jammit::Helpers
31
+
32
+ end
33
+ alias :included :registered
34
+
35
+ protected
36
+ def touch_asset_files(asset_files)
37
+ if asset_files.present?
38
+ asset_files.each do |name, files|
39
+ files.each do |f|
40
+ next if f["*"].present?
41
+ FileUtils.touch File.join(Middleman::Server.root, f)
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ end
48
+
49
+ module Helpers
50
+
51
+ def include_javascripts(*packages)
52
+ generate_asset_tags(packages, :js)
53
+ end
54
+
55
+ def include_stylesheets(*packages)
56
+ generate_asset_tags(packages, :css)
57
+ end
58
+
59
+ protected
60
+ def generate_asset_tags(packages, type)
61
+ packages.map do |pack|
62
+ if ENV['MM_ENV'] == "build"
63
+ url = Middleman::Assets.get_url(::Jammit.asset_url(pack, type.to_sym))
64
+ generate_tag(type, url)
65
+ else
66
+ ::Jammit.packager.individual_urls(pack.to_sym, type.to_sym).map do |file|
67
+ url = file.gsub(%r(^.*build/), '/')
68
+ generate_tag(type, url)
69
+ end
70
+ end
71
+ end.join("\n")
72
+ end
73
+
74
+ def generate_tag(type, url)
75
+ self.method("#{type.to_s}_tag").call(url)
76
+ end
77
+
78
+ def js_tag(url)
79
+ '<script src="%s"></script>' % url
80
+ end
81
+
82
+ def css_tag(url)
83
+ '<link rel="stylesheet" href="%s" />' % url
84
+ end
85
+
86
+ end
87
+
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,5 @@
1
+ module Middleman
2
+ module Jammit
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "middleman-jammit/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "middleman-jammit"
7
+ s.version = Middleman::Jammit::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Matthias Döring"]
10
+ s.email = ["matt@foryourcontent.de"]
11
+ s.homepage = "http://rubygems.org/gems/middleman-jammit"
12
+ s.summary = %q{Use Jammit in Middleman}
13
+ s.description = %q{Use Jammit in Middleman - merge multiple javascripts/stylesheets into one}
14
+
15
+ s.rubyforge_project = "middleman-jammit"
16
+
17
+ s.add_dependency "jammit", "~> 0.6"
18
+ s.add_dependency "middleman", "~> 1.2.0"
19
+
20
+ s.files = `git ls-files`.split("\n")
21
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
22
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
+ s.require_paths = ["lib"]
24
+ end
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: middleman-jammit
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - "Matthias D\xC3\xB6ring"
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-05-14 00:00:00 +02:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: jammit
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: "0.6"
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: middleman
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: 1.2.0
36
+ type: :runtime
37
+ version_requirements: *id002
38
+ description: Use Jammit in Middleman - merge multiple javascripts/stylesheets into one
39
+ email:
40
+ - matt@foryourcontent.de
41
+ executables:
42
+ - mm-jammit-install
43
+ extensions: []
44
+
45
+ extra_rdoc_files: []
46
+
47
+ files:
48
+ - .gitignore
49
+ - .rvmrc
50
+ - Gemfile
51
+ - README.rdoc
52
+ - Rakefile
53
+ - assets.yml.tt
54
+ - bin/mm-jammit-install
55
+ - lib/middleman-jammit.rb
56
+ - lib/middleman-jammit/version.rb
57
+ - middleman-jammit.gemspec
58
+ has_rdoc: true
59
+ homepage: http://rubygems.org/gems/middleman-jammit
60
+ licenses: []
61
+
62
+ post_install_message:
63
+ rdoc_options: []
64
+
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: "0"
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: "0"
79
+ requirements: []
80
+
81
+ rubyforge_project: middleman-jammit
82
+ rubygems_version: 1.6.2
83
+ signing_key:
84
+ specification_version: 3
85
+ summary: Use Jammit in Middleman
86
+ test_files: []
87
+