stache 0.0.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.
Files changed (65) hide show
  1. data/.document +11 -0
  2. data/.gitignore +40 -0
  3. data/.rspec +2 -0
  4. data/.rvmrc +1 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE +20 -0
  7. data/README.md +65 -0
  8. data/Rakefile +42 -0
  9. data/lib/stache.rb +13 -0
  10. data/lib/stache/asset_helper.rb +16 -0
  11. data/lib/stache/config.rb +31 -0
  12. data/lib/stache/handler.rb +62 -0
  13. data/lib/stache/util.rb +31 -0
  14. data/lib/stache/version.rb +3 -0
  15. data/lib/stache/view.rb +35 -0
  16. data/spec/controllers/stache_controller_spec.rb +23 -0
  17. data/spec/dummy/Rakefile +7 -0
  18. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  19. data/spec/dummy/app/controllers/stache_controller.rb +13 -0
  20. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  21. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  22. data/spec/dummy/app/views/stache/_eaten_by_a.html.mustache +1 -0
  23. data/spec/dummy/app/views/stache/index.html.mustache +1 -0
  24. data/spec/dummy/app/views/stache/with_partials.html.mustache +3 -0
  25. data/spec/dummy/config.ru +4 -0
  26. data/spec/dummy/config/application.rb +44 -0
  27. data/spec/dummy/config/boot.rb +10 -0
  28. data/spec/dummy/config/database.yml +25 -0
  29. data/spec/dummy/config/environment.rb +5 -0
  30. data/spec/dummy/config/environments/development.rb +26 -0
  31. data/spec/dummy/config/environments/production.rb +49 -0
  32. data/spec/dummy/config/environments/test.rb +35 -0
  33. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  34. data/spec/dummy/config/initializers/inflections.rb +10 -0
  35. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  36. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  37. data/spec/dummy/config/initializers/session_store.rb +8 -0
  38. data/spec/dummy/config/initializers/stache.rb +3 -0
  39. data/spec/dummy/config/locales/en.yml +5 -0
  40. data/spec/dummy/config/routes.rb +61 -0
  41. data/spec/dummy/log/development.log +3 -0
  42. data/spec/dummy/log/production.log +0 -0
  43. data/spec/dummy/log/server.log +0 -0
  44. data/spec/dummy/log/test.log +213 -0
  45. data/spec/dummy/public/404.html +26 -0
  46. data/spec/dummy/public/422.html +26 -0
  47. data/spec/dummy/public/500.html +26 -0
  48. data/spec/dummy/public/favicon.ico +0 -0
  49. data/spec/dummy/public/javascripts/application.js +2 -0
  50. data/spec/dummy/public/javascripts/controls.js +965 -0
  51. data/spec/dummy/public/javascripts/dragdrop.js +974 -0
  52. data/spec/dummy/public/javascripts/effects.js +1123 -0
  53. data/spec/dummy/public/javascripts/prototype.js +6001 -0
  54. data/spec/dummy/public/javascripts/rails.js +191 -0
  55. data/spec/dummy/public/stylesheets/.gitkeep +0 -0
  56. data/spec/dummy/script/rails +6 -0
  57. data/spec/spec_helper.rb +33 -0
  58. data/spec/stache/asset_helper_spec.rb +21 -0
  59. data/spec/stache/config_spec.rb +36 -0
  60. data/spec/stache/handler_spec.rb +29 -0
  61. data/spec/stache/util_spec.rb +17 -0
  62. data/spec/stache/view_spec.rb +9 -0
  63. data/spec/stache_spec.rb +5 -0
  64. data/stache.gemspec +38 -0
  65. metadata +252 -0
@@ -0,0 +1,191 @@
1
+ (function() {
2
+ // Technique from Juriy Zaytsev
3
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
4
+ function isEventSupported(eventName) {
5
+ var el = document.createElement('div');
6
+ eventName = 'on' + eventName;
7
+ var isSupported = (eventName in el);
8
+ if (!isSupported) {
9
+ el.setAttribute(eventName, 'return;');
10
+ isSupported = typeof el[eventName] == 'function';
11
+ }
12
+ el = null;
13
+ return isSupported;
14
+ }
15
+
16
+ function isForm(element) {
17
+ return Object.isElement(element) && element.nodeName.toUpperCase() == 'FORM'
18
+ }
19
+
20
+ function isInput(element) {
21
+ if (Object.isElement(element)) {
22
+ var name = element.nodeName.toUpperCase()
23
+ return name == 'INPUT' || name == 'SELECT' || name == 'TEXTAREA'
24
+ }
25
+ else return false
26
+ }
27
+
28
+ var submitBubbles = isEventSupported('submit'),
29
+ changeBubbles = isEventSupported('change')
30
+
31
+ if (!submitBubbles || !changeBubbles) {
32
+ // augment the Event.Handler class to observe custom events when needed
33
+ Event.Handler.prototype.initialize = Event.Handler.prototype.initialize.wrap(
34
+ function(init, element, eventName, selector, callback) {
35
+ init(element, eventName, selector, callback)
36
+ // is the handler being attached to an element that doesn't support this event?
37
+ if ( (!submitBubbles && this.eventName == 'submit' && !isForm(this.element)) ||
38
+ (!changeBubbles && this.eventName == 'change' && !isInput(this.element)) ) {
39
+ // "submit" => "emulated:submit"
40
+ this.eventName = 'emulated:' + this.eventName
41
+ }
42
+ }
43
+ )
44
+ }
45
+
46
+ if (!submitBubbles) {
47
+ // discover forms on the page by observing focus events which always bubble
48
+ document.on('focusin', 'form', function(focusEvent, form) {
49
+ // special handler for the real "submit" event (one-time operation)
50
+ if (!form.retrieve('emulated:submit')) {
51
+ form.on('submit', function(submitEvent) {
52
+ var emulated = form.fire('emulated:submit', submitEvent, true)
53
+ // if custom event received preventDefault, cancel the real one too
54
+ if (emulated.returnValue === false) submitEvent.preventDefault()
55
+ })
56
+ form.store('emulated:submit', true)
57
+ }
58
+ })
59
+ }
60
+
61
+ if (!changeBubbles) {
62
+ // discover form inputs on the page
63
+ document.on('focusin', 'input, select, texarea', function(focusEvent, input) {
64
+ // special handler for real "change" events
65
+ if (!input.retrieve('emulated:change')) {
66
+ input.on('change', function(changeEvent) {
67
+ input.fire('emulated:change', changeEvent, true)
68
+ })
69
+ input.store('emulated:change', true)
70
+ }
71
+ })
72
+ }
73
+
74
+ function handleRemote(element) {
75
+ var method, url, params;
76
+
77
+ var event = element.fire("ajax:before");
78
+ if (event.stopped) return false;
79
+
80
+ if (element.tagName.toLowerCase() === 'form') {
81
+ method = element.readAttribute('method') || 'post';
82
+ url = element.readAttribute('action');
83
+ params = element.serialize();
84
+ } else {
85
+ method = element.readAttribute('data-method') || 'get';
86
+ url = element.readAttribute('href');
87
+ params = {};
88
+ }
89
+
90
+ new Ajax.Request(url, {
91
+ method: method,
92
+ parameters: params,
93
+ evalScripts: true,
94
+
95
+ onComplete: function(request) { element.fire("ajax:complete", request); },
96
+ onSuccess: function(request) { element.fire("ajax:success", request); },
97
+ onFailure: function(request) { element.fire("ajax:failure", request); }
98
+ });
99
+
100
+ element.fire("ajax:after");
101
+ }
102
+
103
+ function handleMethod(element) {
104
+ var method = element.readAttribute('data-method'),
105
+ url = element.readAttribute('href'),
106
+ csrf_param = $$('meta[name=csrf-param]')[0],
107
+ csrf_token = $$('meta[name=csrf-token]')[0];
108
+
109
+ var form = new Element('form', { method: "POST", action: url, style: "display: none;" });
110
+ element.parentNode.insert(form);
111
+
112
+ if (method !== 'post') {
113
+ var field = new Element('input', { type: 'hidden', name: '_method', value: method });
114
+ form.insert(field);
115
+ }
116
+
117
+ if (csrf_param) {
118
+ var param = csrf_param.readAttribute('content'),
119
+ token = csrf_token.readAttribute('content'),
120
+ field = new Element('input', { type: 'hidden', name: param, value: token });
121
+ form.insert(field);
122
+ }
123
+
124
+ form.submit();
125
+ }
126
+
127
+
128
+ document.on("click", "*[data-confirm]", function(event, element) {
129
+ var message = element.readAttribute('data-confirm');
130
+ if (!confirm(message)) event.stop();
131
+ });
132
+
133
+ document.on("click", "a[data-remote]", function(event, element) {
134
+ if (event.stopped) return;
135
+ handleRemote(element);
136
+ event.stop();
137
+ });
138
+
139
+ document.on("click", "a[data-method]", function(event, element) {
140
+ if (event.stopped) return;
141
+ handleMethod(element);
142
+ event.stop();
143
+ });
144
+
145
+ document.on("submit", function(event) {
146
+ var element = event.findElement(),
147
+ message = element.readAttribute('data-confirm');
148
+ if (message && !confirm(message)) {
149
+ event.stop();
150
+ return false;
151
+ }
152
+
153
+ var inputs = element.select("input[type=submit][data-disable-with]");
154
+ inputs.each(function(input) {
155
+ input.disabled = true;
156
+ input.writeAttribute('data-original-value', input.value);
157
+ input.value = input.readAttribute('data-disable-with');
158
+ });
159
+
160
+ var element = event.findElement("form[data-remote]");
161
+ if (element) {
162
+ handleRemote(element);
163
+ event.stop();
164
+ }
165
+ });
166
+
167
+ document.on("ajax:after", "form", function(event, element) {
168
+ var inputs = element.select("input[type=submit][disabled=true][data-disable-with]");
169
+ inputs.each(function(input) {
170
+ input.value = input.readAttribute('data-original-value');
171
+ input.removeAttribute('data-original-value');
172
+ input.disabled = false;
173
+ });
174
+ });
175
+
176
+ Ajax.Responders.register({
177
+ onCreate: function(request) {
178
+ var csrf_meta_tag = $$('meta[name=csrf-token]')[0];
179
+
180
+ if (csrf_meta_tag) {
181
+ var header = 'X-CSRF-Token',
182
+ token = csrf_meta_tag.readAttribute('content');
183
+
184
+ if (!request.options.requestHeaders) {
185
+ request.options.requestHeaders = {};
186
+ }
187
+ request.options.requestHeaders[header] = token;
188
+ }
189
+ }
190
+ });
191
+ })();
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,33 @@
1
+ require 'bundler'
2
+ begin
3
+ Bundler.setup
4
+ rescue Bundler::BundlerError => e
5
+ $stderr.puts e.message
6
+ $stderr.puts "Run `bundle install` to install missing gems"
7
+ exit e.status_code
8
+ end
9
+
10
+ require 'action_view'
11
+ require 'mustache'
12
+
13
+ module ActionView
14
+ class Template
15
+ module Foo
16
+ end
17
+ end
18
+ class TemplateFoo
19
+ end
20
+ end
21
+
22
+ require 'stache'
23
+ ENV["RAILS_ENV"] ||= 'test'
24
+ require 'dummy/config/environment'
25
+ require 'rspec/rails'
26
+
27
+ # Requires supporting files with custom matchers and macros, etc,
28
+ # in ./support/ and its subdirectories.
29
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
30
+
31
+ RSpec.configure do |config|
32
+
33
+ end
@@ -0,0 +1,21 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ class MyViewContext
4
+ include ActionView::Helpers::TagHelper
5
+ include Stache::AssetHelper
6
+ end
7
+
8
+ describe Stache::AssetHelper do
9
+ def helper
10
+ @helper ||= MyViewContext.new
11
+ end
12
+
13
+ describe "template_include_tag" do
14
+ it "renders a script tag with the template contents" do
15
+ File.stub!(:open).with(Rails.root.join("app/views/widgets/_oh_herro.html.mustache"), "rb").
16
+ and_return(StringIO.new("{{ awyeah }}"))
17
+
18
+ helper.template_include_tag("widgets/oh_herro").should == "<script id=\"oh_herro_template\" type=\"text/html\">{{ awyeah }}</script>"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,36 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "Stache::Config" do
4
+ describe "attributes" do
5
+ before do
6
+ Stache.send(:instance_variable_set, :@template_base_path, nil)
7
+ end
8
+ [:template_base_path, :template_extension, :shared_path].each do |attr|
9
+ it "sets up an attribute named #{attr.to_s}" do
10
+ Stache.should respond_to(attr)
11
+ Stache.should respond_to("#{attr}=")
12
+ end
13
+
14
+ it "sets up a default value for #{attr}" do
15
+ Stache.send(attr).should_not be_nil
16
+ Stache.send(attr).should == if attr == :template_base_path
17
+ ::Rails.root.join('app', 'templates')
18
+ elsif attr == :template_extension
19
+ "html.mustache"
20
+ elsif attr == :shared_path
21
+ ::Rails.root.join('app', 'templates', 'shared')
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ describe ".configure" do
28
+ it "yields self to the block as a convienence to future refactoring" do
29
+ Stache.configure do |config|
30
+ config.template_base_path = "/dev/null"
31
+ end
32
+ Stache.template_base_path.should == "/dev/null"
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,29 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Stache::Handler do
4
+ # ERBHandler = ActionView::Template::Handlers::ERB.new
5
+ # def new_template(body = "<%= hello %>", details = {})
6
+ # ActionView::Template.new(body, "hello template", ERBHandler, {:virtual_path => "hello"}.merge!(details))
7
+ # end
8
+ before do
9
+ @template = ActionView::Template.new("{{body}}", "hello mustache", Stache::Handler, { :virtual_path => "hello_world"})
10
+ @handler = Stache::Handler.new(@template)
11
+ end
12
+
13
+ describe "#mustache_class_from_template" do
14
+ it "returns the appropriate mustache class" do
15
+ class HelloWorld < Stache::View; end
16
+ @handler.mustache_class_from_template(@template).should == HelloWorld
17
+ Object.send(:remove_const, :HelloWorld)
18
+ end
19
+ it "is clever about folders and such" do
20
+ @template.stub!(:virtual_path).and_return("profiles/index")
21
+ module Profiles; class Index < Stache::View; end; end
22
+ @handler.mustache_class_from_template(@template).should == Profiles::Index
23
+ Object.send(:remove_const, :Profiles)
24
+ end
25
+ it "retuns Stache::View if it can't find none" do
26
+ @handler.mustache_class_from_template(@template).should == Stache::View
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,17 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Stache::Util do
4
+ describe ".av_template_class" do
5
+ it "returns ActionView::Template::{Foo} if such a thing exists" do
6
+ Stache::Util.av_template_class("Foo").should == ActionView::Template::Foo
7
+ end
8
+ it "returns ActionView::TemplateFoo otherwise" do
9
+ ActionView::Template.should_receive(:const_defined?).and_return(false)
10
+ Stache::Util.av_template_class("Foo").should == ActionView::TemplateFoo
11
+ end
12
+ end
13
+
14
+ describe ".needs_compilable?" do
15
+ pending "need to figure out some way to test this across different rails versions..."
16
+ end
17
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ module Stache
4
+ describe View do
5
+ it "is just a thin wrapper around Mustache" do
6
+ View.new.should be_a_kind_of(Mustache)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe Stache do
4
+ # ...
5
+ end
data/stache.gemspec ADDED
@@ -0,0 +1,38 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+ require 'stache/version'
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'stache'
6
+ s.version = Stache::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.date = '2011-08-12'
9
+ s.authors = ['Matt Wilson']
10
+ s.email = 'mhw@hypomodern.com'
11
+ s.homepage = 'http://github.com/agoragames/stache'
12
+ s.summary = %Q{Configurable Mustache Handler and Helpers for Rails}
13
+ s.description = %Q{A rails 3.x compatible template handler, configurable.}
14
+ s.extra_rdoc_files = [
15
+ 'LICENSE',
16
+ 'README.md',
17
+ ]
18
+
19
+ s.required_rubygems_version = Gem::Requirement.new('>= 1.3.7')
20
+ s.rubygems_version = '1.3.7'
21
+ s.specification_version = 3
22
+
23
+ s.files = `git ls-files`.split("\n")
24
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
25
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
26
+ s.require_paths = ['lib']
27
+
28
+ s.add_dependency 'mustache'
29
+ s.add_dependency 'rails', '~>3.1.0.rc4'
30
+
31
+ s.add_development_dependency 'rspec'
32
+ s.add_development_dependency 'rspec-rails'
33
+ s.add_development_dependency 'bundler'
34
+ s.add_development_dependency 'bueller'
35
+ s.add_development_dependency 'rake'
36
+ s.add_development_dependency 'rcov'
37
+ end
38
+
metadata ADDED
@@ -0,0 +1,252 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: stache
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Matt Wilson
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-08-12 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: mustache
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ type: :runtime
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: rails
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: 3.1.0.rc4
35
+ type: :runtime
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: rspec
39
+ prerelease: false
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ type: :development
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: rspec-rails
50
+ prerelease: false
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: "0"
57
+ type: :development
58
+ version_requirements: *id004
59
+ - !ruby/object:Gem::Dependency
60
+ name: bundler
61
+ prerelease: false
62
+ requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ type: :development
69
+ version_requirements: *id005
70
+ - !ruby/object:Gem::Dependency
71
+ name: bueller
72
+ prerelease: false
73
+ requirement: &id006 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: "0"
79
+ type: :development
80
+ version_requirements: *id006
81
+ - !ruby/object:Gem::Dependency
82
+ name: rake
83
+ prerelease: false
84
+ requirement: &id007 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ type: :development
91
+ version_requirements: *id007
92
+ - !ruby/object:Gem::Dependency
93
+ name: rcov
94
+ prerelease: false
95
+ requirement: &id008 !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: "0"
101
+ type: :development
102
+ version_requirements: *id008
103
+ description: A rails 3.x compatible template handler, configurable.
104
+ email: mhw@hypomodern.com
105
+ executables: []
106
+
107
+ extensions: []
108
+
109
+ extra_rdoc_files:
110
+ - LICENSE
111
+ - README.md
112
+ files:
113
+ - .document
114
+ - .gitignore
115
+ - .rspec
116
+ - .rvmrc
117
+ - Gemfile
118
+ - LICENSE
119
+ - README.md
120
+ - Rakefile
121
+ - lib/stache.rb
122
+ - lib/stache/asset_helper.rb
123
+ - lib/stache/config.rb
124
+ - lib/stache/handler.rb
125
+ - lib/stache/util.rb
126
+ - lib/stache/version.rb
127
+ - lib/stache/view.rb
128
+ - spec/controllers/stache_controller_spec.rb
129
+ - spec/dummy/Rakefile
130
+ - spec/dummy/app/controllers/application_controller.rb
131
+ - spec/dummy/app/controllers/stache_controller.rb
132
+ - spec/dummy/app/helpers/application_helper.rb
133
+ - spec/dummy/app/views/layouts/application.html.erb
134
+ - spec/dummy/app/views/stache/_eaten_by_a.html.mustache
135
+ - spec/dummy/app/views/stache/index.html.mustache
136
+ - spec/dummy/app/views/stache/with_partials.html.mustache
137
+ - spec/dummy/config.ru
138
+ - spec/dummy/config/application.rb
139
+ - spec/dummy/config/boot.rb
140
+ - spec/dummy/config/database.yml
141
+ - spec/dummy/config/environment.rb
142
+ - spec/dummy/config/environments/development.rb
143
+ - spec/dummy/config/environments/production.rb
144
+ - spec/dummy/config/environments/test.rb
145
+ - spec/dummy/config/initializers/backtrace_silencers.rb
146
+ - spec/dummy/config/initializers/inflections.rb
147
+ - spec/dummy/config/initializers/mime_types.rb
148
+ - spec/dummy/config/initializers/secret_token.rb
149
+ - spec/dummy/config/initializers/session_store.rb
150
+ - spec/dummy/config/initializers/stache.rb
151
+ - spec/dummy/config/locales/en.yml
152
+ - spec/dummy/config/routes.rb
153
+ - spec/dummy/log/development.log
154
+ - spec/dummy/log/production.log
155
+ - spec/dummy/log/server.log
156
+ - spec/dummy/log/test.log
157
+ - spec/dummy/public/404.html
158
+ - spec/dummy/public/422.html
159
+ - spec/dummy/public/500.html
160
+ - spec/dummy/public/favicon.ico
161
+ - spec/dummy/public/javascripts/application.js
162
+ - spec/dummy/public/javascripts/controls.js
163
+ - spec/dummy/public/javascripts/dragdrop.js
164
+ - spec/dummy/public/javascripts/effects.js
165
+ - spec/dummy/public/javascripts/prototype.js
166
+ - spec/dummy/public/javascripts/rails.js
167
+ - spec/dummy/public/stylesheets/.gitkeep
168
+ - spec/dummy/script/rails
169
+ - spec/spec_helper.rb
170
+ - spec/stache/asset_helper_spec.rb
171
+ - spec/stache/config_spec.rb
172
+ - spec/stache/handler_spec.rb
173
+ - spec/stache/util_spec.rb
174
+ - spec/stache/view_spec.rb
175
+ - spec/stache_spec.rb
176
+ - stache.gemspec
177
+ homepage: http://github.com/agoragames/stache
178
+ licenses: []
179
+
180
+ post_install_message:
181
+ rdoc_options: []
182
+
183
+ require_paths:
184
+ - lib
185
+ required_ruby_version: !ruby/object:Gem::Requirement
186
+ none: false
187
+ requirements:
188
+ - - ">="
189
+ - !ruby/object:Gem::Version
190
+ version: "0"
191
+ required_rubygems_version: !ruby/object:Gem::Requirement
192
+ none: false
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: 1.3.7
197
+ requirements: []
198
+
199
+ rubyforge_project:
200
+ rubygems_version: 1.8.5
201
+ signing_key:
202
+ specification_version: 3
203
+ summary: Configurable Mustache Handler and Helpers for Rails
204
+ test_files:
205
+ - spec/controllers/stache_controller_spec.rb
206
+ - spec/dummy/Rakefile
207
+ - spec/dummy/app/controllers/application_controller.rb
208
+ - spec/dummy/app/controllers/stache_controller.rb
209
+ - spec/dummy/app/helpers/application_helper.rb
210
+ - spec/dummy/app/views/layouts/application.html.erb
211
+ - spec/dummy/app/views/stache/_eaten_by_a.html.mustache
212
+ - spec/dummy/app/views/stache/index.html.mustache
213
+ - spec/dummy/app/views/stache/with_partials.html.mustache
214
+ - spec/dummy/config.ru
215
+ - spec/dummy/config/application.rb
216
+ - spec/dummy/config/boot.rb
217
+ - spec/dummy/config/database.yml
218
+ - spec/dummy/config/environment.rb
219
+ - spec/dummy/config/environments/development.rb
220
+ - spec/dummy/config/environments/production.rb
221
+ - spec/dummy/config/environments/test.rb
222
+ - spec/dummy/config/initializers/backtrace_silencers.rb
223
+ - spec/dummy/config/initializers/inflections.rb
224
+ - spec/dummy/config/initializers/mime_types.rb
225
+ - spec/dummy/config/initializers/secret_token.rb
226
+ - spec/dummy/config/initializers/session_store.rb
227
+ - spec/dummy/config/initializers/stache.rb
228
+ - spec/dummy/config/locales/en.yml
229
+ - spec/dummy/config/routes.rb
230
+ - spec/dummy/log/development.log
231
+ - spec/dummy/log/production.log
232
+ - spec/dummy/log/server.log
233
+ - spec/dummy/log/test.log
234
+ - spec/dummy/public/404.html
235
+ - spec/dummy/public/422.html
236
+ - spec/dummy/public/500.html
237
+ - spec/dummy/public/favicon.ico
238
+ - spec/dummy/public/javascripts/application.js
239
+ - spec/dummy/public/javascripts/controls.js
240
+ - spec/dummy/public/javascripts/dragdrop.js
241
+ - spec/dummy/public/javascripts/effects.js
242
+ - spec/dummy/public/javascripts/prototype.js
243
+ - spec/dummy/public/javascripts/rails.js
244
+ - spec/dummy/public/stylesheets/.gitkeep
245
+ - spec/dummy/script/rails
246
+ - spec/spec_helper.rb
247
+ - spec/stache/asset_helper_spec.rb
248
+ - spec/stache/config_spec.rb
249
+ - spec/stache/handler_spec.rb
250
+ - spec/stache/util_spec.rb
251
+ - spec/stache/view_spec.rb
252
+ - spec/stache_spec.rb