Class: SimpleView::SimpleViewBase
- Inherits:
-
Base
- Object
- Base
- SimpleView::SimpleViewBase
show all
- Defined in:
- lib/simple_view/simple_view.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Base
#directory_helpers, #directory_views
Constructor Details
#initialize(template, file_template = nil) ⇒ SimpleViewBase
Returns a new instance of SimpleViewBase.
42
43
44
45
|
# File 'lib/simple_view/simple_view.rb', line 42
def initialize(template, file_template = nil)
self.template = template
self.file_template = file_template
end
|
Instance Attribute Details
#file_template ⇒ Object
Returns the value of attribute file_template.
40
41
42
|
# File 'lib/simple_view/simple_view.rb', line 40
def file_template
@file_template
end
|
#template ⇒ Object
Returns the value of attribute template.
40
41
42
|
# File 'lib/simple_view/simple_view.rb', line 40
def template
@template
end
|
Class Method Details
.find_view(template) ⇒ Object
.lookup_file_template(template) ⇒ Object
165
166
167
168
169
170
171
|
# File 'lib/simple_view/simple_view.rb', line 165
def lookup_file_template(template)
tpl = "#{template}#{self.extension}"
file = File.join(Base.directory_views, tpl)
puts "lookup_file_template : #{tpl} => #{file}" if $DEBUG
raise TemplateViewNotFound.new("Impossible de trouver le template #{tpl} dans le repertoire #{Base.directory_views} (#{file})") unless File.exist?(file)
file
end
|
.register(subclass) ⇒ Object
160
161
162
163
|
# File 'lib/simple_view/simple_view.rb', line 160
def register(subclass)
ext = subclass.extension
SimpleViewBase.template_extensions[ext] = subclass
end
|
.template_extensions ⇒ Object
156
157
158
|
# File 'lib/simple_view/simple_view.rb', line 156
def template_extensions
@template_extensions ||= {}
end
|
.view(template) ⇒ Object
177
178
179
|
# File 'lib/simple_view/simple_view.rb', line 177
def view(template)
self.views[template] ||= self.basic_view(template)
end
|
.views ⇒ Object
173
174
175
|
# File 'lib/simple_view/simple_view.rb', line 173
def views
@views ||= {}
end
|
Instance Method Details
#clean_template_name_for_helper ⇒ Object
61
62
63
|
# File 'lib/simple_view/simple_view.rb', line 61
def clean_template_name_for_helper
template[/(\w+)(\W*)/,1]
end
|
#has_helper? ⇒ Boolean
82
83
84
85
86
|
# File 'lib/simple_view/simple_view.rb', line 82
def has_helper?
hf = self.lookup_file_helper
return nil unless hf
true
end
|
#helper_module_name ⇒ Object
88
89
90
91
|
# File 'lib/simple_view/simple_view.rb', line 88
def helper_module_name
hname = self.clean_template_name_for_helper "#{hname}_helper".camelcase(true).to_sym
end
|
#lookup_file_helper ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/simple_view/simple_view.rb', line 65
def lookup_file_helper
if !self.instance_variable_defined?(:@file_helper) && self.directory_helpers
helper_file_name = "#{self.clean_template_name_for_helper}_helper.rb"
puts "SimpleViewBase > helper_file_name= #{helper_file_name}" if $DEBUG
fhlpr = File.join(self.directory_helpers, helper_file_name)
puts "SimpleViewBase > fhlpr= #{fhlpr}" if $DEBUG
if File.exist?(fhlpr)
@file_helper = FileContent.file(fhlpr)
end
end
@file_helper
end
|
#lookup_file_template(ext = self.template_extension) ⇒ Object
51
52
53
54
55
56
57
58
59
|
# File 'lib/simple_view/simple_view.rb', line 51
def lookup_file_template(ext = self.template_extension)
unless @file_template
tpl = self.template_name(ext)
list = Dir.glob(File.join(self.directory_views, tpl))
raise TemplateViewNotFound.new("Impossible de trouver le template #{tpl} dans le repertoire #{self.directory_views}") unless list.size == 1
@file_template = list.first
end
@file_template
end
|
#render(rendable_object, options = {}) ⇒ Object
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
# File 'lib/simple_view/simple_view.rb', line 123
def render(rendable_object, options = {})
target = options[:target]
if String === target && (options[:type] != :string)
FileUtils.mkdir_p(File.dirname(target)) if options[:mkdirs]
open(target, options[:open]||'w') do |o|
options[:target] = o
begin
return do_rendering(rendable_object, options)
ensure
options[:target] = target
end
end
else
return do_rendering(rendable_object, options)
end
rescue => ex
puts ex.message, ex.backtrace.collect{|st| "\t#{st}"}
if $SV_DEBUG
puts "[SV_DEBUG = #$SV_DEBUG]: Retry ? [y|n]"
response = $stdin.gets.strip
retry if response =~ /Y|y/
end
raise ex
end
|
#render_with_helper(rendable_object) ⇒ Object
148
149
150
151
|
# File 'lib/simple_view/simple_view.rb', line 148
def render_with_helper(rendable_object)
set_helper(rendable_object)
yield if block_given?
end
|
#set_helper(rendable_object) ⇒ Object
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
# File 'lib/simple_view/simple_view.rb', line 101
def set_helper(rendable_object)
if has_helper?
helper = nil
helper_name = self.helper_module_name
begin
if @file_helper.changed? || !Object::const_defined?(helper_name)
load @file_helper.file(true)
else
end
helper = Object::const_get(helper_name)
rescue NameError => ex
require(@file_helper.file)
retry
end
puts "set_helper #{helper} for: #{rendable_object}" if $DEBUG
rendable_object.extend helper
end
end
|
#template_content ⇒ Object
78
79
80
|
# File 'lib/simple_view/simple_view.rb', line 78
def template_content
FileContent.file(self.lookup_file_template).content
end
|
#template_extension ⇒ Object
93
94
95
96
97
98
|
# File 'lib/simple_view/simple_view.rb', line 93
def template_extension
if self.class.respond_to?(:extension)
return self.class.extension
end
".rb"
end
|
#template_name(ext = self.template_extension) ⇒ Object
47
48
49
|
# File 'lib/simple_view/simple_view.rb', line 47
def template_name(ext = self.template_extension)
"#{template}#{ext}"
end
|