class Dot_Why::Template

Attributes

sections[R]

Public Class Methods

def_section(*args)
Alias for: def_sections
def_sections(*args) click to toggle source
# File lib/dot_why.rb, line 13
def def_sections *args
  @sections ||= {}
  args.each { |v|
    @sections[v] = true
  }
end
Also aliased as: def_section
new(raw_file, *args) click to toggle source
Calls superclass method
# File lib/dot_why.rb, line 31
def initialize raw_file, *args
  @file = file = File.expand_path(raw_file).sub(".rb", "") + '.rb'
  @_blocks = {}
  super(*args)
end

Public Instance Methods

content() click to toggle source
# File lib/dot_why.rb, line 58
def content
  main
end
def_section(*args)
Alias for: def_sections
def_sections(*args) click to toggle source
# File lib/dot_why.rb, line 26
def def_sections *args
  self.class.def_sections *args
end
Also aliased as: def_section
eval_main() click to toggle source
# File lib/dot_why.rb, line 41
def eval_main
  eval(File.read(@file.to_s), nil, @file, 1)
end
file_stamp() click to toggle source

automate some tags =================================================================

# File lib/dot_why.rb, line 98
def file_stamp
  @file_stamp ||= Time.now.to_i
end
main_file() click to toggle source
# File lib/dot_why.rb, line 37
def main_file
  @file
end
partial(file_or_dir, file = nil) click to toggle source
# File lib/dot_why.rb, line 45
def partial file_or_dir, file = nil
  file = if file
    dir = Dir.exist?(file_or_dir) ?
      file_or_dir :
      File.dirname(file_or_dir)
    File.join(dir, file)
  else
    file_or_dir
  end

  eval(File.read(file), nil, file, 1)
end
script(*args) click to toggle source
Calls superclass method Ok#script
# File lib/dot_why.rb, line 115
def script *args
  if args.size == 1 && args.first.is_a?(String)
    name = args.first
    full = "#{name}.js?#{file_stamp}"
    super(:type=>"text/javascript", :src=>"#{use_file full}")
  else
    super
  end
end
section(name, pos = :bottom, *args, &b) click to toggle source
# File lib/dot_why.rb, line 70
def section name, pos = :bottom, *args, &b
  raise "Section not defined: #{name}" if !self.class.sections[name]

  if not block_given?
    (@_blocks[name] || []).each  { |bl| bl.call }
    return
  end

  @_blocks[name] ||= []
  if (pos == :top)
    @_blocks[name].unshift(b)
  elsif (pos == :replace)
    @_blocks[name] = [b]
  else
    @_blocks[name].push(b)
  end
end
stylesheet(name) click to toggle source
# File lib/dot_why.rb, line 102
def stylesheet name
  filename = if name[/\:/]
               name
             else
               if name['/']
                  "#{name}.css?#{file_stamp}"
                else
                  "/css/#{name}.css?#{file_stamp}"
                end
             end
  link(:rel=>'stylesheet', :type=>'text/css', :href=>use_file(filename), :media=>'screen')
end
use_file(raw_name) click to toggle source
# File lib/dot_why.rb, line 62
def use_file raw_name
  name = raw_name.split('?').first
  @files ||= {}
  raise "File already used: #{name.inspect}" if @files[name]
  @files[name] = true
  raw_name
end
view_name() click to toggle source
# File lib/dot_why.rb, line 88
def view_name
  @view_name ||= begin
                   base = File.basename(main_file).sub(".rb", '')
                   dir  = File.basename(File.dirname main_file)
                   "#{dir}/#{base}"
                 end
end