Class: Vedeu::Templating::ViewTemplate

Inherits:
Template
  • Object
show all
Includes:
Common, Helpers
Defined in:
lib/vedeu/templating/view_template.rb

Overview

Extend Template to provide client application view specific parsing.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#background, #colour, #define_stream, #encode, #foreground, #style

Methods included from View

#time_now

Methods included from Common

#absent?, #array?, #boolean, #boolean?, #empty_value?, #escape?, #falsy?, #hash?, #line_model?, #numeric?, #positionable?, #present?, #snake_case, #stream_model?, #string?, #symbol?, #truthy?, #view_model?

Methods inherited from Template

#initialize, #load, parse, #path

Constructor Details

This class inherits a constructor from Vedeu::Templating::Template

Instance Attribute Details

#objectClass (readonly, protected)

Returns:

  • (Class)


46
47
48
# File 'lib/vedeu/templating/view_template.rb', line 46

def object
  @object
end

#optionsHash (readonly, protected)

Returns:

  • (Hash)


50
51
52
# File 'lib/vedeu/templating/view_template.rb', line 50

def options
  @options
end

Instance Method Details

#contentString (private)

Return a string representing the template processed with ERB.

Returns:

  • (String)


117
118
119
# File 'lib/vedeu/templating/view_template.rb', line 117

def content
  ERB.new(load, nil, '-').result(binding)
end

#defaultHash<Symbol => Hash<Symbol => Symbol>,Symbol> (private)

Returns:

  • (Hash<Symbol => Hash<Symbol => Symbol>,Symbol>)


65
66
67
68
69
70
71
72
73
# File 'lib/vedeu/templating/view_template.rb', line 65

def default
  {
    colour: {
      background: :default,
      foreground: :default,
    },
    style: :normal,
  }
end

#interfaceObject (private) Also known as: interface?

Returns the interface by name.



78
79
80
# File 'lib/vedeu/templating/view_template.rb', line 78

def interface
  Vedeu.interfaces.by_name(name)
end

#linesArray<String> (private)

Convert the content into an array of strings without the line ending character.

Returns:

  • (Array<String>)


110
111
112
# File 'lib/vedeu/templating/view_template.rb', line 110

def lines
  content.lines.map(&:chomp)
end

#nameString|Symbol (private)

Returns:

  • (String|Symbol)


84
85
86
# File 'lib/vedeu/templating/view_template.rb', line 84

def name
  options[:name]
end

#parseVedeu::Views::Lines

Returns:



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/vedeu/templating/view_template.rb', line 16

def parse
  lines_collection = Vedeu::Views::Lines.new

  lines.each do |line|
    line_object = Vedeu::Views::Line.new

    streams_for(line).each do |stream|
      next unless present?(stream)

      line_object << if stream =~ /({{)|(}})/
                       Vedeu::Templating::Decoder.process(stream)

                     else
                       Vedeu::Views::Stream.new(colour: stream_colour,
                                                style:  stream_style,
                                                value:  stream)

                     end
    end

    lines_collection << line_object
  end

  lines_collection
end

#stream_colourVedeu::Colours::Colour|Hash<Symbol => NilClass,String,Symbol> (private)

Return the interface colours if a name option is set, otherwise use the default colours.

Returns:



58
59
60
61
62
# File 'lib/vedeu/templating/view_template.rb', line 58

def stream_colour
  return interface.colour if name

  default[:colour]
end

#stream_styleSymbol (private)

Return the interface style(s) if a name option is set, otherwise use the default style.

Returns:

  • (Symbol)


100
101
102
103
104
# File 'lib/vedeu/templating/view_template.rb', line 100

def stream_style
  return interface.style if name

  default[:style]
end

#streams_for(line) ⇒ Array<String> (private)

Returns the stream directives for the line.

Parameters:

  • line (String)

Returns:

  • (Array<String>)


92
93
94
# File 'lib/vedeu/templating/view_template.rb', line 92

def streams_for(line)
  line.split(/({{\s*[^}]+\s*}})/)
end