porthole 0.99.4
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.
- data/LICENSE +20 -0
- data/README.md +415 -0
- data/Rakefile +89 -0
- data/bin/porthole +94 -0
- data/lib/porthole.rb +304 -0
- data/lib/porthole/context.rb +142 -0
- data/lib/porthole/generator.rb +195 -0
- data/lib/porthole/parser.rb +263 -0
- data/lib/porthole/settings.rb +226 -0
- data/lib/porthole/sinatra.rb +205 -0
- data/lib/porthole/template.rb +58 -0
- data/lib/porthole/version.rb +3 -0
- data/lib/rack/bug/panels/mustache_panel.rb +81 -0
- data/lib/rack/bug/panels/mustache_panel/mustache_extension.rb +27 -0
- data/lib/rack/bug/panels/mustache_panel/view.mustache +46 -0
- data/man/porthole.1 +165 -0
- data/man/porthole.1.html +213 -0
- data/man/porthole.1.ron +127 -0
- data/man/porthole.5 +539 -0
- data/man/porthole.5.html +422 -0
- data/man/porthole.5.ron +324 -0
- data/test/autoloading_test.rb +56 -0
- data/test/fixtures/comments.porthole +1 -0
- data/test/fixtures/comments.rb +14 -0
- data/test/fixtures/complex_view.porthole +17 -0
- data/test/fixtures/complex_view.rb +34 -0
- data/test/fixtures/crazy_recursive.porthole +9 -0
- data/test/fixtures/crazy_recursive.rb +31 -0
- data/test/fixtures/delimiters.porthole +8 -0
- data/test/fixtures/delimiters.rb +23 -0
- data/test/fixtures/dot_notation.porthole +10 -0
- data/test/fixtures/dot_notation.rb +25 -0
- data/test/fixtures/double_section.porthole +7 -0
- data/test/fixtures/double_section.rb +14 -0
- data/test/fixtures/escaped.porthole +1 -0
- data/test/fixtures/escaped.rb +14 -0
- data/test/fixtures/inner_partial.porthole +1 -0
- data/test/fixtures/inner_partial.txt +1 -0
- data/test/fixtures/inverted_section.porthole +7 -0
- data/test/fixtures/inverted_section.rb +14 -0
- data/test/fixtures/lambda.porthole +7 -0
- data/test/fixtures/lambda.rb +31 -0
- data/test/fixtures/method_missing.rb +19 -0
- data/test/fixtures/namespaced.porthole +1 -0
- data/test/fixtures/namespaced.rb +25 -0
- data/test/fixtures/nested_objects.porthole +17 -0
- data/test/fixtures/nested_objects.rb +35 -0
- data/test/fixtures/node.porthole +8 -0
- data/test/fixtures/partial_with_module.porthole +4 -0
- data/test/fixtures/partial_with_module.rb +37 -0
- data/test/fixtures/passenger.conf +5 -0
- data/test/fixtures/passenger.rb +27 -0
- data/test/fixtures/recursive.porthole +4 -0
- data/test/fixtures/recursive.rb +14 -0
- data/test/fixtures/simple.porthole +5 -0
- data/test/fixtures/simple.rb +26 -0
- data/test/fixtures/template_partial.porthole +2 -0
- data/test/fixtures/template_partial.rb +18 -0
- data/test/fixtures/template_partial.txt +4 -0
- data/test/fixtures/unescaped.porthole +1 -0
- data/test/fixtures/unescaped.rb +14 -0
- data/test/fixtures/utf8.porthole +3 -0
- data/test/fixtures/utf8_partial.porthole +1 -0
- data/test/helper.rb +7 -0
- data/test/parser_test.rb +78 -0
- data/test/partial_test.rb +168 -0
- data/test/porthole_test.rb +677 -0
- data/test/spec_test.rb +68 -0
- data/test/template_test.rb +20 -0
- metadata +127 -0
data/test/spec_test.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'porthole'
|
2
|
+
require 'tmpdir'
|
3
|
+
require 'yaml'
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
# Automatically process !code types into Proc objects
|
7
|
+
YAML::add_builtin_type('code') { |_, val| eval(val['ruby']) }
|
8
|
+
|
9
|
+
# A simple base class for Porthole specs.
|
10
|
+
# Creates a partials directory, then points a (dynamic) subclass of Porthole at
|
11
|
+
# that directory before each test; the partials directory is destroyed after
|
12
|
+
# each test is run.
|
13
|
+
class PortholeSpec < Test::Unit::TestCase
|
14
|
+
def setup
|
15
|
+
@partials = File.join(File.dirname(__FILE__), 'partials')
|
16
|
+
Dir.mkdir(@partials)
|
17
|
+
|
18
|
+
@Porthole = Class.new(Porthole)
|
19
|
+
@Porthole.template_path = @partials
|
20
|
+
end
|
21
|
+
|
22
|
+
def teardown
|
23
|
+
Dir[File.join(@partials, '*')].each { |file| File.delete(file) }
|
24
|
+
Dir.rmdir(@partials)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Extracts the partials from the test, and dumps them into the partials
|
28
|
+
# directory for inclusion.
|
29
|
+
def setup_partials(test)
|
30
|
+
(test['partials'] || {}).each do |name, content|
|
31
|
+
File.open(File.join(@partials, "#{name}.porthole"), 'w') do |f|
|
32
|
+
f.print(content)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Asserts equality between the rendered template and the expected value,
|
38
|
+
# printing additional context data on failure.
|
39
|
+
def assert_porthole_spec(test)
|
40
|
+
actual = @Porthole.render(test['template'], test['data'])
|
41
|
+
|
42
|
+
assert_equal test['expected'], actual, "" <<
|
43
|
+
"#{ test['desc'] }\n" <<
|
44
|
+
"Data: #{ test['data'].inspect }\n" <<
|
45
|
+
"Template: #{ test['template'].inspect }\n" <<
|
46
|
+
"Partials: #{ (test['partials'] || {}).inspect }\n"
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_noop; assert(true); end
|
50
|
+
end
|
51
|
+
|
52
|
+
spec_files = File.join(File.dirname(__FILE__), '..', 'ext', 'spec', 'specs', '*.yml')
|
53
|
+
Dir[spec_files].each do |file|
|
54
|
+
spec = YAML.load_file(file)
|
55
|
+
|
56
|
+
klass_name = "Test" + File.basename(file, ".yml").sub(/~/, '').capitalize
|
57
|
+
instance_eval "class ::#{klass_name} < PortholeSpec; end"
|
58
|
+
test_suite = Kernel.const_get(klass_name)
|
59
|
+
|
60
|
+
test_suite.class_eval do
|
61
|
+
spec['tests'].each do |test|
|
62
|
+
define_method :"test - #{test['name']}" do
|
63
|
+
setup_partials(test)
|
64
|
+
assert_porthole_spec(test)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TemplateTest < Test::Unit::TestCase
|
5
|
+
def test_compile
|
6
|
+
assert_equal %("foo"), Porthole::Template.new("foo").compile
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_compile_with_source
|
10
|
+
assert_equal %("bar"), Porthole::Template.new("foo").compile("bar")
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_token
|
14
|
+
assert_equal [:multi, [:static, "foo"]], Porthole::Template.new("foo").tokens
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_token_with_source
|
18
|
+
assert_equal [:multi, [:static, "bar"]], Porthole::Template.new("foo").tokens("bar")
|
19
|
+
end
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,127 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: porthole
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.99.4
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Scott Gonyea
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-05-15 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: ! 'Porthole is a ripoff of Mustache. It replaces the use of {{ }} with
|
15
|
+
%% %%, because god hates me.
|
16
|
+
|
17
|
+
|
18
|
+
I removed the Mustache authors from the list of authors, as I don''t want to associate
|
19
|
+
their names
|
20
|
+
|
21
|
+
with this project. You can find the *real* list of authors by viewing the Ruby Gem
|
22
|
+
"mustache" or
|
23
|
+
|
24
|
+
by going to: http://github.com/defunkt/mustache
|
25
|
+
|
26
|
+
'
|
27
|
+
email: me@sgonyea.com
|
28
|
+
executables:
|
29
|
+
- porthole
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- README.md
|
34
|
+
- Rakefile
|
35
|
+
- LICENSE
|
36
|
+
- lib/porthole/context.rb
|
37
|
+
- lib/porthole/generator.rb
|
38
|
+
- lib/porthole/parser.rb
|
39
|
+
- lib/porthole/settings.rb
|
40
|
+
- lib/porthole/sinatra.rb
|
41
|
+
- lib/porthole/template.rb
|
42
|
+
- lib/porthole/version.rb
|
43
|
+
- lib/porthole.rb
|
44
|
+
- lib/rack/bug/panels/mustache_panel/mustache_extension.rb
|
45
|
+
- lib/rack/bug/panels/mustache_panel/view.mustache
|
46
|
+
- lib/rack/bug/panels/mustache_panel.rb
|
47
|
+
- bin/porthole
|
48
|
+
- man/porthole.1
|
49
|
+
- man/porthole.1.html
|
50
|
+
- man/porthole.1.ron
|
51
|
+
- man/porthole.5
|
52
|
+
- man/porthole.5.html
|
53
|
+
- man/porthole.5.ron
|
54
|
+
- test/autoloading_test.rb
|
55
|
+
- test/fixtures/comments.porthole
|
56
|
+
- test/fixtures/comments.rb
|
57
|
+
- test/fixtures/complex_view.porthole
|
58
|
+
- test/fixtures/complex_view.rb
|
59
|
+
- test/fixtures/crazy_recursive.porthole
|
60
|
+
- test/fixtures/crazy_recursive.rb
|
61
|
+
- test/fixtures/delimiters.porthole
|
62
|
+
- test/fixtures/delimiters.rb
|
63
|
+
- test/fixtures/dot_notation.porthole
|
64
|
+
- test/fixtures/dot_notation.rb
|
65
|
+
- test/fixtures/double_section.porthole
|
66
|
+
- test/fixtures/double_section.rb
|
67
|
+
- test/fixtures/escaped.porthole
|
68
|
+
- test/fixtures/escaped.rb
|
69
|
+
- test/fixtures/inner_partial.porthole
|
70
|
+
- test/fixtures/inner_partial.txt
|
71
|
+
- test/fixtures/inverted_section.porthole
|
72
|
+
- test/fixtures/inverted_section.rb
|
73
|
+
- test/fixtures/lambda.porthole
|
74
|
+
- test/fixtures/lambda.rb
|
75
|
+
- test/fixtures/method_missing.rb
|
76
|
+
- test/fixtures/namespaced.porthole
|
77
|
+
- test/fixtures/namespaced.rb
|
78
|
+
- test/fixtures/nested_objects.porthole
|
79
|
+
- test/fixtures/nested_objects.rb
|
80
|
+
- test/fixtures/node.porthole
|
81
|
+
- test/fixtures/partial_with_module.porthole
|
82
|
+
- test/fixtures/partial_with_module.rb
|
83
|
+
- test/fixtures/passenger.conf
|
84
|
+
- test/fixtures/passenger.rb
|
85
|
+
- test/fixtures/recursive.porthole
|
86
|
+
- test/fixtures/recursive.rb
|
87
|
+
- test/fixtures/simple.porthole
|
88
|
+
- test/fixtures/simple.rb
|
89
|
+
- test/fixtures/template_partial.porthole
|
90
|
+
- test/fixtures/template_partial.rb
|
91
|
+
- test/fixtures/template_partial.txt
|
92
|
+
- test/fixtures/unescaped.porthole
|
93
|
+
- test/fixtures/unescaped.rb
|
94
|
+
- test/fixtures/utf8.porthole
|
95
|
+
- test/fixtures/utf8_partial.porthole
|
96
|
+
- test/helper.rb
|
97
|
+
- test/parser_test.rb
|
98
|
+
- test/partial_test.rb
|
99
|
+
- test/porthole_test.rb
|
100
|
+
- test/spec_test.rb
|
101
|
+
- test/template_test.rb
|
102
|
+
homepage: http://github.com/sgonyea/porthole
|
103
|
+
licenses: []
|
104
|
+
post_install_message:
|
105
|
+
rdoc_options: []
|
106
|
+
require_paths:
|
107
|
+
- lib
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ! '>='
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
requirements: []
|
121
|
+
rubyforge_project:
|
122
|
+
rubygems_version: 1.8.15
|
123
|
+
signing_key:
|
124
|
+
specification_version: 3
|
125
|
+
summary: Porthole is a framework-agnostic way to render logic-free views.
|
126
|
+
test_files: []
|
127
|
+
has_rdoc:
|