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/

Kirim email ke