guilded 1.1.0 → 2.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. data/.gitignore +17 -4
  2. data/.rspec +2 -0
  3. data/.rvmrc +1 -1
  4. data/Gemfile +1 -21
  5. data/Guardfile +5 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +21 -0
  8. data/Rakefile +1 -1
  9. data/guilded.gemspec +23 -24
  10. data/lib/{generators/guilded_assets/templates → assets/javascripts}/guilded.js +0 -0
  11. data/lib/assets/javascripts/jquery-1.6.4.js +9046 -0
  12. data/lib/assets/javascripts/jquery-1.6.4.min.js +4 -0
  13. data/lib/assets/javascripts/jquery-1.7.1.js +9266 -0
  14. data/lib/assets/javascripts/jquery-1.7.1.min.js +4 -0
  15. data/lib/assets/javascripts/jquery-1.7.2.js +9404 -0
  16. data/lib/assets/javascripts/jquery-1.7.2.min.js +4 -0
  17. data/lib/assets/javascripts/jquery-1.8.0.js +9227 -0
  18. data/lib/assets/javascripts/jquery-1.8.0.min.js +2 -0
  19. data/lib/assets/javascripts/jquery-1.8.1.js +9301 -0
  20. data/lib/assets/javascripts/jquery-1.8.1.min.js +2 -0
  21. data/lib/assets/javascripts/jquery-1.8.2.js +9440 -0
  22. data/lib/assets/javascripts/jquery-1.8.2.min.js +2 -0
  23. data/lib/assets/javascripts/jquery-1.8.3.js +9472 -0
  24. data/lib/assets/javascripts/jquery-1.8.3.min.js +2 -0
  25. data/lib/assets/javascripts/jquery-1.9.0.js +9555 -0
  26. data/lib/assets/javascripts/jquery-1.9.0.min.js +4 -0
  27. data/lib/assets/javascripts/jquery-1.9.1.js +9597 -0
  28. data/lib/assets/javascripts/jquery-1.9.1.min.js +5 -0
  29. data/lib/guilded.rb +23 -73
  30. data/lib/guilded/component.rb +32 -0
  31. data/lib/guilded/configuration.rb +27 -0
  32. data/lib/guilded/data.rb +25 -0
  33. data/lib/guilded/engine.rb +5 -0
  34. data/lib/guilded/guilder.rb +27 -370
  35. data/lib/guilded/rails.rb +7 -4
  36. data/lib/guilded/rails/controller.rb +23 -0
  37. data/lib/guilded/rails/helpers.rb +1 -3
  38. data/lib/guilded/rails/view_helpers.rb +16 -112
  39. data/lib/guilded/version.rb +1 -1
  40. data/spec/guilded/component_spec.rb +13 -0
  41. data/spec/guilded/configuration_spec.rb +68 -0
  42. data/spec/guilded/data_spec.rb +29 -0
  43. data/spec/guilded/guilder_spec.rb +67 -63
  44. data/spec/guilded/rails/view_helpers_spec.rb +49 -0
  45. data/spec/spec_helper.rb +5 -29
  46. metadata +174 -122
  47. data/Gemfile.lock +0 -61
  48. data/README.rdoc +0 -204
  49. data/lib/generators/guilded_assets/guilded_assets_generator.rb +0 -21
  50. data/lib/generators/guilded_assets/templates/guilded.min.js +0 -1
  51. data/lib/generators/guilded_assets/templates/jquery-1.2.6.js +0 -3549
  52. data/lib/generators/guilded_assets/templates/jquery-1.2.6.min.js +0 -32
  53. data/lib/generators/guilded_assets/templates/jquery-1.3.2.js +0 -4376
  54. data/lib/generators/guilded_assets/templates/jquery-1.3.2.min.js +0 -19
  55. data/lib/generators/guilded_assets/templates/jquery-url.js +0 -199
  56. data/lib/generators/guilded_assets/templates/jquery-url.min.js +0 -9
  57. data/lib/generators/guilded_assets/templates/mootools-1.2.3.js +0 -4036
  58. data/lib/generators/guilded_assets/templates/mootools-1.2.3.min.js +0 -356
  59. data/lib/generators/guilded_assets/templates/reset-min.css +0 -7
  60. data/lib/generators/guilded_config/guilded_config_generator.rb +0 -11
  61. data/lib/generators/guilded_config/templates/guilded_config.rb +0 -16
  62. data/lib/guilded/component_def.rb +0 -27
  63. data/lib/guilded/exceptions.rb +0 -29
  64. data/lib/guilded/rails/active_record/human_attribute_hint.rb +0 -41
  65. data/lib/guilded/rails/controller_actions.rb +0 -22
  66. data/lib/guilded/rails/inactive_record/human_attribute_hint.rb +0 -26
  67. data/rails_generators/guilded_assets/guilded_assets_generator.rb +0 -23
  68. data/rails_generators/guilded_assets/templates/guilded.js +0 -12
  69. data/rails_generators/guilded_assets/templates/guilded.min.js +0 -1
  70. data/rails_generators/guilded_assets/templates/jquery-1.2.6.js +0 -3549
  71. data/rails_generators/guilded_assets/templates/jquery-1.2.6.min.js +0 -32
  72. data/rails_generators/guilded_assets/templates/jquery-1.3.2.js +0 -4376
  73. data/rails_generators/guilded_assets/templates/jquery-1.3.2.min.js +0 -19
  74. data/rails_generators/guilded_assets/templates/jquery-url.js +0 -199
  75. data/rails_generators/guilded_assets/templates/jquery-url.min.js +0 -9
  76. data/rails_generators/guilded_assets/templates/mootools-1.2.3.js +0 -4036
  77. data/rails_generators/guilded_assets/templates/mootools-1.2.3.min.js +0 -356
  78. data/rails_generators/guilded_assets/templates/reset-min.css +0 -7
  79. data/rails_generators/guilded_config/guilded_config_generator.rb +0 -11
  80. data/rails_generators/guilded_config/templates/guilded_config.rb +0 -16
  81. data/script/console +0 -10
  82. data/script/destroy +0 -14
  83. data/script/generate +0 -14
  84. data/spec/generators/guilded_assets_generator_spec.rb +0 -35
  85. data/spec/generators/guilded_config_generator_spec.rb +0 -24
  86. data/spec/guilded/component_def_spec.rb +0 -24
  87. data/spec/guilded_spec.rb +0 -7
  88. data/spec/spec.opts +0 -7
  89. data/tasks/rails.rake +0 -8
  90. data/tasks/rspec.rake +0 -21
  91. data/test/guilded/rails/helpers_test.rb +0 -1450
  92. data/test/test_helper.rb +0 -39
@@ -1,4 +1,7 @@
1
- module Guilded
2
- module Rails
3
- end
4
- end
1
+ module Guilded::Rails
2
+
3
+ autoload :Controller, 'guilded/rails/controller'
4
+ autoload :Helpers, 'guilded/rails/helpers'
5
+ autoload :ViewHelpers, 'guilded/rails/view_helpers'
6
+
7
+ end
@@ -0,0 +1,23 @@
1
+ module Guilded::Rails
2
+ module Controller
3
+
4
+ def self.included( base )
5
+ base.instance_eval do
6
+ attr_reader :guilded
7
+ helper_method :guilded
8
+ before_filter :initialize_guilded
9
+ end
10
+
11
+ base.send :include, InstanceMethods
12
+ end
13
+
14
+ module InstanceMethods
15
+
16
+ def initialize_guilded
17
+ @guilded = Guilded::Guilder.new
18
+ end
19
+
20
+ end
21
+
22
+ end
23
+ end
@@ -1,9 +1,7 @@
1
1
  module Guilded
2
2
  module Rails
3
3
 
4
- require 'active_support'
5
- #require 'rubygems'
6
- #gem 'activesupport', '2.3.2'
4
+ #require 'active_support/all'
7
5
 
8
6
  # Common functionality that Rails Guilded components may need to use.
9
7
  #
@@ -1,118 +1,22 @@
1
- module Guilded
2
- module Rails
3
- module ViewHelpers
1
+ module Guilded::Rails
2
+ module ViewHelpers
4
3
 
5
- # Generates the initGuildedElements function and includes a call to each GUIlded
6
- # element(s) Init method.
7
- #
8
- # Must be called once per rendered page. You can include it just before the closing body
9
- # tag of your application layout. If no Guilded elements were called in the template, the
10
- # call to g_apply_behavior will not output anything.
11
- #
12
- def g_apply_behavior( options={} )
13
- Guilded::Guilder.instance.generate_javascript_init( options )
14
- end
4
+ def jquery_include_tag( options={} )
5
+ version = options.fetch( :version, Guilded.configuration.jquery_version )
6
+ min = options.fetch( :min, false )
15
7
 
16
- # Generates the JavaScript include(s) for each Guilded element that is used.
17
- #
18
- # Must be called once per rendered page. You can include it just before the closing body
19
- # tag of your application layout. If no Guilded elements were called in the template, the
20
- # call to g_apply_includes will not output anything.
21
- #
22
- def g_apply_includes
23
- g = Guilded::Guilder.instance
24
- g.generate_asset_lists
25
-
26
- # JavaScript
27
- if g.production? && g.use_remote_jquery
28
- js_groups = g.combined_js_srcs.partition { |src| src == g.jquery_js }
29
- output = javascript_include_tag( g.jquery_remote_url )
30
- output << javascript_include_tag( js_groups[1], :cache => "cache/#{g.js_cache_name}" ) unless js_groups[1].nil?
31
- else
32
- output = javascript_include_tag( g.combined_js_srcs, :cache => "cache/#{g.js_cache_name}" )
33
- end
34
- output
35
- end
36
-
37
- def g_apply_style
38
- "<!-- guilded.styles -->"
39
- end
40
-
41
- # Injects the CSS into the header. Must be called once per rendered page and within a scope that allows access
42
- # to the output buffer of the tempalte system being used.
43
- #
44
- def g_inject_styles
45
- g = Guilded::Guilder.instance
46
- self.output_buffer.sub!( /<!-- guilded.styles -->/, stylesheet_link_tag( g.combined_css_srcs, :cache => "cache/#{g.css_cache_name}" ) )
47
- end
48
-
49
- # Creates a javascript include tag for a Guilded specific file. The only difference
50
- # being that it adds the file to a sources array to be concatenated and included at the
51
- # end of the page with the dependencies specified for the Guilded components used.
52
- #
53
- # To explicitly include the jQuery or MooTools libraries you can use :jquery and/or :mootools
54
- # respectively. If a component that uses either jQuery or MooTools is used on a page, there is
55
- # no need to explicitly include the library, as it will be resolved as a dependency and only
56
- # included once.
57
- #
58
- def g_javascript_include_tag( *sources )
59
- g = Guilded::Guilder.instance
60
- defaults = nil
61
- if sources.include?( :defaults )
62
- defaults = ActionView::Helpers::AssetTagHelper::JAVASCRIPT_DEFAULT_SOURCES
63
- sources.delete( :defaults )
64
- end
65
- if sources.include?( :jquery )
66
- sources.insert( 0, g.jquery_js ) unless sources.include?( g.jquery_js )
67
- sources.delete( :jquery )
68
- end
69
- if sources.include?( :mootools )
70
- unless sources.include?( g.mootools_js )
71
- insert_at = 0
72
- insert_at = 1 if( sources.include?( g.jquery_js ) )
73
- sources.insert( insert_at, g.mootools_js )
74
- end
75
- sources.delete( :mootools )
76
- end
77
- if defaults
78
- g.add_js_sources( *(sources << defaults) )
79
- else
80
- g.add_js_sources( *sources )
81
- end
82
- ''
83
- end
84
-
85
- # Replaces the Rails stylesheet_link_tag helper if you wnat Guilded to manage CSS for you.
86
- # Although the syntax is exactly the same, the method works a little differently.
87
- #
88
- # This helper adds the stylesheet(s) to a collection to be renderred out together
89
- # with all the guilded componenets stylesheets. This allows the stylesheets passed
90
- # to this method to be cached with the guilded stylesheests into a single reusable file.
91
- #
92
- # The helper will ensure that these stylesheets are included after Guilded's reset
93
- # stylesheet and before guilded's component's stylesheets so that they can override any
94
- # resets, etc and not override any guilded components styles.
95
-
96
- # *options*
97
- # :position The place to position the css. pre for before the component's css or post for after.
98
- # Defaults to post.
99
- #
100
- def g_stylesheet_link_tag( *sources )
101
- options = sources.extract_options! || {}
102
- options[:position] ||= :post
103
- sources.each { |src| Guilded::Guilder.instance.add_css_source( src, options[:position] ) }
104
- ''
105
- end
8
+ raw "<script src=\"#{jquery_url( version, min )}\" type=\"text/javascript\"></script>"
9
+ end
106
10
 
107
- def g_skin_tag( source, skin='default' )
108
- path = "#{RAILS_ROOT}/public/stylesheets/#{GUILDED_JS_FOLDER}#{GUILDED_NS}#{source.to_s}/#{skin}.css"
109
- if File.exists?( path )
110
- stylesheet_link_tag( "/stylesheets/#{GUILDED_JS_FOLDER}#{GUILDED_NS}#{source.to_s}/#{skin}.css" )
111
- else
112
- ""
113
- end
114
- end
11
+ def jquery_url( version, min )
12
+ %w(development test cucumber).include?( Guilded.configuration.environment.to_s ) ?
13
+ Guilded.configuration.local_jquery_name( version, min ) :
14
+ Guilded.configuration.jquery_google_url( version )
15
+ end
115
16
 
17
+ def apply_guilded_behavior
18
+ raw guilded.javascript_initializer
116
19
  end
20
+
117
21
  end
118
- end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module Guilded
2
- VERSION = "1.1.0"
2
+ VERSION = "2.0.0.pre"
3
3
  end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe Guilded::Component do
4
+
5
+ let :component do
6
+ described_class.new :flash_growler, :position => :bottom, :delay => 4000
7
+ end
8
+
9
+ it "should produce the correct javascript initializer" do
10
+ component.javascript_initializer.should == "g.initFlashGrowler({\"position\":\"bottom\",\"delay\":4000});"
11
+ end
12
+
13
+ end
@@ -0,0 +1,68 @@
1
+ require 'spec_helper'
2
+
3
+ describe Guilded::Configuration do
4
+
5
+ subject { Guilded.configuration }
6
+
7
+ before :each do
8
+ Guilded.configure do |config|
9
+ config.environment = :production
10
+ config.jquery_version = '1.8.3'
11
+ end
12
+ end
13
+
14
+ it "should have the correct value for environment" do
15
+ subject.environment.should == :production
16
+ end
17
+
18
+ it "should have the correct value for jquery_verison" do
19
+ subject.jquery_version.should == '1.8.3'
20
+ end
21
+
22
+ context "when the jquery_google_url_template is not overridden" do
23
+
24
+ it "should have the correct value for the jquery_google_url_template" do
25
+ subject.jquery_google_url_template.should == "https://ajax.googleapis.com/ajax/libs/jquery/{{version}}/jquery.min.js"
26
+ end
27
+
28
+ end
29
+
30
+ context "when the jquery_google_url_template is overridden" do
31
+
32
+ before :each do
33
+ Guilded.configure do |config|
34
+ config.jquery_google_url_template = "something"
35
+ end
36
+ end
37
+
38
+ it "should have the correct value for the jquery_google_url_template" do
39
+ subject.jquery_google_url_template.should == "something"
40
+ end
41
+
42
+ end
43
+
44
+ it "should have return the correct value for jquery_google_url" do
45
+ subject.jquery_google_url( '1.8.3' ).should == "https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"
46
+ end
47
+
48
+ describe "#local_jquery_name" do
49
+
50
+ context "when min version is requested" do
51
+
52
+ it "should return the correct value" do
53
+ subject.local_jquery_name( '1.8.3', true ).should == "/assets/jquery-1.8.3.min.js"
54
+ end
55
+
56
+ end
57
+
58
+ context "when uncompressed version is requested" do
59
+
60
+ it "should return the correct value" do
61
+ subject.local_jquery_name( '1.8.3', false ).should == "/assets/jquery-1.8.3.js"
62
+ end
63
+
64
+ end
65
+
66
+ end
67
+
68
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe Guilded::Data do
4
+
5
+ let :data do
6
+ subject
7
+ end
8
+
9
+ context "when there is no data" do
10
+
11
+ it "should output the correct javascript" do
12
+ data.to_javascript.should == "g[\"data\"]={};"
13
+ end
14
+
15
+ end
16
+
17
+ context "when there is data" do
18
+
19
+ before :each do
20
+ data.add :a => 1, :b => { :c => 3}
21
+ end
22
+
23
+ it "should output the correct javascript" do
24
+ data.to_javascript.should == "g[\"data\"]={\"a\":1,\"b\":{\"c\":3}};"
25
+ end
26
+
27
+ end
28
+
29
+ end
@@ -1,77 +1,81 @@
1
- require File.expand_path( File.join( File.dirname(__FILE__), '..', 'spec_helper' ) )
1
+ require 'spec_helper'
2
2
 
3
3
  describe Guilded::Guilder do
4
- before :each do
5
- @g = Guilded::Guilder.instance
6
- end
7
-
8
- it "should return an instance" do
9
- @g.should_not be_nil
10
- end
11
-
12
- it "should be a singleton" do
13
- @g.initialized_at.should eql( Guilded::Guilder.instance.initialized_at )
14
- end
15
-
16
- it "should have 1 css source after init" do
17
- @g.combined_css_srcs.size.should eql( 1 )
18
- end
19
-
20
- it "should have 3 js sources after init" do
21
- @g.combined_js_srcs.size.should eql( 3 )
22
- end
23
-
24
- it "should increase count by one when you add a component" do
25
- count = @g.count
26
- @g.add( 'grid', { :id => 'grid' } )
27
- @g.count.should eql( count + 1 )
28
- end
29
-
30
- it "should respond to add" do
31
- @g.respond_to?( :add ).should be_true
32
- end
33
-
34
- it "should respond to count" do
35
- @g.respond_to?( :count ).should be_true
36
- end
37
4
 
38
- it "should respond to reset!" do
39
- @g.respond_to?( :reset! ).should be_true
5
+ let :guilder do
6
+ subject
40
7
  end
41
8
 
42
- it "should respond to apply" do
43
- @g.respond_to?( :apply ).should be_true
44
- end
45
-
46
- it "should respond to generate_javascript_init" do
47
- @g.respond_to?( :generate_javascript_init ).should be_true
48
- end
9
+ describe "#component?" do
49
10
 
50
- it "should respond_to js_cache_name" do
51
- @g.respond_to?( :js_cache_name ).should be_true
52
- end
11
+ context "when there is a component already in existence" do
53
12
 
54
- it "should respond_to css_cache_name" do
55
- @g.respond_to?( :css_cache_name ).should be_true
56
- end
57
-
58
- it "should respond_to generate_js_cache_name" do
59
- @g.respond_to?( :generate_js_cache_name ).should be_true
60
- end
13
+ before :each do
14
+ guilder.add :flash_growler
15
+ end
61
16
 
62
- it "should respond_to generate_css_cache_name" do
63
- @g.respond_to?( :generate_css_cache_name ).should be_true
64
- end
17
+ it "should agree that the component is already defined" do
18
+ guilder.component?( :flash_growler ).should be_true
19
+ end
20
+
21
+ end
22
+
23
+ context "when there is not a component already in existence" do
24
+
25
+ before :each do
26
+ guilder.add :flash_growler
27
+ end
28
+
29
+ it "should agree that the component is already defined" do
30
+ guilder.component?( :scroll_to ).should be_false
31
+ end
32
+
33
+ end
65
34
 
66
- it "should respond_to combined_css_srcs" do
67
- @g.respond_to?( :combined_css_srcs ).should be_true
68
35
  end
69
36
 
70
- it "should respond_to combined_js_srcs" do
71
- @g.respond_to?( :combined_js_srcs ).should be_true
37
+ context "when there are components requiring javascript" do
38
+
39
+ before :each do
40
+ guilder.add :flash_growler, :position => :bottom
41
+ end
42
+
43
+ it "should generate the correct javascript initializer" do
44
+ guilder.javascript_initializer.should == "<script type=\"text/javascript\">\n//<![CDATA[\ng[\"data\"]={};var initGuilded = function(){g.initFlashGrowler({\"position\":\"bottom\"});};jQuery('document').ready(initGuilded);jQuery('body').trigger('guildedInitialized');\n//]]>\n</script>"
45
+ end
46
+
72
47
  end
73
48
 
74
- it "should respond_to initialized_at" do
75
- @g.respond_to?( :initialized_at ).should be_true
49
+ context "when there are no components requiring javascript" do
50
+
51
+ before :each do
52
+ guilder.add :flash_growler, :has_javascript => false, :position => :bottom
53
+ end
54
+
55
+ it "should generate the correct javascript initializer" do
56
+ guilder.javascript_initializer.should == "<script type=\"text/javascript\">\n//<![CDATA[\ng[\"data\"]={};jQuery('body').trigger('guildedInitialized');\n//]]>\n</script>"
57
+ end
58
+
59
+ context "and there is no data to pass" do
60
+
61
+ it "should generate the correct javascript initializer" do
62
+ guilder.javascript_initializer.should == "<script type=\"text/javascript\">\n//<![CDATA[\ng[\"data\"]={};jQuery('body').trigger('guildedInitialized');\n//]]>\n</script>"
63
+ end
64
+
65
+ end
66
+
67
+ context "and there is data to pass" do
68
+
69
+ before :each do
70
+ guilder.add_data :a => 1
71
+ end
72
+
73
+ it "should generate the correct javascript initializer" do
74
+ guilder.javascript_initializer.should == "<script type=\"text/javascript\">\n//<![CDATA[\ng[\"data\"]={\"a\":1};jQuery('body').trigger('guildedInitialized');\n//]]>\n</script>"
75
+ end
76
+
77
+ end
78
+
76
79
  end
77
- end
80
+
81
+ end