Skip to content

Commit e82836a

Browse files
committed
First version -- work in progress
1 parent 8ab3711 commit e82836a

File tree

8 files changed

+122
-0
lines changed

8 files changed

+122
-0
lines changed

Gemfile

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
source :rubygems
2+
3+
gemspec

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# jquery-ui-rails

Rakefile

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
require 'rubygems'
2+
require 'execjs'
3+
4+
DEPENDENCY_HASH = ExecJS.eval(File.read('dependencies.js'))
5+
VERSION = File.read("jquery-ui/version.txt").strip
6+
LANGUAGE_REGEX = /-[-a-zA-Z]+(?=\.js\z)/
7+
8+
def get_js_dependencies(basename)
9+
if basename.match LANGUAGE_REGEX
10+
# Depend on main module for i18n files
11+
[basename.sub(LANGUAGE_REGEX, '')]
12+
else
13+
DEPENDENCY_HASH[basename.sub(/\Ajquery\./, '')]
14+
.reject { |dep| dep == 'theme' } # cannot use 'theme' (CSS) pseudo-dep
15+
.map { |dep| "jquery.#{dep}" }
16+
end
17+
end
18+
19+
desc "Generate the JavaScript assets"
20+
task :javascripts do
21+
target_dir = "vendor/assets/javascripts"
22+
FileUtils.mkdir_p target_dir
23+
Dir.glob("jquery-ui/ui/**/*.js").each do |path|
24+
basename = File.basename(path)
25+
dependencies = get_js_dependencies(basename)
26+
fail "Missing dependency info for #{basename}" if dependencies.nil?
27+
File.open("#{target_dir}/#{basename}", "w") do |out|
28+
# puts "#{basename} => #{dependencies.inspect}"
29+
out.write("//= require jquery\n")
30+
dependencies.each do |dep|
31+
fail "#{basename}: missing #{dep}" unless File.exist? "jquery-ui/ui/#{dep}"
32+
out.write("//= require #{dep.sub /\.js\z/, ''}\n")
33+
end
34+
out.write("\n") unless dependencies.empty?
35+
source_code = File.read(path).gsub('@VERSION', VERSION)
36+
out.write(source_code)
37+
end
38+
end
39+
File.open("#{target_dir}/jquery-ui.js", "w") do |out|
40+
Dir.glob("jquery-ui/ui/*.js").sort.each do |path|
41+
out.write("//= require #{File.basename path}\n")
42+
end
43+
end
44+
end
45+
46+
desc "Generate the CSS assets"
47+
task :stylesheets do
48+
target_dir = "vendor/assets/stylesheets"
49+
FileUtils.mkdir_p target_dir
50+
Dir.glob("jquery-ui/themes/base/*.css").each do |path|
51+
basename = File.basename(path)
52+
File.open("#{target_dir}/#{basename}", "w") do |out|
53+
source_code = File.read(path)
54+
.gsub('@VERSION', VERSION)
55+
.gsub(/^@import (.*)$/) { |s|
56+
m = s.match(/^@import (url\()?"(?<url>[-_.a-zA-Z]+)"\)?;/) \
57+
or fail "Cannot parse import: #{s}"
58+
"/*\n *= require #{m['url']}\n */"
59+
}
60+
.gsub(/^( \*= require .*)\n \*\/(\n+)\/\*\n(?= \*= require )/, '\1\2') # be cute: collapse requires
61+
.gsub(/url\(images\/([-_.a-zA-Z0-9]+)\)/, 'url(<%= image_path("jquery-ui/\1") %>)')
62+
out.write(source_code)
63+
end
64+
end
65+
end
66+
67+
desc "Generate the image assets"
68+
task :images do
69+
target_dir = "vendor/assets/images/jquery-ui"
70+
FileUtils.mkdir_p target_dir
71+
FileUtils.cp(Dir.glob("jquery-ui/themes/base/images/*.png"), target_dir)
72+
end
73+
74+
desc "Generate everything (default)"
75+
task :all => [:javascripts, :stylesheets, :images]
76+
77+
task :default => :all

jquery-ui-rails.gemspec

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# -*- encoding: utf-8 -*-
2+
require File.expand_path('../lib/jquery/ui/rails/version', __FILE__)
3+
4+
Gem::Specification.new do |s|
5+
s.name = "jquery-ui-rails"
6+
s.version = Jquery::Ui::Rails::VERSION
7+
s.authors = ["Jo Liss"]
8+
s.email = ["[email protected]"]
9+
s.homepage = "https://github.com/joliss/jquery-ui-rails"
10+
s.summary = "jQuery UI packaged for the Rails asset pipeline"
11+
s.description = "jQuery UI JavaScript, CSS, and image files packaged for the Rails 3.1+ asset pipeline"
12+
13+
s.required_rubygems_version = ">= 1.3.6"
14+
15+
s.add_dependency "railties", ">= 3.1.0"
16+
s.add_dependency "jquery-rails"
17+
18+
s.add_development_dependency "execjs", "~> 1.0"
19+
20+
s.files = Dir.glob("vendor/**/*") + `git ls-files`.split("\n").reject { |f| f == 'jquery-ui' }
21+
s.executables = `git ls-files`.split("\n").select { |f| f =~ /^bin/ }
22+
s.require_path = 'lib'
23+
end

lib/jquery-ui-rails.rb

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
require 'jquery/ui/rails'

lib/jquery/ui/rails.rb

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
require 'jquery/ui/rails/engine'
2+
require 'jquery/ui/rails/version'

lib/jquery/ui/rails/engine.rb

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module Jquery
2+
module Ui
3+
module Rails
4+
class Engine < ::Rails::Engine
5+
end
6+
end
7+
end
8+
end

lib/jquery/ui/rails/version.rb

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module Jquery
2+
module Ui
3+
module Rails
4+
VERSION = "0.0.1"
5+
end
6+
end
7+
end

0 commit comments

Comments
 (0)