minimal 0.0.8 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -2,4 +2,6 @@ source 'http://gemcutter.org'
2
2
 
3
3
  gem 'actionpack', '>=3.0.0.beta2'
4
4
 
5
-
5
+ group :test do
6
+ gem 'test_declarative'
7
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,37 @@
1
+ GEM
2
+ remote: http://gemcutter.org/
3
+ specs:
4
+ abstract (1.0.0)
5
+ actionpack (3.0.0.rc)
6
+ activemodel (= 3.0.0.rc)
7
+ activesupport (= 3.0.0.rc)
8
+ builder (~> 2.1.2)
9
+ erubis (~> 2.6.6)
10
+ i18n (~> 0.4.1)
11
+ rack (~> 1.2.1)
12
+ rack-mount (~> 0.6.9)
13
+ rack-test (~> 0.5.4)
14
+ tzinfo (~> 0.3.22)
15
+ activemodel (3.0.0.rc)
16
+ activesupport (= 3.0.0.rc)
17
+ builder (~> 2.1.2)
18
+ i18n (~> 0.4.1)
19
+ activesupport (3.0.0.rc)
20
+ builder (2.1.2)
21
+ erubis (2.6.6)
22
+ abstract (>= 1.0.0)
23
+ i18n (0.4.1)
24
+ rack (1.2.1)
25
+ rack-mount (0.6.9)
26
+ rack (>= 1.0.0)
27
+ rack-test (0.5.4)
28
+ rack (>= 1.0)
29
+ test_declarative (0.0.3)
30
+ tzinfo (0.3.22)
31
+
32
+ PLATFORMS
33
+ ruby
34
+
35
+ DEPENDENCIES
36
+ actionpack (>= 3.0.0.beta2)
37
+ test_declarative
data/README.textile CHANGED
@@ -3,7 +3,7 @@ Minimal::Template is an experimental, minimalistic templating engine inspired by
3
3
  <pre># views/foo/bar.rb
4
4
  module Foo
5
5
  class Bar < Minimal::Template
6
- def content
6
+ def to_html
7
7
  html do
8
8
  head
9
9
  body do
@@ -1,5 +1,7 @@
1
1
  class Minimal::Template
2
2
  module FormBuilderProxy
3
+ PROXY_TAGS = [:form_for, :fields_for]
4
+
3
5
  class Proxy
4
6
  attr_reader :template, :builder
5
7
 
@@ -8,13 +10,21 @@ class Minimal::Template
8
10
  end
9
11
 
10
12
  def method_missing(method, *args, &block)
11
- template << builder.send(method, *args, &block)
13
+ if PROXY_TAGS.include?(method)
14
+ template << builder.send(method, *args) do |builder|
15
+ yield(Proxy.new(template, builder))
16
+ end
17
+ else
18
+ template << builder.send(method, *args, &block)
19
+ end
12
20
  end
13
21
  end
14
22
 
15
23
  def method_missing(method, *args, &block)
16
- if [:form_for, :fields_for].include?(method)
17
- self << view.send(method, *args) { |builder| yield(Proxy.new(self, builder)) }
24
+ if PROXY_TAGS.include?(method)
25
+ self << view.send(method, *args) do |builder|
26
+ yield(Proxy.new(self, builder))
27
+ end
18
28
  else
19
29
  super
20
30
  end
@@ -4,16 +4,19 @@ class Minimal::Template
4
4
 
5
5
  def compile(template)
6
6
  require_dependency template.identifier
7
+ class_name, format = template_class_name_and_format(template.identifier)
7
8
  <<-code
8
9
  @output_buffer = ActiveSupport::SafeBuffer.new
9
- #{template_class_name(template.identifier)}.new(self)._render(local_assigns)
10
+ template, format = #{class_name}, #{format.inspect}
11
+ template.new(self)._render(local_assigns, format) { |*args| yield(*args) }
10
12
  code
11
13
  end
12
14
 
13
15
  protected
14
16
 
15
- def template_class_name(path)
16
- path =~ %r(views/(.*).rb) && $1.gsub('.', '/').camelize
17
+ def template_class_name_and_format(path)
18
+ %r(views/(.*?)(\.[^\.]*)?.rb) =~ path
19
+ [$1.try(:camelize), ($2 || 'html').gsub('.', '').to_sym]
17
20
  end
18
21
  end
19
22
  end
@@ -0,0 +1,13 @@
1
+ class Minimal::Template
2
+ TRANSLATED_TAGS = %w(link_to button_to a div em h1 h2 h3 h4 h5 h6 label li
3
+ option p pre span strong td title)
4
+
5
+ module TranslatedTags
6
+ TRANSLATED_TAGS.each do |name|
7
+ define_method(name) do |*args, &block|
8
+ args[0] = t(args[0]) if args[0].is_a?(Symbol)
9
+ super(*args, &block)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,22 +1,23 @@
1
1
  class Minimal::Template
2
2
  autoload :FormBuilderProxy, 'minimal/template/form_builder_proxy'
3
3
  autoload :Handler, 'minimal/template/handler'
4
+ autoload :TranslatedTags, 'minimal/template/translated_tags'
4
5
 
5
6
  AUTO_BUFFER = %r(render|tag|error_message_|select|debug|_to|_for)
6
-
7
- TAG_NAMES = %w(a body div em fieldset h1 h2 h3 h4 head html img input label li
8
- link ol option p pre script select span strong table thead tbody tfoot td th tr ul)
7
+ TAG_NAMES = %w(a body div em fieldset h1 h2 h3 h4 h5 h6 head html img input label li link
8
+ ol option p pre script select span strong table thead tbody tfoot td title th tr ul)
9
9
 
10
10
  module Base
11
- attr_accessor :view, :locals
11
+ attr_accessor :view, :locals, :block
12
12
 
13
13
  def initialize(view = nil)
14
14
  @view, @locals, @_buffer = view, {}, {}
15
15
  end
16
16
 
17
- def _render(locals = nil)
17
+ def _render(locals = nil, format = :html, &block)
18
18
  @locals = locals || {}
19
- content
19
+ self.block = lambda { |*args| self << block.call(*args) }
20
+ send(:"to_#{format}", &self.block)
20
21
  view.output_buffer
21
22
  end
22
23
 
@@ -1,3 +1,3 @@
1
1
  module Minimal
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.10"
3
3
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minimal
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 11
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 8
9
- version: 0.0.8
9
+ - 10
10
+ version: 0.0.10
10
11
  platform: ruby
11
12
  authors:
12
13
  - Sven Fuchs
@@ -14,10 +15,40 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-04-04 00:00:00 +02:00
18
+ date: 2010-08-10 00:00:00 +02:00
18
19
  default_executable:
19
- dependencies: []
20
-
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: actionpack
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: -1848230022
30
+ segments:
31
+ - 3
32
+ - 0
33
+ - 0
34
+ - beta2
35
+ version: 3.0.0.beta2
36
+ type: :runtime
37
+ version_requirements: *id001
38
+ - !ruby/object:Gem::Dependency
39
+ name: test_declarative
40
+ prerelease: false
41
+ requirement: &id002 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ hash: 3
47
+ segments:
48
+ - 0
49
+ version: "0"
50
+ type: :development
51
+ version_requirements: *id002
21
52
  description: Minimal templating engine inspired by Markaby & Erector and targeted at Rails 3.
22
53
  email: svenfuchs@artweb-design.de
23
54
  executables: []
@@ -29,10 +60,12 @@ extra_rdoc_files: []
29
60
  files:
30
61
  - lib/minimal/template/form_builder_proxy.rb
31
62
  - lib/minimal/template/handler.rb
63
+ - lib/minimal/template/translated_tags.rb
32
64
  - lib/minimal/template.rb
33
65
  - lib/minimal/version.rb
34
66
  - lib/minimal.rb
35
67
  - Gemfile
68
+ - Gemfile.lock
36
69
  - Rakefile
37
70
  - README.textile
38
71
  has_rdoc: true
@@ -45,16 +78,20 @@ rdoc_options: []
45
78
  require_paths:
46
79
  - lib
47
80
  required_ruby_version: !ruby/object:Gem::Requirement
81
+ none: false
48
82
  requirements:
49
83
  - - ">="
50
84
  - !ruby/object:Gem::Version
85
+ hash: 3
51
86
  segments:
52
87
  - 0
53
88
  version: "0"
54
89
  required_rubygems_version: !ruby/object:Gem::Requirement
90
+ none: false
55
91
  requirements:
56
92
  - - ">="
57
93
  - !ruby/object:Gem::Version
94
+ hash: 23
58
95
  segments:
59
96
  - 1
60
97
  - 3
@@ -63,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
63
100
  requirements: []
64
101
 
65
102
  rubyforge_project: "[none]"
66
- rubygems_version: 1.3.6
103
+ rubygems_version: 1.3.7
67
104
  signing_key:
68
105
  specification_version: 3
69
106
  summary: Minimal templating engine inspired by Markaby & Erector