themes_for_rails 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- themes_for_rails (0.3.1)
4
+ themes_for_rails (0.4.0)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
data/README.textile CHANGED
@@ -117,7 +117,7 @@ theme_stylesheet_path
117
117
 
118
118
  h2. Generators
119
119
 
120
- For now, it only creates the theme folder.
120
+ For now, it only creates the theme folder and add the "themes_for_rails" route in the routes.rb.
121
121
 
122
122
  <pre>
123
123
  rails generate themes_for_rails:install
@@ -235,6 +235,9 @@ rake
235
235
  h2. Authors and contributors
236
236
 
237
237
  * lucasefe
238
+ * jbarreneche
239
+ * kule
240
+ * matheusmoreira
238
241
 
239
242
  h2. Last but not least
240
243
 
@@ -6,6 +6,11 @@ module ThemesForRails
6
6
  def create_themes_folder
7
7
  empty_directory(File.join(Rails.root, 'themes'))
8
8
  end
9
+
10
+ def add_themes_for_rails_routes
11
+ route "themes_for_rails"
12
+ end
13
+
9
14
  end
10
15
  end
11
16
  end
@@ -7,9 +7,10 @@ module ThemesForRails
7
7
  @config
8
8
  end
9
9
 
10
- def available_themes
11
- Dir.glob(File.join(config.base_dir, config.themes_dir, "*"))
10
+ def available_themes(&block)
11
+ Dir.glob(File.join(config.base_dir, config.themes_dir, "*"), &block)
12
12
  end
13
+ alias each_theme_dir available_themes
13
14
 
14
15
  def available_theme_names
15
16
  available_themes.map {|theme| File.basename(theme) }
@@ -37,11 +38,6 @@ module ThemesForRails
37
38
  Sass::Plugin.template_location_array.map(&:first).include?(sass_dir)
38
39
  end
39
40
 
40
- def each_theme_dir
41
- Dir.glob(File.join(Rails.root, config.themes_dir, "*")) do |theme_dir|
42
- yield(theme_dir) if block_given?
43
- end
44
- end
45
41
  end
46
42
  end
47
43
 
@@ -7,7 +7,7 @@ module ThemesForRails
7
7
  @cached_theme_name ||= begin
8
8
  case @theme_name
9
9
  when Symbol then
10
- self.respond_to?(@theme_name) ? self.send(@theme_name) : @theme_name.to_s
10
+ self.respond_to?(@theme_name, true) ? self.send(@theme_name) : @theme_name.to_s
11
11
  when String then @theme_name
12
12
  else
13
13
  nil
@@ -18,10 +18,10 @@ module ThemesForRails
18
18
  @theme_name = name
19
19
  end
20
20
  def set_theme(name)
21
- self.theme_name = name
21
+ self.theme_name = name
22
22
  if valid_theme?
23
- add_theme_view_path
24
- end
23
+ add_theme_view_path
24
+ end
25
25
  end
26
26
  public
27
27
  def valid_theme?
@@ -38,11 +38,11 @@ module ThemesForRails
38
38
  def public_theme_path
39
39
  theme_path("/")
40
40
  end
41
- def theme_path(base = ::Rails.root)
41
+ def theme_path(base = ThemesForRails.config.base_dir)
42
42
  theme_path_for(theme_name, base)
43
43
  end
44
- def theme_path_for(name, base = ::Rails.root)
45
- File.join(base, "themes", name)
44
+ def theme_path_for(name, base = ThemesForRails.config.base_dir, theme_dir = ThemesForRails.config.themes_dir)
45
+ File.join(base, theme_dir, name)
46
46
  end
47
47
  end
48
48
  end
@@ -1,3 +1,3 @@
1
1
  module ThemesForRails
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
@@ -1,8 +1,8 @@
1
1
  module ThemesForRails
2
2
  module ViewHelpers
3
-
3
+
4
4
  extend ActiveSupport::Concern
5
-
5
+
6
6
  included do
7
7
  include ThemesForRails::CommonMethods
8
8
  end
@@ -16,20 +16,20 @@ module ThemesForRails
16
16
  def current_theme_image_path(asset)
17
17
  base_theme_image_path(:theme => self.theme_name, :asset => asset)
18
18
  end
19
-
19
+
20
20
  alias_method :theme_image_path, :current_theme_image_path
21
21
  alias_method :theme_javascript_path, :current_theme_javascript_path
22
22
  alias_method :theme_stylesheet_path, :current_theme_stylesheet_path
23
23
 
24
- def theme_image_tag(source)
25
- image_tag(theme_image_path(source))
24
+ def theme_image_tag(source, options = {})
25
+ image_tag(theme_image_path(source), options)
26
26
  end
27
-
27
+
28
28
  def theme_javascript_include_tag(*files)
29
29
  files.collect! {|file| theme_javascript_path(file) }
30
30
  javascript_include_tag *files
31
31
  end
32
-
32
+
33
33
  def theme_stylesheet_link_tag(*files)
34
34
  options = files.extract_options!
35
35
  files.collect! {|file| theme_stylesheet_path(file) }
@@ -0,0 +1,22 @@
1
+ require File.expand_path("test/test_helper.rb")
2
+
3
+ class ThemesForRailsTest < Test::Unit::TestCase
4
+ setup do
5
+ @common = Object.new
6
+ @common.extend ThemesForRails::CommonMethods
7
+ @common.theme_name = "awesome"
8
+ ThemesForRails.config.clear
9
+ end
10
+ should 'use config base_dir to build theme path' do
11
+ ThemesForRails.config.base_dir ='some_path'
12
+ assert_match /some_path/, @common.theme_path
13
+ end
14
+ should 'use config themes_dir to build theme path' do
15
+ ThemesForRails.config.themes_dir ='skinner'
16
+ assert_match /skinner/, @common.theme_path
17
+ end
18
+ should 'use config base_dir to build theme path for theme' do
19
+ ThemesForRails.config.base_dir ='some_path'
20
+ assert_match /some_path/, @common.theme_path_for('doodley')
21
+ end
22
+ end
@@ -1,4 +1,4 @@
1
- require "test_helper"
1
+ require File.expand_path("test/test_helper.rb")
2
2
 
3
3
  class MyController < ActionController::Base
4
4
  def hello
@@ -9,6 +9,21 @@ class CustomThemeController < ActionController::Base
9
9
  def hello
10
10
  render :text => "Just a test"
11
11
  end
12
+
13
+ def theme_selector
14
+ 'custom'
15
+ end
16
+ end
17
+ class PrivateCustomThemeController < ActionController::Base
18
+ def hello
19
+ render :text => "Just a test"
20
+ end
21
+
22
+ private
23
+
24
+ def private_theme_selector
25
+ 'private_custom'
26
+ end
12
27
  end
13
28
 
14
29
  class ActionMailerInclusionTest < Test::Unit::TestCase
@@ -46,11 +61,18 @@ module ThemesForRails
46
61
  end
47
62
  context "setting the theme with a Symbol" do
48
63
  tests CustomThemeController
49
- should "call the selected method" do
50
- @controller.expects(:theme_selector).returns('custom')
64
+ should "call the selected private method" do
51
65
  CustomThemeController.theme :theme_selector
52
- assert_equal nil, @controller.theme_name
53
66
  get :hello
67
+ assert_equal 'custom', @controller.theme_name
68
+ end
69
+ end
70
+ context "setting the theme with a Symbol (private)" do
71
+ tests PrivateCustomThemeController
72
+ should "call the selected private method" do
73
+ PrivateCustomThemeController.theme :private_theme_selector
74
+ get :hello
75
+ assert_equal 'private_custom', @controller.theme_name
54
76
  end
55
77
  end
56
78
  end
@@ -4,5 +4,11 @@ class ThemesForRailsTest < Test::Unit::TestCase
4
4
  should 'know the available themes' do
5
5
  assert_equal ['default'], ThemesForRails.available_theme_names
6
6
  end
7
-
7
+ should 'use config for each_theme_dir' do
8
+ ThemesForRails.config.base_dir = Rails.root + 'app'
9
+ assert_equal ['app_theme'], ThemesForRails.each_theme_dir.map {|f| File.basename(f) }
10
+ end
11
+ teardown do
12
+ ThemesForRails.config.clear
13
+ end
8
14
  end
@@ -3,25 +3,28 @@ require "test_helper"
3
3
  module ThemesForRails
4
4
  class ViewHelpersTest < ActionController::IntegrationTest
5
5
  include ThemesForRails::ViewHelpers
6
-
6
+
7
7
  include ActionView::Helpers::AssetTagHelper
8
8
  include ERB::Util
9
9
  include ActionView::Helpers::TagHelper
10
-
10
+
11
11
  def theme_name
12
12
  'default'
13
13
  end
14
-
14
+
15
15
  def config
16
16
  @config ||= stub({:perform_caching => false, :asset_path => "/assets", :asset_host => ''})
17
17
  end
18
-
18
+
19
19
  should 'delegate to stylesheet_link_tag' do
20
- assert theme_stylesheet_link_tag('cuac.css').include?('media="screen"')
20
+ assert_match /media=.screen/, theme_stylesheet_link_tag('cuac.css')
21
21
  end
22
-
22
+
23
23
  should 'delegate options (lazy testing, I know)' do
24
- assert theme_stylesheet_link_tag('cuac.css', :media => 'print').include?('media="print"')
24
+ assert_match /media=.print/, theme_stylesheet_link_tag('cuac.css', :media => 'print')
25
+ end
26
+ should 'delegate options in image_tag' do
27
+ assert_match /width=.40/, theme_image_tag('image.css', :size => '40x50')
25
28
  end
26
29
  end
27
30
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{themes_for_rails}
8
- s.version = "0.4.0"
8
+ s.version = "0.4.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Lucas Florio"]
12
- s.date = %q{2011-01-14}
12
+ s.date = %q{2011-02-02}
13
13
  s.description = %q{It allows an application to have many different ways of rendering static assets and dynamic views. }
14
14
  s.email = %q{lucasefe@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -44,6 +44,7 @@ Gem::Specification.new do |s|
44
44
  "lib/themes_for_rails/version.rb",
45
45
  "lib/themes_for_rails/view_helpers.rb",
46
46
  "test/assets_controller_test.rb",
47
+ "test/common_methods_test.rb",
47
48
  "test/config_test.rb",
48
49
  "test/controller_methods_test.rb",
49
50
  "test/dummy_app/.gitignore",
@@ -114,6 +115,7 @@ Gem::Specification.new do |s|
114
115
  s.summary = %q{Themes support for rails (3)}
115
116
  s.test_files = [
116
117
  "test/assets_controller_test.rb",
118
+ "test/common_methods_test.rb",
117
119
  "test/config_test.rb",
118
120
  "test/controller_methods_test.rb",
119
121
  "test/dummy_app/app/controllers/application_controller.rb",
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 4
8
- - 0
9
- version: 0.4.0
8
+ - 1
9
+ version: 0.4.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Lucas Florio
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-01-14 00:00:00 -03:00
17
+ date: 2011-02-02 00:00:00 -03:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -55,6 +55,7 @@ files:
55
55
  - lib/themes_for_rails/version.rb
56
56
  - lib/themes_for_rails/view_helpers.rb
57
57
  - test/assets_controller_test.rb
58
+ - test/common_methods_test.rb
58
59
  - test/config_test.rb
59
60
  - test/controller_methods_test.rb
60
61
  - test/dummy_app/.gitignore
@@ -151,6 +152,7 @@ specification_version: 3
151
152
  summary: Themes support for rails (3)
152
153
  test_files:
153
154
  - test/assets_controller_test.rb
155
+ - test/common_methods_test.rb
154
156
  - test/config_test.rb
155
157
  - test/controller_methods_test.rb
156
158
  - test/dummy_app/app/controllers/application_controller.rb