guilded 1.1.0 → 2.0.0.pre

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.
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