Module: Flex::ClassProxy::Templates

Includes:
Doc, Search
Defined in:
lib/flex/class_proxy/templates.rb,
lib/flex/class_proxy/templates/doc.rb,
lib/flex/class_proxy/templates/search.rb,
lib/flex/deprecation.rb

Defined Under Namespace

Modules: Doc, Search

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Search

#count_search, #define_search, #multi_search, #scan_search

Methods included from Doc

#doc, #info, #usage

Instance Attribute Details

#partialsObject (readonly)

Returns the value of attribute partials.



5
6
7
# File 'lib/flex/class_proxy/templates.rb', line 5

def partials
  @partials
end

#templatesObject (readonly)

Returns the value of attribute templates.



5
6
7
# File 'lib/flex/class_proxy/templates.rb', line 5

def templates
  @templates
end

Instance Method Details

#initObject



9
10
11
12
13
# File 'lib/flex/class_proxy/templates.rb', line 9

def init
  @sources   = []
  @templates = {}
  @partials  = {}
end

#load_search_source(source = nil, source_vars = nil) ⇒ Object

loads a Search Template source



39
40
41
# File 'lib/flex/class_proxy/templates.rb', line 39

def load_search_source(source=nil, source_vars=nil)
  load_source_for(Template::Search, source, source_vars)
end

#load_slim_search_source(source = nil, source_vars = nil) ⇒ Object

loads a SlimSearch Template source



44
45
46
# File 'lib/flex/class_proxy/templates.rb', line 44

def load_slim_search_source(source=nil, source_vars=nil)
  load_source_for(Template::SlimSearch, source, source_vars)
end

#load_source(source = nil, source_vars = nil) ⇒ Object

loads a Generic Template source



34
35
36
# File 'lib/flex/class_proxy/templates.rb', line 34

def load_source(source=nil, source_vars=nil)
  load_source_for(Template, source, source_vars)
end

#load_source_for(klass, source, source_vars) ⇒ Object

accepts a path to a file or YAML string

Raises:



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/flex/class_proxy/templates.rb', line 16

def load_source_for(klass, source, source_vars)
  if source.nil? || source !~ /\n/m
    paths = [ "#{Conf.flex_dir}/#{source}.yml",
              "#{Conf.flex_dir}/#{Utils.class_name_to_type(context.name)}.yml",
              source.to_s ]
    source = paths.find {|p| File.exist?(p)}
  end
  raise ArgumentError, "expected a string, got #{source.inspect}" \
      unless source.is_a?(String)
  @sources << [klass, source, source_vars]
  do_load_source(klass, source, source_vars)
  # fixes the legacy empty stubs, which should call super instead
  @templates.keys.each do |name|
    meta_context.send(:define_method, name){|*vars| super *vars }
  end
end

#reload!Object

reloads the sources (useful in the console and used internally)



49
50
51
# File 'lib/flex/class_proxy/templates.rb', line 49

def reload!
  @sources.each {|k,s,v| do_load_source(k,s,v)}
end

#render(name, *vars) ⇒ Object



62
63
64
# File 'lib/flex/class_proxy/templates.rb', line 62

def render(name, *vars)
  templates[name].render(*vars)
end

#wrap(*methods, &block) ⇒ Object



53
54
55
56
57
58
59
60
# File 'lib/flex/class_proxy/templates.rb', line 53

def wrap(*methods, &block)
  methods = templates.keys if methods.empty?
  methods.each do |name|
    raise MissingTemplateMethodError, "#{name} is not a template method" \
          unless templates.include?(name)
    meta_context.send(:define_method, name, &block)
  end
end