[Проект] Revel Web Framework

  1. Тъй като вече доста съм задълбал в Ruby on Rails фреймуърка (прочетох 3 книги и вече разработвам сайт) и открих, че Revel се стреми да постигне нещо подобно в Go, реших да направя нещо свързано с Revel.

    Не смятам да правя приложение, което използва Revel, защото вече знам колко трудоемко е да се разучи един фреймуърк, а по-скоро да се задълбая в някакъв детайл от фреймуърка, който е относително отделен от останалите, и да го подобря.

    Засега идеята ми е да се фокусирам върху темплейтите. Най-долу в сайта на Ravel пише:

    Wishlist:

    • [...]
    • Pluggable template loader -- Presently only Go templates are supported by Revel (although the developer could use their own library independently). Providing an interface that makes any template language pluggable would be ideal.

    Ще опитам да проуча какви са изискванията и доколко ще е трудно да направя интерфейс за темплейти и, ако се окаже твърде сложно, може да направя парсер (чете темплейта, изпълнява кода в него и връща html код) за Haml или Slim темплейтите от Rails, който да работи в Revel.

    Съжалявам за късния избор на тема. До края на годината ще фиксирам под формата на отговор към темата - точно какво по Revel ще допринасям.

    Весели празници!

  2. Прегледах по-подробно Revel. Ще се пробвам да направя въпросния pluggable template loader.

    До колкото видях, ще трябва да преработя template.go, който връзва темплейт файловете, Revel и десетина помощни функции към темплейтите, напр. за генериране на checkbox или плурализация. Не открих как точно се парсват default темплейтите, конструкцията с вграждане в html напр. <div class="message {{if eq .User "you"}}you{{end}}"> все още ми е мистично как работи, но смятам, че ще се справя.

    Та ще трябва този файл така да го преработя, че да позволи напр. тази библиотека за HAML да може да се инсталира във фреймуърка с команда. Ще се опитам да съобразя API-то донякъде и с нея и, ако е лесно, ще внеса и там промени, за да отговаря на API-то.

    Като краен резултат API-то трябва да позволява потребителят да може да инсталира с команда произволен темплейт енджин (отговарящ на API-то) и да може да ползва същите помощни функции на Revel в темплейт файловете, както и произволен Go код.

Трябва да сте влезли в системата, за да може да отговаряте на теми.