Deklarativna
¶ ↑
A declarative HTML embedded DSL¶ ↑
Purpose¶ ↑
The purpose of Deklarativna is to make HTML template creation an integrated part of frontend development, allowing the programmer to write human readable code with not much effort.
Conception¶ ↑
This work has been started as a tool for teaching declarative programming and DSL creation to universitary students. This is a work in progress and I hope someday will have integration with the most popular web frameworks
Current Status¶ ↑
All HTML common tags are implemented. Full support for XML tags with xml_single_tag and xml_double_tag is added.
Updates¶ ↑
Sinatra integration is demonstrated on the examples¶ ↑
HTML/XML Fully supported¶ ↑
rubygem released¶ ↑
Next Steps:¶ ↑
Rails plugin¶ ↑
CSS 2, 3 wrapper??¶ ↑
jQuery helpers ??¶ ↑
Installation¶ ↑
You can download this gem from RubyGems.org by running
$ gem install deklarativna
Usage¶ ↑
Function Based Approach¶ ↑
require 'deklarativna' require 'deklarativna_utils' include Deklarativna include DeklarativnaUtils renderable = html {[ head { css { ".hello { float: right; color: #456546 }" } }, body { p("class"=>"hello") { "Hello World!" } } ]} HTMLExporter.new.launch_rendered_html_on_browser renderable
Class Based Approach¶ ↑
require 'deklarativna' require 'deklarativna_utils' class ChildTemplate < BaseTemplate def _head css { "h1 { color: red; }" } end def _body [ h1 { "Deklarativna" }, p { "how cool is this??" }, p { "really cool" } ] end end include DeklarativnaUtils HTMLExporter.new.launch_rendered_html_on_browser ChildTemplate.new.render
Sinatra Integration¶ ↑
require 'rubygems' require 'sinatra/base' require 'deklarativna' class IndexTemplate < BaseTemplate def _body [ p { "Testing Dinamic File Generation using sinatra" }, table("border"=>"1") {[ tr {[ td { "row 1, value 1" }, td { "row 1, value 2" } ]}, tr {[ td("colspan"=>"2") { "Only value in this row" } ]} ]} ] end end class DeklarativnaSinatra < Sinatra::Base get '/' do IndexTemplate.new.render end end DeklarativnaSinatra.run!
Test this by running
$ ruby dinamic_sinatra_example.rb
And open your browser on localhost:4567
Now you can surf the examples on the examples directory! There are some pretty cool examples, and I will be publishing more complex examples over time.
I’m coding a blog using Deklarativna, Check it out! github.com/dlitvakb/Blogging-Deklarativna