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)

<*> 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/

Kirim email ke