четверг, 3 марта 2011 г.

Минорное обновление в RDot

Внес небольшие изменения в RDot.

Раньше классы в которых не было объявлено ни одного метода обрабатывались как предзагруженные. Что, в общем-то, неправильно — вполне нормально создание классов без (пере-)определения методов, но с установкой каких-то параметров... Например, такое:

class Root

  class << self

    def process(str)
      str.gsub(@pattern, @template)
    end

    def pattern(regexp)
      @pattern = regexp
    end

    def template(str)
      @template = str
    end

    private :pattern, :template

  end

end

class Alpha < Root
  
  pattern /[aA]/

  template '&alpha;'

end

class Beta < Root
  
  pattern /[bB]/

  template '&beta;'

end

Зачем это делать именно отдельными классами, а не, скажем, посредством экземпляров — вопрос отдельный, но вообще вполне юзабельная возможность для всяких DSL. Теперь классы Alpha и Beta попадут в rdot-схему.

Комментариев нет:

Отправить комментарий