Mudah - mudahan bisa ... kesehariannya masih pake BOO-Language (M$-NET) / Castle MonoRails...
pas lagi banyak libur baru sempet update w2tags /wh e=mc2inhologram On 4/13/09, ahmad gozali <[email protected]> wrote: > 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 doesn’t 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) > > http://rubyurl.com/Q8DD > http://news.gmane.org/gmane.comp.lang.ruby.region.indonesia > > Yahoo! Groups Links > > > > ------------------------------------ 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/

