mantap om widi :D mau presentasi w2tags lagi di kopdar ntar? :D --Gozali
On Mon, Apr 13, 2009 at 12:23 PM, Widi Harsojo <[email protected]> wrote: > sudo gem install w2tags > http://rubyforge.org/projects/w2tags/ > > Release Name: 0.9.3 > http://rubyforge.org/frs/shownotes.php?group_id=6464&release_id=33258 > > Enjoy.... > > /wh > > e=mc2inhologram > > Notes: > W2Tags is the way to tags, a short cut / macros. When it do, it use some > patern > define in HOT file to produce tags from minimal code to become full > fledge tags. > Syntax mimics HAML to easy transisition, and proven to be useable and best. > > HAML like: > ~~~~~~~~~~ > %h1 New user > = error_messages_for :user > -form_for @user do |f| > %p > %b Name > %br > = f.text_field :name > %p > %b Email > %br > = f.text_field :email > %p > %b Last login > %br > = f.datetime_select :last_login > %p > = f.submit "Create" > = link_to 'Back', users_path > > You can see that it not DRY, some patern will go to HOT files > rails_basic.hot > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > >>_input > %p > %b $0.capitalize.gsub('_',' ')- > %br > = f.text_field :$0 > > >>_submit > !/ > %p > = f.submit "$0" > > and code in source: > ~~~~~~~~~~~~~~~~~~~ > !hot!rails_basic > %h1 New user > = error_messages_for :user > -form_for @user do |f| > -input name;email;last_login > -submit Create > = link_to 'Back', users_path > > ==HILIGHT== > ~~~~~~~~~~~ > > SINATRA HOOK > ~~~~~~~~~~~~ > sinatra usualy consist only one file main.rb, so just add below > sinatra require: > > require 'w2tags' > require 'w2tags/sinatra_hook' > > RAILS HOOK > ~~~~~~~~~~ > add inside file config/environment.rb in the bottom: > > require 'w2tags' > require 'w2tags/rails_hook' > > OR You can add + add Scaffold Plugins by using command: > > w2tags -rails > ./script/generate w2scaffold post title:string body:text published:boolean > > PASS TEST on Linux Ubuntu 8.10 and win32 > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > test for 57 assertions on: > > Linux Ubuntu 8.10 Ruby 1.8.x > Win32 MinGW Ruby 1.9.1 > > FIX COMPATIBLE between ruby 1.8.x and 1.9.1 > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > Modular, Plugin for Block > ~~~~~~~~~~~~~~~~~~~~~~~~~ > this will make it easy to integerate with another parser > like minimalist SASS (66-4)LOC: > > %head > ~~~ > #main > :width 97% > p, div > :font-size 2em > a, li > :font-weight bold > pre > :font-size 3em > a > :font-weight bold > :text-decoration none > &:hover > :text-decoration underline > &:visited > :border thin 1px blue > :font > :weight normal > :size 2em > #main > :width 90% > #sidebar > :float left > :margin-left 20% > .ie6 & > :margin-left 40% > %body > > <head> > <style> > #main{ > width:97%; > } > #main p,#main div{ > font-size:2em; > } > #main p a,#main p li,#main div a,#main div li{ > font-weight:bold; > } > #main pre{ > font-size:3em; > } > a{ > font-weight:bold; > text-decoration:none; > } > a:hover{ > text-decoration:underline; > } > a:visited{ > border:thin 1px blue; > font-weight:normal; > font-size:2em; > } > #main{ > width:90%; > } > #main #sidebar{ > float:left; > margin-left:20%; > } > .ie6 #main #sidebar{ > margin-left:40%; > } > </style> > </head> > <body> > </body> > > Run on IRB > ~~~~~~~~~~ > C:\>w2tags -irb > ARGV : -irb > > Your W2Tags instance object stored in WH... > Ex: puts WH.parse_line("#content\n %span Hello") > Shortcut command => wh("#content\n %span Hello") > > irb(main):001:0> wh(<<END) > irb(main):002:0" #wow > irb(main):003:0" #kereen > irb(main):004:0" %span Hello World > irb(main):005:0" END > =>C:/mingw/lib/ruby/gems/1.9.1/gems/w2tags-0.9.1/hot/html.hot > <div id="wow"> > <div id="kereen"> > <span>Hello World</span> > </div> > </div> > => nil > irb(main):006:0> > > List of HAML Like command: > ~~~~~~~~~~~~~~~~~~~~~~~~~~ > % Tag formating > # div formating with attribute id > . div formating with attribute class > \ line text / no parsing > - translate to Ruby code > = translate to Ruby code > == translate to Ruby String > -# block remark / comment not include on result > -! block not parse > > List of W2TAGS command: > ~~~~~~~~~~~~~~~~~~~~~~~ > : input formating with attribute name > ^ shortcut for NextTag in html > ~^ re-assign shortcut for NextTag in html > < disable auto close tags when last params has char "<" > &var= define variable for it use later on params inside w2tags command > &var! use variable on params inside w2tags command > @var= define variable with uniq value for it use later on params > inside w2tags command > @var! use variable with uniq value on params inside w2tags command > ~~~ SASS Block > > InLine Parsing (%tag text%) > ~~~~~~~~~~~~~~~~~~~~~~~~~~~ > that's the first question came in FAQ on HAML, and I think this > implementation fit in my brain and it cover the Key-Variable too. > Lets see some example from minimal inline to inline with Key-Variable: > > I Like (%b cake%)! > I Like (%span.b cake%)! > I Like (%strong.bold{banana="boys"} a(%i.italic cake%)%)! > > I Like <b>cake</b>! > I Like <span class="b">cake</span>! > I Like <strong class="bold" banana="boys">a<i > class="italic">cake</i></strong>! > > Var-Constanta available in HOT > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > when parsing line as a HOT command, you can combine your code with this > var > > Example: > > %div&joel:name#id.class{op="atribute"}== info > > $$ => full Key-Variable ( :name#id.class{op="atribute"}== ) > $& => Variable for HOT ( &joel ) > $: => name-Variable ( :name ) > $# => id-Variable ( #id ) > $. => class-Variable ( .class ) > $@ => attribute-Variable ( {op="atribute"} ) > *& => Variable for HOT ( joel ) > *: => name-Variable ( name ) > *# => id-Variable ( id ) > *. => class-Variable ( class ) > *@ => class-Variable ( op="atribute" ) > *att* => attribute-Variable ( op="atribute" ) > *all* => all-Variable ( name="name" id="id" class="class" > op="atribute" ) > *name* => name-Variable ( name="name" ) > *id* => id-Variable ( id="id" ) > *class*=> class-Variable ( class="class" ) > > Sample erb.hot with optional Value => ~ $0 ~ > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > >>input > <input *all*~value="$0"~/> > > Key-Variable are attribute attach to tag like :name, #id and .class and > now > you can assign that id without value > > %input:address#.light > :address#.light > :user.address#.light > :user.address#.light Tokyo > > <input name="address" class="light" /> > <input name="address" class="light" /> > <input name="user.address" class="light" /> > <input name="user.address" class="light" value="Tokyo"/> > > PARAMETERS VARIABLE (MAX:9) > ~~~~~~~~~~~~~~~~~~~~~~~~~~~ > $*, $0 - $9. When you invoke HOT command like -all_params > one;two;three;four > you are invoking HOT command with 4 parameters ($0,$1,$2,$3), > and the translation will be done like sample below: > > >>_all_params > <div>$*</div> > -magic $* > $1 > $0 > > >>_magic > <magic>$0</magic> > > $* meaning: this variable will be fill-in after all parameters got > fill-in, > as example we supply 4 parameters and parameters fill in to variable only > two ($0 = one, $1 = two) the rest will go to variable $* = > three;four > > !hot!test > -all_params one;two;three;four > > <div>three;four</div> > <magic>three</magic> > <magic>four</magic> > two > one > > remember passing paramter to HOT doesnt mean that variable must start > from zero, its only a guide that you can have multiple params to pass in > correct order see sample after change the HOT but the result still the > same > > >>_all_params > <div>$*</div> > -magic $* > $4 > $3 > > >>_magic > <magic>$4</magic> > > PARAMETERS VARIABLE translate to RUBY CODE ( =$0 ) > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > some time it need a block of ruby code / ruby string code inside attribute > of tag but it must be simple and easy to remember the command and this is > how the implementation > > >>_form > %form{action="=$0"} > > -form edit > > <form action="<%= edit %>"> > </form> > > PARAMETERS VARIABLE translate to RUBY STRING CODE ( ==$0 ) > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > >>_form2 > %form{action="==$0"} > > -form edit/1 > > <form action="<%= "edit/1" %>"> > </form> > > PARAMETERS VARIABLE INTERPOLATION > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > you can do interpolation on variable > > >>_all_params > <div>$*</div> > -magic $* > $4 > $3 > > >>_magic > <magic> $4.upcase.reverse~ </magic> > > !hot!test > -all_params one;two;three;four > > <div>three;four</div> > <magic> EERHT </magic> > <magic> RUOF </magic> > two > one > > ^ shortcut for NextTag in html > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > when you type ul tag, commonly it follow the li tag and this is > the benefit of using this command. > > Predefine shortcut are: > > %html => %head $* > %head => %body $* > %ol => %li $0 > %ul => %li $0 > %dl => %dt $0 > %dd => %dt $0 > %form => %input $0 > %select => %option $0 > %tr => %th $0 #first line > %tr => %td $0 #after first line > > Basic Example: > > %ul > ^ this is a bullet list 1 > ^ this is a bullet list 2 ; this is a bullet list 3 > > <ul> > <li>this is a bullet list 1</li> > <li>this is a bullet list 2</li> > <li>this is a bullet list 3</li> > </ul> > > With Attribute: > > %ul > ^.hilite{wow="kereen"} this is a bullet list 1 > ^.hilite{wow="kereen"} this is a bullet list 2 ; this is a bullet list 3 > > <ul> > <li class="hilite" wow="kereen">this is a bullet list 1</li> > <li class="hilite" wow="kereen">this is a bullet list 2</li> > <li class="hilite" wow="kereen">this is a bullet list 3</li> > </ul> > > ~^ re-assign shortcut for NextTag in html > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > sometime I need result from shortcut for NextTag already include > class or attribut and this command play. > > %ul > ~^%li.hilite{wow="kereen"} > ^ this is a bullet list 1 > ^ this is a bullet list 2 ; this is a bullet list 3 > > <ul> > <li class="hilite" wow="kereen">this is a bullet list 1</li> > <li class="hilite" wow="kereen">this is a bullet list 2</li> > <li class="hilite" wow="kereen">this is a bullet list 3</li> > </ul> > > or you can put this command to a HOT file and it will use just like > regular W2TAGS command > > >>_ul > %ul > ~^%li.hilite{wow="kereen..."} > > !hot!common > -ul > ^ this is a bullet list 1 > ^ this is a bullet list 2 ; this is a bullet list 3 > > <ul> > <li class="hilite" wow="kereen...">this is a bullet list 1</li> > <li class="hilite" wow="kereen...">this is a bullet list 2</li> > <li class="hilite" wow="kereen...">this is a bullet list 3</li> > </ul> > > Var and Unique Var set and get > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > @myvar=one;two;three > @myvar=five;one;two > %ul > ^ @myvar! > > <ul> > <li>one</li> > <li>two</li> > <li>three</li> > <li>five</li> > </ul> > > > > Changes: > = Change Log > > Below is a complete listing of changes for each revision of W2TAGS. > > == 0.9.3 > > === Pass test on Linux Ubuntu 8.10 and win32 > > test for 57 assertions on: > > Linux Ubuntu 8.10 Ruby 1.8.x > Win32 Ruby 1.9.1 > > === Fix Compatible between ruby 1.8.x and 1.9.1 > > "test var"[-1] # only work on ruby 1.9.1 > "test var"[-1,1] # worked! > > === Split Code to new file for w2tags Block not parsing > > When I need to implement Sass Parser on w2tags Block not parsing > its best way to seperate to new file for (plain_text, remark, sass). > > === Implement Simple Sass Parser > > Its my need for simple Sass Parser, focus on DRY up the Sass code, > calculation color, global variable not implement. > > === update erb.hot > > now you can make "a href" more readable with var in Key-Variable > > OLD: > ~~~~ > >>_a > %a$${href="#"} $* > > NEW: > ~~~~~ > >>_a > %a$${href="*&"} $* > > -a&/ Home => <a href="/">Home</a> > -a&/post/edit Edit => <a href="/post/edit">Edit</a> > > > ------------------------------------ > > ID-Ruby > Berdiskusi dan belajar bersama Bahasa Pemrograman Ruby, termasuk segala > varian Ruby (JRuby, Rubinius, IronRuby, XRuby), dan program yang dibuat > dengan Ruby (Ruby on Rails, JRuby on Rails, Merb) > > http://rubyurl.com/Q8DD > http://news.gmane.org/gmane.comp.lang.ruby.region.indonesia > > Yahoo! Groups Links > > > > [Non-text portions of this message have been removed] ------------------------------------ ID-Ruby Berdiskusi dan belajar bersama Bahasa Pemrograman Ruby, termasuk segala varian Ruby (JRuby, Rubinius, IronRuby, XRuby), dan program yang dibuat dengan Ruby (Ruby on Rails, JRuby on Rails, Merb) <*> Kunjungi *arsip milis* id-ruby di http://groups.yahoo.com/group/id-ruby/messages http://www.mail-archive.com/[email protected]/ http://rubyurl.com/Q8DD http://news.gmane.org/gmane.comp.lang.ruby.region.indonesia <*> Baca peraturan id-ruby sebelum posting http://rubyurl.com/gay1 <*> Ikutilah Jajak Pendapat ID-Ruby http://rubyurl.com/3CCt <*> Links ID-Ruby http://rubyurl.com/n96r <*> Database ID-Ruby http://rubyurl.com/Iw3u <*> Kunjungi Situs Resmi Ruby Indonesia http://www.ruby-lang.org/id/ <*> Join Ruby Indonesia on Facebook http://rubyurl.com/QV48 <*> Join Ruby Indonesia on LinkedIn http://rubyurl.com/eh0i Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/id-ruby/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/id-ruby/join (Yahoo! ID required) <*> To change settings via email: mailto:[email protected] mailto:[email protected] <*> To unsubscribe from this group, send an email to: [email protected] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/

