install_theme 0.6.0 → 0.6.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/History.txt +9 -0
- data/README.rdoc +2 -2
- data/lib/install_theme.rb +11 -9
- data/lib/install_theme/cli.rb +8 -8
- data/spec/install_theme_cli_spec.rb +9 -9
- data/spec/install_theme_haml_spec.rb +2 -2
- data/spec/install_theme_spec.rb +9 -8
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
=== 0.6.1 / 2009-10-06
|
2
|
+
|
3
|
+
Major:
|
4
|
+
|
5
|
+
* much better algorithm for cleaning up stylesheets
|
6
|
+
* The content_id argument is now content_path - it is either a CSSpath or XPath expression.
|
7
|
+
The --inside_yields flag is renamed to --partial (-p)
|
8
|
+
Testing for using xpath and csspath in the content_path and --partials arguments.
|
9
|
+
|
1
10
|
=== 0.6.0 / 2009-10-02
|
2
11
|
|
3
12
|
Major:
|
data/README.rdoc
CHANGED
@@ -17,9 +17,9 @@ in action.
|
|
17
17
|
|
18
18
|
Simple case:
|
19
19
|
|
20
|
-
install_theme path/to/template path/to/rails_app
|
20
|
+
install_theme path/to/template path/to/rails_app content_path
|
21
21
|
|
22
|
-
Replace some DOM content with <%= yield :some_label %> with --
|
22
|
+
Replace some DOM content with <%= yield :some_label %> with --partials:
|
23
23
|
|
24
24
|
install_theme path/to/app path/to/rails_app content_box \
|
25
25
|
--inside_yield "header:#header h2" \
|
data/lib/install_theme.rb
CHANGED
@@ -10,11 +10,11 @@ require 'sass/css'
|
|
10
10
|
require 'haml/exec'
|
11
11
|
|
12
12
|
class InstallTheme
|
13
|
-
VERSION = "0.6.
|
13
|
+
VERSION = "0.6.1"
|
14
14
|
|
15
15
|
attr_reader :template_root, :rails_root, :index_path, :template_type
|
16
16
|
attr_reader :stylesheet_dir, :javascript_dir, :image_dir
|
17
|
-
attr_reader :
|
17
|
+
attr_reader :content_path, :partials
|
18
18
|
attr_reader :stdout
|
19
19
|
attr_reader :original_named_yields, :original_body_content
|
20
20
|
|
@@ -23,8 +23,8 @@ class InstallTheme
|
|
23
23
|
@rails_root = File.expand_path(options[:rails_root] || File.dirname('.'))
|
24
24
|
@template_type = (options[:template_type] || detect_template).to_s
|
25
25
|
@index_path = options[:index_path] || "index.html"
|
26
|
-
@
|
27
|
-
@
|
26
|
+
@content_path = options[:content_path] || "content"
|
27
|
+
@partials = options[:partials] || {}
|
28
28
|
@stylesheet_dir = options[:stylesheet_dir] || detect_stylesheet_dir
|
29
29
|
@javascript_dir = options[:javascript_dir] || detect_javascript_dir
|
30
30
|
@image_dir = options[:image_dir] || detect_image_dir
|
@@ -95,11 +95,11 @@ class InstallTheme
|
|
95
95
|
contents.sub!(%r{\s*</head>}, "\n <%= yield(:head) %>\n</head>")
|
96
96
|
|
97
97
|
doc = Hpricot(contents)
|
98
|
-
doc.search(
|
98
|
+
doc.search(content_path).each do |elm|
|
99
99
|
@original_body_content = elm.inner_html.strip
|
100
100
|
elm.inner_html = "<%= yield %>"
|
101
101
|
end
|
102
|
-
|
102
|
+
partials.to_a.each do |name, css_path|
|
103
103
|
doc.search(css_path).each do |elm|
|
104
104
|
original_named_yields[name] = elm.inner_html.strip
|
105
105
|
elm.inner_html = "<%= yield(:#{name}) || render_or_default('#{name}') %>"
|
@@ -181,9 +181,7 @@ class InstallTheme
|
|
181
181
|
template_stylesheets.each do |file|
|
182
182
|
target_path = File.join(template_temp_path, 'public/stylesheets', File.basename(file))
|
183
183
|
File.open(target_path, "w") do |f|
|
184
|
-
|
185
|
-
contents.gsub!(%r{url\((["']?)[./]*#{image_dir}}, 'url(\1/images')
|
186
|
-
f << contents
|
184
|
+
f << clean_stylesheet(File.read(file))
|
187
185
|
end
|
188
186
|
convert_to_sass(target_path) if haml?
|
189
187
|
end
|
@@ -303,6 +301,10 @@ class InstallTheme
|
|
303
301
|
Dir[File.join(template_root, image_dir, '**/*.{jpg,png,gif}')]
|
304
302
|
end
|
305
303
|
|
304
|
+
def clean_stylesheet(contents)
|
305
|
+
contents.gsub(%r{url\((["']?)[\./]*(?:#{image_dir}|#{stylesheet_dir}|)\/?}, 'url(\1/images/')
|
306
|
+
end
|
307
|
+
|
306
308
|
def show_readme
|
307
309
|
stdout.puts <<-README
|
308
310
|
|
data/lib/install_theme/cli.rb
CHANGED
@@ -8,7 +8,7 @@ class InstallTheme
|
|
8
8
|
opts.banner = <<-BANNER.gsub(/^ /,'')
|
9
9
|
Use any HTML template as a theme generator for your Rails app.
|
10
10
|
|
11
|
-
Usage: #{File.basename($0)} path/to/template path/to/rails_app
|
11
|
+
Usage: #{File.basename($0)} path/to/template path/to/rails_app content_path [options]
|
12
12
|
|
13
13
|
Options are:
|
14
14
|
BANNER
|
@@ -22,13 +22,13 @@ class InstallTheme
|
|
22
22
|
opts.on("--index_path index.html", String,
|
23
23
|
"HTML page to use for application layout.",
|
24
24
|
"Default: index.html") { |arg| options[:index_path] = arg }
|
25
|
-
opts.on("--
|
25
|
+
opts.on("-p", "--partial KEY_AND_PATH", String,
|
26
26
|
"Replace the inner HTML of an element with <%= yield :key %>",
|
27
|
-
"Example: --
|
28
|
-
"
|
29
|
-
options[:
|
27
|
+
"Example using CSS path: --partial header:#header",
|
28
|
+
"Example using XPath: --partial \"header://div[@id='header']\"") do |arg|
|
29
|
+
options[:partials] ||= {}
|
30
30
|
key, css_path = arg.split(/\s*:\s*/)[0..1]
|
31
|
-
options[:
|
31
|
+
options[:partials][key.strip.to_sym] = css_path.strip
|
32
32
|
end
|
33
33
|
opts.on("-h", "--help",
|
34
34
|
"Show this help message.") { |arg| stdout.puts opts; exit }
|
@@ -39,7 +39,7 @@ class InstallTheme
|
|
39
39
|
end
|
40
40
|
options[:template_root] = arguments.shift
|
41
41
|
options[:rails_root] = arguments.shift
|
42
|
-
options[:
|
42
|
+
options[:content_path] = arguments.shift
|
43
43
|
unless options[:template_root] && options[:rails_root]
|
44
44
|
stdout.puts "trying"
|
45
45
|
stdout.puts parser; exit
|
@@ -47,4 +47,4 @@ class InstallTheme
|
|
47
47
|
InstallTheme.new(options).apply_to_target
|
48
48
|
end
|
49
49
|
end
|
50
|
-
end
|
50
|
+
end
|
@@ -6,23 +6,23 @@ describe InstallTheme::CLI, "execute" do
|
|
6
6
|
theme = stub
|
7
7
|
InstallTheme.should_receive(:new).
|
8
8
|
with(:template_root => "path/to/app",
|
9
|
-
:rails_root
|
10
|
-
:
|
11
|
-
:index_path
|
12
|
-
:template_type
|
13
|
-
:
|
9
|
+
:rails_root => "path/to/rails_app",
|
10
|
+
:content_path => "#content_box",
|
11
|
+
:index_path => "root.html",
|
12
|
+
:template_type => "haml",
|
13
|
+
:partials => { :header => '#header h2', :sidebar => '#sidebar' }
|
14
14
|
).
|
15
15
|
and_return(theme)
|
16
16
|
theme.should_receive(:apply_to_target)
|
17
17
|
@stdout = stdout do |stdout_io|
|
18
|
-
InstallTheme::CLI.execute(stdout_io, %w[path/to/app path/to/rails_app content_box
|
18
|
+
InstallTheme::CLI.execute(stdout_io, %w[path/to/app path/to/rails_app #content_box
|
19
19
|
--index_path=root.html
|
20
20
|
--haml
|
21
|
-
--
|
22
|
-
|
21
|
+
--partial header:#header\ h2
|
22
|
+
-p sidebar:#sidebar
|
23
23
|
])
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
27
|
it("parses arguments and run generator") { }
|
28
|
-
end
|
28
|
+
end
|
@@ -7,8 +7,8 @@ describe InstallTheme do
|
|
7
7
|
@stdout = stdout do |stdout|
|
8
8
|
@theme = InstallTheme.new(:template_root => File.dirname(__FILE__) + "/fixtures/bloganje",
|
9
9
|
:rails_root => @target_application,
|
10
|
-
:
|
11
|
-
:
|
10
|
+
:content_path => "content",
|
11
|
+
:partials => { :header => '#header h2', :sidebar => '#sidebar' },
|
12
12
|
:stdout => stdout)
|
13
13
|
@theme.apply_to_target(:stdout => stdout, :generator => {:collision => :force, :quiet => true})
|
14
14
|
end
|
data/spec/install_theme_spec.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
2
|
|
3
3
|
describe InstallTheme do
|
4
|
-
context "bloganje theme to ERb" do
|
4
|
+
context "bloganje theme to ERb using CSS path" do
|
5
5
|
before(:all) do
|
6
6
|
setup_base_rails
|
7
7
|
@stdout = stdout do |stdout|
|
8
8
|
@theme = InstallTheme.new(:template_root => File.dirname(__FILE__) + "/fixtures/bloganje",
|
9
|
-
:rails_root
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:stdout
|
9
|
+
:rails_root => @target_application,
|
10
|
+
:content_path => "#content",
|
11
|
+
:partials => { :header => '#header h2', :sidebar => '#sidebar' },
|
12
|
+
:stdout => stdout)
|
13
13
|
@theme.apply_to_target(:stdout => stdout, :generator => {:collision => :force, :quiet => true})
|
14
14
|
end
|
15
15
|
@expected_application = File.dirname(__FILE__) + "/expected/rails/bloganje"
|
@@ -42,15 +42,16 @@ describe InstallTheme do
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
context "the-hobbit-website-template theme to ERb" do
|
45
|
+
context "the-hobbit-website-template theme to ERb using xpath" do
|
46
46
|
before(:all) do
|
47
47
|
setup_base_rails
|
48
48
|
@stdout = stdout do |stdout|
|
49
49
|
@theme = InstallTheme.new(
|
50
50
|
:template_root => File.dirname(__FILE__) + "/fixtures/the-hobbit-website-template",
|
51
51
|
:rails_root => @target_application,
|
52
|
-
:
|
53
|
-
:
|
52
|
+
:partials => { :menu => "//div[@class='navigation']", :subtitle => "//div[@class='header']/p" },
|
53
|
+
:content_path => "//div[@class='content']",
|
54
|
+
:stdout => stdout)
|
54
55
|
@theme.apply_to_target(:generator => {:collision => :force, :quiet => true})
|
55
56
|
end
|
56
57
|
@expected_application = File.dirname(__FILE__) + "/expected/rails/the-hobbit-website-template"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: install_theme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dr Nic Williams
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-06 00:00:00 +10:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|