class Thymeleaf::Dialects

Attributes

registered_attr_processors[RW]
registered_dialects[RW]
registered_tag_processors[RW]

Public Class Methods

new() click to toggle source
# File lib/thymeleaf/dialects.rb, line 6
def initialize
  clear_dialects
end

Public Instance Methods

add_dialect(*args) click to toggle source
# File lib/thymeleaf/dialects.rb, line 10
def add_dialect(*args)
  key, dialect_class = * expand_key_dialect(*args)

  dialect = dialect_class.new

  registered_dialects[key] = dialect
  registered_attr_processors[key] = dialect_processors(dialect)
  registered_tag_processors[key] = dialect_tag_processors(dialect)
end
clear_dialects() click to toggle source
# File lib/thymeleaf/dialects.rb, line 20
def clear_dialects
  self.registered_dialects        = {}
  self.registered_attr_processors = {}
  self.registered_tag_processors  = {}
end
find_attr_processor(key) click to toggle source
# File lib/thymeleaf/dialects.rb, line 26
def find_attr_processor(key)
  find_processor key, dialect_attr_matchers, registered_attr_processors
end
find_tag_processor(key) click to toggle source
# File lib/thymeleaf/dialects.rb, line 30
def find_tag_processor(key)
  find_processor key, dialect_tag_matchers, registered_tag_processors
end

Private Instance Methods

dialect_attr_matchers() click to toggle source
# File lib/thymeleaf/dialects.rb, line 38
def dialect_attr_matchers
  /^data-(#{registered_dialects.keys.join("|")})-(.*)$/
end
dialect_processors(dialect) click to toggle source
# File lib/thymeleaf/dialects.rb, line 60
def dialect_processors(dialect)
  dialect.processors.reduce({}) do |processors, (processor_key, processor)|
    processors[processor_key.to_s] = processor.new
    processors
  end
end
dialect_tag_matchers() click to toggle source
# File lib/thymeleaf/dialects.rb, line 42
def dialect_tag_matchers
  /^(#{registered_dialects.keys.join("|")})-(.*)$/
end
dialect_tag_processors(dialect) click to toggle source
# File lib/thymeleaf/dialects.rb, line 67
def dialect_tag_processors(dialect)
  dialect.tag_processors.reduce({}) do |processors, (processor_key, processor)|
    processors[processor_key.to_s] = processor.new
    processors
  end
end
expand_key_dialect(*args) click to toggle source
# File lib/thymeleaf/dialects.rb, line 50
def expand_key_dialect(*args)
  if args.length == 1
    [ args[0].default_key, args[0] ]
  elsif args.length == 2
    args
  else
    raise ArgumentError
  end
end
find_processor(key, dialect_matchers, processor_list) click to toggle source
# File lib/thymeleaf/dialects.rb, line 74
def find_processor(key, dialect_matchers, processor_list)
  match = dialect_matchers.match(key)

  # TODO: check performance null object vs null check
  return [key, null_processor] if match.nil?

  dialect_key, processor_key = *match[1..2]

  dialect_processors = processor_list[dialect_key]
  raise ArgumentError, "No dialect found for key #{key}" if dialect_processors.nil?

  processor = dialect_processors[processor_key] || dialect_processors['default']
  raise ArgumentError, "No processor found for key #{key}" if processor.nil?

  [processor_key, processor]
end
null_processor() click to toggle source
# File lib/thymeleaf/dialects.rb, line 46
def null_processor
  @null_prccesor ||= NullProcessor.new
end