Class: Sbuilder::Template

Inherits:
Mustache
  • Object
show all
Extended by:
Forwardable
Includes:
Utils::MyLogger
Defined in:
lib/sbuilder/mustache/template.rb

Constant Summary collapse

PROGNAME =

progname for logger

"template"

Constants included from Utils::MyLogger

Utils::MyLogger::LOGFILE

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Utils::MyLogger

#getLogger, #logfile

Constructor Details

#initialize(reader, options = {}) ⇒ Template


Constructor



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/sbuilder/mustache/template.rb', line 25

def initialize( reader, options={} )
  @logger = getLogger( PROGNAME, options )
  @logger.info( "#{__method__} created" )
  @logger.debug( "#{__method__}, options='#{options}" )

  # init partial cache
  @partials = {}

  # inject reader
  #@reader = Sbuilder::TemplateReader.new( options )
  @reader = reader

end

Instance Attribute Details

#partials=(value) ⇒ Object (writeonly)

instance



15
16
17
# File 'lib/sbuilder/mustache/template.rb', line 15

def partials=(value)
  @partials = value
end

#readerObject (readonly)

Returns the value of attribute reader.



16
17
18
# File 'lib/sbuilder/mustache/template.rb', line 16

def reader
  @reader
end

Instance Method Details

#get_partial(name) ⇒ Object

cache @partials - for easier extension



106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/sbuilder/mustache/template.rb', line 106

def get_partial( name ) 
  @logger.debug( "#{__method__} name=#{name}" )
  return @partials[name] if @partials[name]
  @logger.info( "#{__method__} read partial_file=#{name}" )
  
  @partials[name] = get_template( name )
  return @partials[name]

  # partial_file = get_template_filepath( name )
  # @logger.info( "#{__method__} read partial_file=#{partial_file}" )
  # @partials[name] = File.read( partial_file )
  # @partials[name]
end

#partial(name) ⇒ Object

method used by mustache framework - delegate to ‘get_partial’



65
66
67
68
69
70
# File 'lib/sbuilder/mustache/template.rb', line 65

def partial(name)
  @logger.debug( "#{__method__} name=#{name}" )

  # return resolve_partial_direct(name[2..-1])  if name[0..1]  == '!!'
  get_partial( resolve_partial_name(name) )
end

#render_str(template, data) ⇒ Object



57
58
59
# File 'lib/sbuilder/mustache/template.rb', line 57

def render_str( template, data )
  render( template, data )
end

#resolve_partial_name(name) ⇒ Object

lookup



86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/sbuilder/mustache/template.rb', line 86

def resolve_partial_name( name )
  return name unless name[0..0]  == '!'
  # remove !, split, and use injected traves to access data
  ret = @data.traverse( *(name[1..-1].split( "." )) )
  if ret.nil?
    raise <<-EOS 
              Could not resolve #{name} in template data

              #{@data.to_yaml}

    EOS
  end
  @logger.info( "#{__method__} name=#{name} --> #{ret}" )
  ret
end

#to_str(template_name, data) ⇒ Object


Services



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/sbuilder/mustache/template.rb', line 42

def to_str( template_name, data )
  @logger.info( "#{__method__}: template_name=#{template_name}" )
  @logger.debug( "#{__method__}: template_name=#{template_name}" ) if @logger.debug?
  # @logger.debug( "#{__method__}: nodes=#{data.nodes}" )
  
  # data = add_dynamic_load( data )
  
  @data = data
  
  template = get_template( template_name )
  # render( template, @data )
  
  render( template, @data )
end