mustache 0.99.5 → 0.99.6

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.
@@ -0,0 +1 @@
1
+ {{first-name}} {{middle_name!}} {{lastName?}}
@@ -0,0 +1,22 @@
1
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
2
+ require 'mustache'
3
+
4
+ class Liberal < Mustache
5
+ self.path = File.dirname(__FILE__)
6
+
7
+ def first_name
8
+ "kevin"
9
+ end
10
+
11
+ def middle_name!
12
+ 'j'
13
+ end
14
+
15
+ def lastName?
16
+ 'sheurs'
17
+ end
18
+ end
19
+
20
+ if $0 == __FILE__
21
+ puts Liberal.to_html
22
+ end
@@ -0,0 +1,25 @@
1
+ Hi there {{yourname}}. Your home directory is {{HOME}}.
2
+
3
+ {{#friend}}
4
+ Your friend is named {{name}}
5
+ {{#morr}}
6
+ Hey {{word}} {{up}} {{{awesomesauce}}}.
7
+ {{/morr}}
8
+ {{^morr}}
9
+ Booooo. {{hiss}}
10
+ {{/morr}}
11
+ {{notinmorr}}
12
+ {{> partial1}}
13
+ {{/friend}}
14
+ {{^friend}}
15
+ You have no friends, {{person}}. You suck.
16
+ {{/friend}}
17
+
18
+ {{> partial2}}
19
+ {{! comments are awesome }}
20
+
21
+ {{={% %}=}}
22
+
23
+ {%love%}
24
+ {%={{ }}=%}
25
+ {{{triplestash}}}
@@ -344,6 +344,63 @@ data
344
344
  assert_equal ' <li>1234</li> ', instance.render
345
345
  end
346
346
 
347
+ def test_enumerable_sections_enumerate_mustache_enumerables
348
+ person = Struct.new(:name, :age)
349
+ people_array = []
350
+ people_array << person.new('Juliet', 13)
351
+ people_array << person.new('Romeo', 16)
352
+ people = Class.new do
353
+ include Enumerable
354
+ include Mustache::Enumerable
355
+
356
+ def initialize array
357
+ @people = array
358
+ end
359
+
360
+ def each *args, &block
361
+ @people.each *args, &block
362
+ end
363
+ end
364
+
365
+ view = Mustache.new
366
+ view[:people] = people.new(people_array)
367
+ view.template = <<-TEMPLATE
368
+ {{#people}}
369
+ {{name}} is {{age}}
370
+ {{/people}}
371
+ TEMPLATE
372
+ assert_equal <<-EXPECTED, view.render
373
+ Juliet is 13
374
+ Romeo is 16
375
+ EXPECTED
376
+ end
377
+
378
+ def test_enumerable_sections_do_not_enumerate_untagged_enumerables
379
+ people = Struct.new(:first, :second, :third)
380
+ person = Struct.new(:name, :age)
381
+
382
+ view = Mustache.new
383
+ view[:people] = people.new(person.new("Mercutio", 17), person.new("Tybalt", 20), person.new("Benvolio", 15))
384
+ view.template = <<-TEMPLATE
385
+ {{#people}}
386
+ {{#first}}
387
+ {{name}} is {{age}}
388
+ {{/first}}
389
+ {{#second}}
390
+ {{name}} is {{age}}
391
+ {{/second}}
392
+ {{#third}}
393
+ {{name}} is {{age}}
394
+ {{/third}}
395
+ {{/people}}
396
+ TEMPLATE
397
+ assert_equal <<-EXPECTED, view.render
398
+ Mercutio is 17
399
+ Tybalt is 20
400
+ Benvolio is 15
401
+ EXPECTED
402
+ end
403
+
347
404
  def test_not_found_in_context_renders_empty_string
348
405
  instance = Mustache.new
349
406
  instance.template = '{{#list}} <li>{{item}}</li> {{/list}}'
@@ -454,6 +511,12 @@ data
454
511
  assert_equal "chris j strath", Mustache.render(template, hash)
455
512
  end
456
513
 
514
+ def test_liberal_tag_names_in_class
515
+ assert_equal <<-end_liberal, Liberal.render
516
+ kevin j sheurs
517
+ end_liberal
518
+ end
519
+
457
520
  def test_nested_sections_same_names
458
521
  template = <<template
459
522
  {{#items}}
@@ -614,7 +677,8 @@ text
614
677
  assert_equal value, tmpl.send(attr)
615
678
  end
616
679
  end
617
- def test_array_of_arrays
680
+
681
+ def test_array_of_arrays
618
682
  template = <<template
619
683
  {{#items}}
620
684
  start
@@ -651,7 +715,8 @@ start
651
715
  end
652
716
  expected
653
717
  end
654
- def test_indentation_again
718
+
719
+ def test_indentation_again
655
720
  template = <<template
656
721
  SELECT
657
722
  {{#cols}}
@@ -2,6 +2,21 @@ $LOAD_PATH.unshift File.dirname(__FILE__)
2
2
  require 'helper'
3
3
 
4
4
  class ParserTest < Test::Unit::TestCase
5
+
6
+ def test_parser_extension
7
+ parser = Mustache::Parser.new
8
+ parser.instance_variable_set :@result, 'zomg'
9
+ Mustache::Parser.add_type(:'@', :'$') do |*args|
10
+ [:mustache, :at_sign, @result, *args]
11
+ end
12
+ assert_match Mustache::Parser.valid_types, '@'
13
+ assert_match Mustache::Parser.valid_types, '$'
14
+ assert_equal [:mustache, :at_sign, 'zomg', 1, 2, 3],
15
+ parser.send('scan_tag_@', 1, 2, 3)
16
+ assert_equal [:mustache, :at_sign, 'zomg', 1, 2, 3],
17
+ parser.send('scan_tag_$', 1, 2, 3)
18
+ end
19
+
5
20
  def test_parser
6
21
  lexer = Mustache::Parser.new
7
22
  tokens = lexer.compile(<<-EOF)
@@ -87,7 +87,7 @@ Welcome
87
87
  end_partial
88
88
  end
89
89
 
90
- def test_recursive_paritals
90
+ def test_recursive_partials
91
91
  assert_equal <<-end_partial, Recursive.render
92
92
  It works!
93
93
  end_partial
@@ -3,8 +3,12 @@ require 'tmpdir'
3
3
  require 'yaml'
4
4
  require 'test/unit'
5
5
 
6
- # Automatically process !code types into Proc objects
7
- YAML::add_builtin_type('code') { |_, val| eval(val['ruby']) }
6
+ # Calls appropriate method on YAML. See: https://gist.github.com/tenderlove/958999ab4240b93bd3cd
7
+ if RUBY_VERSION > "1.8"
8
+ YAML.add_domain_type(nil, 'code') { |_, val| eval(val['ruby']) }
9
+ else
10
+ YAML.add_builtin_type('code') { |_, val| eval(val['ruby']) }
11
+ end
8
12
 
9
13
  # A simple base class for Mustache specs.
10
14
  # Creates a partials directory, then points a (dynamic) subclass of Mustache at
@@ -18,3 +18,36 @@ class TemplateTest < Test::Unit::TestCase
18
18
  assert_equal [:multi, [:static, "bar"]], Mustache::Template.new("foo").tokens("bar")
19
19
  end
20
20
  end
21
+
22
+ class TemplateTest2 < Test::Unit::TestCase
23
+ def setup
24
+ @@template_text ||= File.read(File.dirname(__FILE__) + "/fixtures/simply_complicated.mustache")
25
+ @template = Mustache::Template.new(@@template_text)
26
+ end
27
+
28
+ def test_tags
29
+ assert_equal [
30
+ "yourname",
31
+ "HOME",
32
+ "friend.name",
33
+ "friend.morr.word",
34
+ "friend.morr.up",
35
+ "friend.morr.awesomesauce",
36
+ "friend.morr.hiss",
37
+ "friend.notinmorr",
38
+ "friend.person",
39
+ "love",
40
+ "triplestash"
41
+ ], @template.tags
42
+ end
43
+
44
+ def test_partials
45
+ assert_equal ["partial1", "partial2"], @template.partials
46
+ end
47
+
48
+ def test_sections
49
+ assert_equal ["friend", "friend.morr"], @template.sections
50
+ end
51
+ end
52
+
53
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mustache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.99.5
4
+ version: 0.99.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Wanstrath
@@ -10,8 +10,78 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-11-11 00:00:00.000000000 Z
14
- dependencies: []
13
+ date: 2014-07-25 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: bundler
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.6'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '1.6'
29
+ - !ruby/object:Gem::Dependency
30
+ name: rake
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '10.3'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '10.3'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rdoc
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '4.1'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '4.1'
57
+ - !ruby/object:Gem::Dependency
58
+ name: ronn
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '0.7'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '0.7'
71
+ - !ruby/object:Gem::Dependency
72
+ name: turn
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '0.9'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '0.9'
15
85
  description: |
16
86
  Inspired by ctemplate, Mustache is a framework-agnostic way to render
17
87
  logic-free views.
@@ -30,21 +100,23 @@ executables:
30
100
  extensions: []
31
101
  extra_rdoc_files: []
32
102
  files:
103
+ - LICENSE
33
104
  - README.md
34
105
  - Rakefile
35
- - LICENSE
106
+ - bin/mustache
107
+ - lib/mustache.rb
108
+ - lib/mustache/blah.rb
36
109
  - lib/mustache/context.rb
110
+ - lib/mustache/enumerable.rb
37
111
  - lib/mustache/generator.rb
38
112
  - lib/mustache/parser.rb
39
113
  - lib/mustache/settings.rb
40
114
  - lib/mustache/sinatra.rb
41
115
  - lib/mustache/template.rb
42
116
  - lib/mustache/version.rb
43
- - lib/mustache.rb
117
+ - lib/rack/bug/panels/mustache_panel.rb
44
118
  - lib/rack/bug/panels/mustache_panel/mustache_extension.rb
45
119
  - lib/rack/bug/panels/mustache_panel/view.mustache
46
- - lib/rack/bug/panels/mustache_panel.rb
47
- - bin/mustache
48
120
  - man/mustache.1
49
121
  - man/mustache.1.html
50
122
  - man/mustache.1.ron
@@ -72,6 +144,8 @@ files:
72
144
  - test/fixtures/inverted_section.rb
73
145
  - test/fixtures/lambda.mustache
74
146
  - test/fixtures/lambda.rb
147
+ - test/fixtures/liberal.mustache
148
+ - test/fixtures/liberal.rb
75
149
  - test/fixtures/method_missing.rb
76
150
  - test/fixtures/namespaced.mustache
77
151
  - test/fixtures/namespaced.rb
@@ -86,6 +160,7 @@ files:
86
160
  - test/fixtures/recursive.rb
87
161
  - test/fixtures/simple.mustache
88
162
  - test/fixtures/simple.rb
163
+ - test/fixtures/simply_complicated.mustache
89
164
  - test/fixtures/template_partial.mustache
90
165
  - test/fixtures/template_partial.rb
91
166
  - test/fixtures/template_partial.txt
@@ -100,7 +175,8 @@ files:
100
175
  - test/spec_test.rb
101
176
  - test/template_test.rb
102
177
  homepage: http://github.com/defunkt/mustache
103
- licenses: []
178
+ licenses:
179
+ - MIT
104
180
  metadata: {}
105
181
  post_install_message:
106
182
  rdoc_options: []
@@ -108,17 +184,17 @@ require_paths:
108
184
  - lib
109
185
  required_ruby_version: !ruby/object:Gem::Requirement
110
186
  requirements:
111
- - - '>='
187
+ - - ">="
112
188
  - !ruby/object:Gem::Version
113
189
  version: '0'
114
190
  required_rubygems_version: !ruby/object:Gem::Requirement
115
191
  requirements:
116
- - - '>='
192
+ - - ">="
117
193
  - !ruby/object:Gem::Version
118
194
  version: '0'
119
195
  requirements: []
120
196
  rubyforge_project:
121
- rubygems_version: 2.0.3
197
+ rubygems_version: 2.2.2
122
198
  signing_key:
123
199
  specification_version: 4
124
200
  summary: Mustache is a framework-agnostic way to render logic-free views.