mustache 0.99.8 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +53 -67
  3. data/Rakefile +4 -12
  4. data/lib/mustache.rb +67 -73
  5. data/lib/mustache/context.rb +57 -48
  6. data/lib/mustache/context_miss.rb +14 -0
  7. data/lib/mustache/generator.rb +5 -1
  8. data/lib/mustache/parser.rb +39 -14
  9. data/lib/mustache/settings.rb +1 -2
  10. data/lib/mustache/template.rb +37 -18
  11. data/lib/mustache/version.rb +1 -1
  12. data/test/autoloading_test.rb +2 -3
  13. data/test/fixtures/comments.rb +0 -1
  14. data/test/fixtures/complex_view.rb +0 -1
  15. data/test/fixtures/crazy_recursive.rb +0 -1
  16. data/test/fixtures/delimiters.rb +0 -1
  17. data/test/fixtures/dot_notation.rb +0 -1
  18. data/test/fixtures/double_section.rb +0 -1
  19. data/test/fixtures/inverted_section.rb +0 -1
  20. data/test/fixtures/lambda.rb +0 -1
  21. data/test/fixtures/liberal.rb +0 -1
  22. data/test/fixtures/method_missing.rb +0 -1
  23. data/test/fixtures/namespaced.rb +0 -1
  24. data/test/fixtures/nested_objects.rb +0 -1
  25. data/test/fixtures/partial_with_module.rb +0 -1
  26. data/test/fixtures/passenger.rb +0 -1
  27. data/test/fixtures/recursive.rb +0 -1
  28. data/test/fixtures/simple.rb +0 -1
  29. data/test/fixtures/template_partial.rb +0 -1
  30. data/test/fixtures/unescaped.rb +0 -1
  31. data/test/helper.rb +3 -2
  32. data/test/mustache_test.rb +13 -13
  33. data/test/parser_test.rb +2 -3
  34. data/test/partial_test.rb +2 -3
  35. data/test/spec_test.rb +2 -2
  36. data/test/template_test.rb +3 -4
  37. metadata +17 -19
  38. data/lib/mustache/sinatra.rb +0 -205
  39. data/lib/rack/bug/panels/mustache_panel.rb +0 -81
  40. data/lib/rack/bug/panels/mustache_panel/mustache_extension.rb +0 -27
  41. data/lib/rack/bug/panels/mustache_panel/view.mustache +0 -46
@@ -1,81 +0,0 @@
1
- module Rack
2
- module Bug
3
- # MustachePanel is a Rack::Bug panel which tracks the time spent rendering
4
- # Mustache views as well as all the variables accessed during view
5
- # rendering.
6
- #
7
- # It can be used to track down slow partials and ensure you're only
8
- # generating data you need.
9
- #
10
- # Also, it's fun.
11
- class MustachePanel < Panel
12
- require "rack/bug/panels/mustache_panel/mustache_extension"
13
-
14
- # The view is responsible for rendering our panel. While Rack::Bug
15
- # takes care of the nav, the content rendered by View is used for
16
- # the panel itself.
17
- class View < Mustache
18
- self.path = ::File.dirname(__FILE__) + '/mustache_panel'
19
-
20
- # We track the render times of all the Mustache views on this
21
- # page load.
22
- def times
23
- MustachePanel.times.map do |key, value|
24
- { :key => key, :value => value }
25
- end
26
- end
27
-
28
- # Any variables used in this page load are collected and displayed.
29
- def variables
30
- vars = MustachePanel.variables.sort_by { |key, _| key.to_s }
31
- vars.map do |key, value|
32
- # Arrays can get too huge. Just show the first 10 to give you
33
- # some idea.
34
- if value.is_a?(Array) && value.size > 10
35
- size = value.size
36
- value = value.first(10)
37
- value << "...and #{size - 10} more"
38
- end
39
-
40
- { :key => key, :value => value.inspect }
41
- end
42
- end
43
- end
44
-
45
- # Clear out our page load-specific variables.
46
- def self.reset
47
- Thread.current["rack.bug.mustache.times"] = {}
48
- Thread.current["rack.bug.mustache.vars"] = {}
49
- end
50
-
51
- # The view render times for this page load
52
- def self.times
53
- Thread.current["rack.bug.mustache.times"] ||= {}
54
- end
55
-
56
- # The variables used on this page load
57
- def self.variables
58
- Thread.current["rack.bug.mustache.vars"] ||= {}
59
- end
60
-
61
- # The name of this Rack::Bug panel
62
- def name
63
- "mustache"
64
- end
65
-
66
- # The string used for our tab in Rack::Bug's navigation bar
67
- def heading
68
- "{{%.2fms}}" % self.class.times.values.reduce(0.0) do |sum, obj|
69
- sum + obj
70
- end
71
- end
72
-
73
- # The content of our Rack::Bug panel
74
- def content
75
- View.render
76
- ensure
77
- self.class.reset
78
- end
79
- end
80
- end
81
- end
@@ -1,27 +0,0 @@
1
- if defined? Mustache
2
- require 'benchmark'
3
-
4
- Mustache.class_eval do
5
- alias_method :real_render, :render
6
-
7
- def render(*args, &block)
8
- out = ''
9
- Rack::Bug::MustachePanel.times[self.class.name] = Benchmark.realtime do
10
- out = real_render(*args, &block)
11
- end
12
- out
13
- end
14
-
15
- alias_method :to_html, :render
16
- alias_method :to_text, :render
17
- end
18
-
19
- Mustache::Context.class_eval do
20
- alias_method :real_get, :[]
21
-
22
- def [](name)
23
- return real_get(name) if name == :yield || !@mustache.respond_to?(name)
24
- Rack::Bug::MustachePanel.variables[name] = real_get(name)
25
- end
26
- end
27
- end
@@ -1,46 +0,0 @@
1
- <script type="text/javascript">
2
- $(function() {
3
- $('#mustache_variables .variable').each(function() {
4
- var el = $(this)
5
- if (el.text().length > 500) {
6
- var txt = el.text()
7
- el.click(function() {
8
- $(this).text(txt)
9
- }).text( el.text().slice(0, 500) + '...' )
10
- }
11
- })
12
- });
13
- </script>
14
-
15
- <h3>Render Times</h3>
16
-
17
- <table>
18
- <tr>
19
- <th>View</th>
20
- <th>Render Time</th>
21
- </tr>
22
-
23
- {{# times }}
24
- <tr>
25
- <td>{{ key }}</td>
26
- <td>{{ value }}</td>
27
- </tr>
28
- {{/ times }}
29
- </table>
30
-
31
- <h3>Variables</h3>
32
-
33
- <table id="mustache_variables">
34
- <tr>
35
- <th>Name</th>
36
- <th>Value</th>
37
- </tr>
38
-
39
- {{# variables }}
40
- <tr>
41
- <td>{{ key }}</td>
42
- <td class="variable">{{ value }}</td>
43
- </tr>
44
- {{/ variables }}
45
- </table>
46
-