minimal 0.0.8 → 0.0.10

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/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