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 
         
     |