rack-assets 0.9.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.
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ begin
2
+ require 'jeweler'
3
+ Jeweler::Tasks.new do |gemspec|
4
+ gemspec.name = "rack-assets"
5
+ gemspec.summary = "Library to manage css and js assets in any rack-based framework"
6
+ gemspec.email = "ravwar@gmail.com"
7
+ gemspec.homepage = "http://github.com/brainopia/rack-assets"
8
+ gemspec.authors = ["Ravil Bayramgalin"]
9
+ end
10
+ Jeweler::GemcutterTasks.new
11
+ rescue LoadError
12
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
13
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.9.1
data/lib/assets.rb ADDED
@@ -0,0 +1,22 @@
1
+ require 'yaml'
2
+ require 'assets/base'
3
+ require 'assets/javascripts'
4
+ require 'assets/stylesheets'
5
+
6
+ module Assets
7
+ def self.config
8
+ @config or raise 'You need to define config for assets'
9
+ end
10
+
11
+ def self.config=(file)
12
+ @config = YAML.load_file file
13
+ end
14
+
15
+ def self.js
16
+ Javascript
17
+ end
18
+
19
+ def self.css
20
+ Stylesheet
21
+ end
22
+ end
@@ -0,0 +1,62 @@
1
+ module Base
2
+ if Object.const_defined?('RACK_ENV') && RACK_ENV == 'production'
3
+ def bundle
4
+ include_links + tag_for_file('application_compressed')
5
+ end
6
+ else
7
+ def bundle
8
+ include_links + include_files
9
+ end
10
+ end
11
+
12
+ def compress
13
+ raise 'You need java to compress assets' if `which java`.empty?
14
+
15
+ compressor = "#{File.dirname(__FILE__)}/compressor.jar"
16
+ file = system_path('application_compressed')
17
+
18
+ File.open file, 'w+' do |it|
19
+ it.puts files.map {|it| File.read system_path(it) }.join("\n")
20
+ end
21
+
22
+ `java -jar #{compressor} --charset utf-8 -o #{file} #{file}`
23
+ end
24
+
25
+ protected
26
+
27
+ def sources
28
+ raise 'Abstract method'
29
+ end
30
+
31
+ def tag(url)
32
+ raise 'Abstract method'
33
+ end
34
+
35
+ def url_path(asset_name)
36
+ raise 'Abstract method'
37
+ end
38
+
39
+ def links
40
+ sources.select {|it| it[/^http/] }
41
+ end
42
+
43
+ def include_links
44
+ links.map {|it| tag it }.join
45
+ end
46
+
47
+ def files
48
+ sources - links
49
+ end
50
+
51
+ def tag_for_file(asset_name)
52
+ tag url_path(asset_name)
53
+ end
54
+
55
+ def include_files
56
+ files.map {|it| tag_for_file it }.join
57
+ end
58
+
59
+ def system_path(asset_name)
60
+ 'public' + url_path(asset_name)
61
+ end
62
+ end
Binary file
@@ -0,0 +1,15 @@
1
+ module Javascript
2
+ extend Base
3
+
4
+ def self.sources
5
+ Assets.config['js']
6
+ end
7
+
8
+ def self.tag(url)
9
+ "<script src='#{url}' type='text/javascript'></script>"
10
+ end
11
+
12
+ def self.url_path(asset_name)
13
+ "/javascripts/#{asset_name}.js"
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Stylesheet
2
+ extend Base
3
+
4
+ def self.sources
5
+ Assets.config['css']
6
+ end
7
+
8
+ def self.tag(url)
9
+ "<link href='#{url}' rel='stylesheet' type='text/css' />"
10
+ end
11
+
12
+ def self.url_path(asset_name)
13
+ "/stylesheets/#{asset_name}.css"
14
+ end
15
+ end
@@ -0,0 +1,39 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{rack-assets}
8
+ s.version = "0.9.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Ravil Bayramgalin"]
12
+ s.date = %q{2009-09-13}
13
+ s.email = %q{ravwar@gmail.com}
14
+ s.files = [
15
+ "Rakefile",
16
+ "VERSION",
17
+ "lib/assets.rb",
18
+ "lib/assets/base.rb",
19
+ "lib/assets/compressor.jar",
20
+ "lib/assets/javascript.rb",
21
+ "lib/assets/stylesheet.rb",
22
+ "rack-assets.gemspec"
23
+ ]
24
+ s.homepage = %q{http://github.com/brainopia/rack-assets}
25
+ s.rdoc_options = ["--charset=UTF-8"]
26
+ s.require_paths = ["lib"]
27
+ s.rubygems_version = %q{1.3.5}
28
+ s.summary = %q{Library to manage css and js assets in any rack-based framework}
29
+
30
+ if s.respond_to? :specification_version then
31
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
32
+ s.specification_version = 3
33
+
34
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
35
+ else
36
+ end
37
+ else
38
+ end
39
+ end
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rack-assets
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.1
5
+ platform: ruby
6
+ authors:
7
+ - Ravil Bayramgalin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-09-13 00:00:00 +04:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email: ravwar@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - Rakefile
26
+ - VERSION
27
+ - lib/assets.rb
28
+ - lib/assets/base.rb
29
+ - lib/assets/compressor.jar
30
+ - lib/assets/javascript.rb
31
+ - lib/assets/stylesheet.rb
32
+ - rack-assets.gemspec
33
+ has_rdoc: true
34
+ homepage: http://github.com/brainopia/rack-assets
35
+ licenses: []
36
+
37
+ post_install_message:
38
+ rdoc_options:
39
+ - --charset=UTF-8
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: "0"
47
+ version:
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: "0"
53
+ version:
54
+ requirements: []
55
+
56
+ rubyforge_project:
57
+ rubygems_version: 1.3.5
58
+ signing_key:
59
+ specification_version: 3
60
+ summary: Library to manage css and js assets in any rack-based framework
61
+ test_files: []
62
+