mustache_render 0.0.13 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  # #
2
3
  # # 注册action view handler
3
4
  # #
@@ -11,23 +11,23 @@ module MustacheRender::CoreExt
11
11
  end
12
12
 
13
13
  module SharedMethods
14
- def mustache_render template='', mustache={}
15
- result = ::MustacheRender::Mustache.render(template, mustache)
16
- impl_mustache_result_render result
17
- end
14
+ # 是否是mustache_render调试模式
15
+ def mustache_render_at_debug_mode?
16
+ return @_mustache_render_at_debug_mode if defined?(@_mustache_render_at_debug_mode)
18
17
 
19
- def mustache_file_render template_path, mustache={}
20
- result = ::MustacheRender::Mustache.file_render(template_path, mustache)
21
- impl_mustache_result_render result
18
+ @_mustache_render_at_debug_mode = Rails.env.development? && params[:mustache_render_debug]
22
19
  end
23
20
 
24
21
  #
25
- # 使用数据库中的模板进行渲染
26
- # - template_path: 模板的路径
22
+ # 定义了三个方法:
23
+ # render template, data
24
+ # file_render template_path, data
25
+ # db_render template_path, data
27
26
  #
28
- def mustache_db_render(template_path, mustache={})
29
- result = ::MustacheRender::Mustache.db_render(template_path, mustache)
30
- impl_mustache_result_render result
27
+ [:render, :file_render, :db_render, :impl_render].each do |method_name|
28
+ define_method "mustache_#{method_name}".to_sym do |path_or_template, data|
29
+ impl_mustache_result_render method_name, path_or_template, data
30
+ end
31
31
  end
32
32
  end
33
33
 
@@ -39,8 +39,15 @@ module MustacheRender::CoreExt
39
39
 
40
40
  private
41
41
 
42
- def impl_mustache_result_render(result)
43
- raw result
42
+ def impl_mustache_result_render(method_name, path_or_template='', data={})
43
+ if mustache_render_at_debug_mode?
44
+ ::MustacheRender.logger.debug <<-DEBUG_TEXT
45
+ >>> impl_mustache_result_render##{method_name} path_or_template: #{path_or_template}
46
+ >>> data: #{data.inspect}
47
+ DEBUG_TEXT
48
+ end
49
+
50
+ raw(::MustacheRender::Mustache.send method_name, path_or_template, data)
44
51
  end
45
52
  end
46
53
 
@@ -49,8 +56,12 @@ module MustacheRender::CoreExt
49
56
 
50
57
  private
51
58
 
52
- def impl_mustache_result_render(result)
53
- render :text => result
59
+ def impl_mustache_result_render(method_name, path_or_template='', data={})
60
+ if mustache_render_at_debug_mode?
61
+ render :json => data
62
+ else
63
+ render :text => (::MustacheRender::Mustache.send method_name, path_or_template, data)
64
+ end
54
65
  end
55
66
  end
56
67
  end
@@ -7,17 +7,23 @@ module MustacheRender
7
7
  self.merge! options
8
8
  end
9
9
 
10
- def render(template='')
11
- ::MustacheRender::Mustache.render template, self
10
+ [:render, :file_render, :db_render, :impl_render].each do |method_name|
11
+ define_method method_name do |path_or_template|
12
+ ::MustacheRender::Mustache.send method_name, path_or_template, self
13
+ end
12
14
  end
13
15
 
14
- def file_render path
15
- ::MustacheRender::Mustache.file_render path, self
16
- end
16
+ # def render(template='')
17
+ # ::MustacheRender::Mustache.render template, self
18
+ # end
17
19
 
18
- def db_render path
19
- ::MustacheRender::Mustache.db_render path, self
20
- end
20
+ # def file_render path
21
+ # ::MustacheRender::Mustache.file_render path, self
22
+ # end
23
+
24
+ # def db_render path
25
+ # ::MustacheRender::Mustache.db_render path, self
26
+ # end
21
27
 
22
28
  def []=(name, value)
23
29
  result = super(name.to_s, value)
@@ -5,6 +5,9 @@ require 'mustache_render/mustache/data'
5
5
 
6
6
  module MustacheRender
7
7
  class Mustache
8
+ # 可用的渲染的方法
9
+ # AVAILABLE_RENDER_METHODS = [:render, :file_render, :db_render].freeze
10
+
8
11
  def self.render(*args)
9
12
  new.render(*args)
10
13
  end
@@ -21,7 +24,7 @@ module MustacheRender
21
24
 
22
25
  def render(data = template, ctx = {})
23
26
  impl_logger :level => :debug, :operation => 'MustacheRender::Mustache.render' do
24
- impl_render data, ctx
27
+ impl_template_render data, ctx
25
28
  end
26
29
  end
27
30
 
@@ -51,6 +54,15 @@ module MustacheRender
51
54
  @context ||= Context.new(self)
52
55
  end
53
56
 
57
+ # 使用default_media 进行渲染
58
+ def self.impl_render(name, context={})
59
+ self.new.send :impl_render, name, context
60
+ end
61
+
62
+ def impl_render name, context={}
63
+ send "#{::MustacheRender.config.default_render_media}_render".to_sym, name, context
64
+ end
65
+
54
66
  # Given a file name and an optional context, attempts to load and
55
67
  # render the file as a template.
56
68
  def self.file_render(name, context = {})
@@ -288,7 +300,7 @@ module MustacheRender
288
300
  " \033[4;34;1m#{operation}\033[0m \033[0;1m#{message}\033[0m"
289
301
  end
290
302
 
291
- def impl_render(data=template, ctx={})
303
+ def impl_template_render(data=template, ctx={})
292
304
  self.template = data
293
305
 
294
306
  return self.template.render(context) if ctx == {}
@@ -0,0 +1,89 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module MustacheRender
3
+ class PopulatorBase
4
+ attr_reader :data
5
+
6
+ def initialize options={}
7
+ @context = options[:context]
8
+ @data = ::MustacheRender::Mustache::Data.new
9
+ @template = options[:template]
10
+ @_scope = options[:scope]
11
+ @_method = options[:method] || "#{@context.controller_name}_#{@context.action_name}"
12
+
13
+ self.send _impl_get_render_method_name
14
+ end
15
+
16
+ #
17
+ # impl_collect_reader_board
18
+ #
19
+ def collect_record record_name, record, options={}, &block
20
+ if record
21
+ result = self.send("impl_collect_#{record_name}".to_sym, record, options, &block) || {}
22
+ result = _impl_collect_require_fields(result, record_name, record, options, &block)
23
+ result
24
+ else
25
+ {
26
+ 'miss?' => true
27
+ }
28
+ end
29
+ end
30
+
31
+ def collect_records record_name, records, options={}, &block
32
+ records.map do |record|
33
+ collect_record record_name, record, options, &block
34
+ end
35
+ end
36
+
37
+ #
38
+ # render template
39
+ # file_render template_path
40
+ # db_render template_path
41
+ #
42
+ [:render, :file_render, :db_render, :impl_render].each do |method_name|
43
+ define_method method_name do |path_or_template=nil|
44
+ @context.send "mustache_#{method_name}".to_sym, "#{path_or_template || @template}", @data
45
+ end
46
+ end
47
+
48
+ private
49
+
50
+ def _impl_collect_require_fields result, record_name, record, options={}
51
+ _cache_names = {}
52
+
53
+ (options[:fields] || []).each do |field|
54
+ formated_method_name = "format_field_#{record_name}_#{field}".to_sym
55
+
56
+ if self.respond_to?(formated_method_name)
57
+ (result[:fields] ||= {}).merge!(
58
+ field => self.send(formated_method_name, record, options)
59
+ )
60
+ elsif record.respond_to?(field)
61
+ (result[:fields] ||= {}).merge!(
62
+ field => record.send(field)
63
+ )
64
+ else
65
+ raise "#{self.class.to_s} not define method: #{formated_method_name} or #{record_name} can not respond_to: #{field}"
66
+ end
67
+ end
68
+
69
+ result
70
+ end
71
+
72
+
73
+ def _impl_get_render_method_name
74
+ "render#{"_#{@_scope}" if @scope.present?}_#{@_method}"
75
+ end
76
+
77
+ class << self
78
+ #
79
+ # 定义了
80
+ #
81
+ [:render, :file_render, :db_render, :impl_render].each do |method_name|
82
+ define_method method_name do |options={}|
83
+ self.new(options).send method_name
84
+ end
85
+ end
86
+ end
87
+
88
+ end
89
+ end
@@ -3,7 +3,7 @@ module MustacheRender
3
3
  VERSION_NUMBERS = [
4
4
  VERSION_MAJOR = 0,
5
5
  VERSION_MINOR = 0,
6
- VERSION_BUILD = 13,
6
+ VERSION_BUILD = 14,
7
7
  ]
8
8
 
9
9
  VERSION = VERSION_NUMBERS.join(".")
@@ -9,7 +9,8 @@ module MustacheRender
9
9
  MustacheRender.config.logger
10
10
  end
11
11
 
12
- autoload :Adapter, 'mustache_render/adapter'
12
+ autoload :Adapter, 'mustache_render/adapter'
13
+ autoload :PopulatorBase, 'mustache_render/populator_base'
13
14
 
14
15
  module Manage
15
16
  autoload :BaseHelper, 'mustache_render/helpers/mustache_render/manage/base_helper'
@@ -0,0 +1,14 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe 'MustacheRender config' do
5
+ context 'config' do
6
+ before :each do
7
+
8
+ end
9
+
10
+ it 'config not nil' do
11
+ ::MustacheRender.config.nil?.should == false
12
+ end
13
+ end
14
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'spec_helper'
2
3
 
3
4
  describe 'MustacheRender::Mustache.db_render' do
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'mustache_render'
2
3
 
3
4
 
metadata CHANGED
@@ -1,55 +1,61 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mustache_render
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.13
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ hash: 3
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 14
10
+ version: 0.0.14
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - happy
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2013-01-26 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2013-01-28 00:00:00 +08:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
15
22
  name: awesome_nested_set
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
- - !ruby/object:Gem::Dependency
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
31
36
  name: sqlite3
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :development
39
37
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
38
+ requirement: &id002 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id002
46
49
  description: Description of MustacheRender.
47
- email:
50
+ email:
48
51
  - andywang7259@gmail.com
49
52
  executables: []
53
+
50
54
  extensions: []
55
+
51
56
  extra_rdoc_files: []
52
- files:
57
+
58
+ files:
53
59
  - lib/mustache_render.rb
54
60
  - lib/tasks/mustache_render_tasks.rake
55
61
  - lib/generators/mustache_render/install_generator.rb
@@ -105,10 +111,12 @@ files:
105
111
  - lib/mustache_render/views/mustache_render/manage/folders/show.html.erb
106
112
  - lib/mustache_render/views/mustache_render/manage/folders/_new_2.html.erb
107
113
  - lib/mustache_render/views/mustache_render/manage/folders/_edit_2.html.erb
114
+ - lib/mustache_render/populator_base.rb
108
115
  - lib/mustache_render/adapter.rb
109
116
  - spec/lib/mustache/data_spec.rb
110
117
  - spec/lib/mustache/file_render_spec.rb
111
118
  - spec/lib/mustache/basic_render_spec.rb
119
+ - spec/lib/config_spec.rb
112
120
  - spec/lib/resources/templates/basic/6.mustache
113
121
  - spec/lib/resources/templates/basic/2.mustache
114
122
  - spec/lib/resources/templates/basic/1.mustache
@@ -124,28 +132,39 @@ files:
124
132
  - MIT-LICENSE
125
133
  - Rakefile
126
134
  - README.md
135
+ has_rdoc: true
127
136
  homepage: http://blogsoso.net/
128
137
  licenses: []
138
+
129
139
  post_install_message:
130
140
  rdoc_options: []
131
- require_paths:
141
+
142
+ require_paths:
132
143
  - lib
133
- required_ruby_version: !ruby/object:Gem::Requirement
144
+ required_ruby_version: !ruby/object:Gem::Requirement
134
145
  none: false
135
- requirements:
136
- - - ! '>='
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- required_rubygems_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ hash: 3
150
+ segments:
151
+ - 0
152
+ version: "0"
153
+ required_rubygems_version: !ruby/object:Gem::Requirement
140
154
  none: false
141
- requirements:
142
- - - ! '>='
143
- - !ruby/object:Gem::Version
144
- version: '0'
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ hash: 3
159
+ segments:
160
+ - 0
161
+ version: "0"
145
162
  requirements: []
163
+
146
164
  rubyforge_project:
147
- rubygems_version: 1.8.24
165
+ rubygems_version: 1.3.7
148
166
  signing_key:
149
167
  specification_version: 3
150
168
  summary: Summary of MustacheRender.
151
169
  test_files: []
170
+