w2tags 0.9.65 → 0.9.67

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,10 +1,10 @@
1
1
  = W2TAGS
2
2
  === Run on MRI Ruby : 1.8.6 / 1.9.x
3
3
 
4
- me@ubuntu:~$ sudo gem install wharsojo-w2tags
4
+ gem install w2tags
5
5
 
6
- me@ubuntu:~$ w2tags -irb
7
- ARGV : -irb
6
+ w2tags -irb
7
+ ARGV : -irb
8
8
 
9
9
  Your W2Tags instance object stored in WH...
10
10
  Ex: puts WH.parse_line("#content\n %span Hello")
@@ -13,15 +13,15 @@
13
13
  irb(main):001:0> wh <<END
14
14
  irb(main):002:0" #wow
15
15
  irb(main):003:0" #kereen
16
- irb(main):004:0" . Hello World
16
+ irb(main):004:0" .greeting Hello World
17
17
  irb(main):005:0" END
18
- =>/usr/lib/ruby/gems/1.8/gems/wharsojo-w2tags-0.9.49/hot/erb.hot
18
+ =>/usr/lib/ruby/gems/1.8/gems/w2tags-0.9.67/hot/erb.hot
19
19
  <div id="wow">
20
20
  <div id="kereen">
21
- <div>Hello World</div>
21
+ <div class="greeting">Hello World</div>
22
22
  </div>
23
23
  </div>
24
- => nil
24
+ => ["<div id="wow">\n", " <div id="kereen">\n", " <div class="greeting">Hello World</div>\n", " </div>\n", "</div>\n"]
25
25
  irb(main):006:0>
26
26
 
27
27
  == DESCRIPTION:
@@ -43,8 +43,9 @@ define uniq variable "@var=", Key-Variable
43
43
  "$:","*:" for attribute NAME,
44
44
  "$#","*#" for attribute ID,
45
45
  "$.","*." for attribute CLASS,
46
+ "$$" for all Key-Variable,
46
47
  "$@","*@" for custome attribute,
47
- "$$" for all Key-Variable.
48
+ "$=" for ruby code ("=" or "==" last Key-Variable).
48
49
 
49
50
  This Constanta will be ready every time it parse the W2TAGS HOT (% / -).
50
51
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.65
1
+ 0.9.67
data/bin/w2tags CHANGED
@@ -57,7 +57,7 @@ end
57
57
  arg = ARGV
58
58
  if arg.size>0
59
59
  arg = ['w2erb'] + arg if arg.size==1 && arg[0]=='-a'
60
- puts 'ARGV : '+arg.join(" ")
60
+ puts 'ARGV : '+arg.join(" ")
61
61
  puts arg[1]
62
62
 
63
63
  WH = W2Tags::Parser.new
@@ -80,7 +80,9 @@ if arg.size>0
80
80
 
81
81
  class Object
82
82
  def wh(str)
83
- puts WH.parse_line(str)
83
+ rtn = WH.parse_line(str)
84
+ puts rtn
85
+ rtn
84
86
  end
85
87
  end
86
88
 
data/doc/History.rdoc CHANGED
@@ -2,6 +2,86 @@
2
2
 
3
3
  Below is a complete list of changes for each revision of W2TAGS.
4
4
 
5
+ == 0.9.67
6
+
7
+ === Parser
8
+ * New Var-Constanta in HOT - "$="
9
+ * Splitter ':' in hot params
10
+
11
+ ==== New Var-Constanta in HOT - "$=", this var fix the need of reconstruct Key-attributes to the tag
12
+ with costume attribute
13
+
14
+ -# Example
15
+
16
+ >>_menu
17
+ %div$${editor="eclipse" *@}$= $0
18
+
19
+ >>>W2TAGS>>>
20
+ -menu.dor{style="font:bold;"}== 0
21
+
22
+ <div class="dor" editor="eclipse" style="font:bold;"><%= "0" %></div>
23
+
24
+ ==== Parameter in hot support splitter ':' to enhance the parameter manipulation
25
+
26
+ -# Example:
27
+
28
+ >>_a
29
+ %a$${href="$0.split(':')[1].to_s.strip~" *@}$= $0.split(':')[0].to_s.strip~
30
+
31
+ %a$${href="$0:1" *@}$= $0:0
32
+
33
+ Two command above will produce the same result
34
+
35
+ -a.dodol.garut{style="blue"}= \
36
+ Wow : # ;\
37
+ Home : / ;\
38
+ Next : /next
39
+
40
+ -a.dodol.garut{style="background:blue;"}= \
41
+ Wow : # ;\ Home : / ;\
42
+ Next : /next
43
+
44
+ <a class="dodol garut" href="#" style="background:blue;"><%= Wow %></a>
45
+ <a class="dodol garut" href="/" style="background:blue;"><%= Home %></a>
46
+ <a class="dodol garut" href="/next" style="background:blue;"><%= Next %></a>
47
+
48
+ == 0.9.66
49
+
50
+ === Parser
51
+ * Auto closing tag in HOT now properly indented
52
+
53
+ ==== Auto closing tag in HOT now properly indented
54
+ this example show how we redefine the tag %script to automatically
55
+ generate <script *all**@type="text/javascript" charset="utf-8">, with
56
+ xhtml comment and line below this tag must not be parse
57
+
58
+ -# Example:
59
+ >>script
60
+ <script *all**@type="text/javascript" charset="utf-8">
61
+ %script_end
62
+ -!
63
+
64
+ >>script_end
65
+ <</
66
+ </script>
67
+
68
+ >>_script_tag
69
+ %script
70
+ //<![CDATA[
71
+ ==$0;
72
+ //]]>
73
+
74
+ >>>W2TAGS>>>
75
+ -script_tag var instant= '#{@line}'
76
+
77
+ Result of w2tags command above will be xhtml tag below with proper indentation
78
+
79
+ <script type="text/javascript" charset="utf-8">
80
+ //<![CDATA[
81
+ <%= "var instant= '#{@line}'" %>;
82
+ //]]>
83
+ </script>
84
+
5
85
  == 0.9.65
6
86
 
7
87
  === Parser
data/hot/erb_base.hot CHANGED
@@ -61,7 +61,7 @@
61
61
  <</
62
62
  <% end %>
63
63
 
64
- >>_a
64
+ >>_a1
65
65
  %a$${href="*&"} $*
66
66
 
67
67
  >>_a2
data/hot/html.hot CHANGED
@@ -75,3 +75,9 @@
75
75
  >>_ie_end
76
76
  <</
77
77
  <![endif]-->
78
+
79
+ >>_a
80
+ %a$${href="$0:1" *@}$= $0:0
81
+
82
+ >>_ax
83
+ %a$${href="$0.split(':')[1].to_s.strip~" *@}$= $0.split(':')[0].to_s.strip~
data/lib/w2tags/parser.rb CHANGED
@@ -204,9 +204,11 @@ module W2Tags
204
204
  @row.gsub!(/([\n\t ]*$)/,'')
205
205
  @row << "#{@ln_end.strip}\n"
206
206
  end
207
- if @row.strip!=""
207
+ if @row.strip!="" # responsible for generating good output
208
208
  p "#####> #{@row}" if @dbg[:parse]
209
- @doc_out << @row.rstrip+"\n"
209
+ @doc_out << (@row.rstrip + "\n")
210
+ #@doc_out << @row.rstrip # not working for
211
+ #@doc_out << "\n" # shortcut if elsif else
210
212
  end
211
213
  @row
212
214
  end
@@ -276,12 +278,12 @@ module W2Tags
276
278
  # try to shift empty line create document and add current
277
279
  # row to source. but it means re parsing current row.
278
280
  def swap_last_empt_src_with_end_tg(end_tg)
279
- last = []
280
- while @doc_out[-1] && @doc_out[-1].to_s.strip == ''
281
- last << @doc_out.pop
281
+ while @doc_out[-1] && @doc_out[-1].strip == ''
282
+ @doc_out.pop
282
283
  end
284
+ @doc_out<< "\n" if @doc_out[-1] && @doc_out[-1][-1,1] != "\n" # responsible for generating good output
283
285
  end_tg.shift if end_tg[0].strip==''
284
- @doc_src = end_tg + @doc_src
286
+ @doc_src = end_tg + @doc_src #; p @doc_src; p @doc_out
285
287
  #p "Swp..: #{@doc_src[-1]}" if @dbg[:parse]
286
288
  end
287
289
 
@@ -450,6 +452,7 @@ module W2Tags
450
452
  @new += "\n"+@spc
451
453
  end
452
454
  end
455
+ p "Rept1: #{@new}" if @dbg[:parse]
453
456
  elsif new_alls==[] && new_prms.size==1 && prms.size>1
454
457
  tmp = ""
455
458
  rpt = @rgx.to_s.gsub(@rgx[3]+"\n","")
@@ -474,15 +477,25 @@ module W2Tags
474
477
  tmp<< "\n#{@spc}" if i+1<prms.size
475
478
  end
476
479
  end
480
+ p "Rept2: #{tmp}" if @dbg[:parse]
477
481
  @new = tmp
478
482
  else
479
483
  i = new_prms.size - 1
480
484
  new_prms.sort.reverse.each do |x|
485
+ while Regexp.new('\\'+x+':(\d+)') =~ "\n#{@new}" do
486
+ idx = $1
487
+ src = $~.to_s
488
+ rpl = idx ? prms[i].split(':')[idx.to_i].to_s.strip : ''
489
+ p "Splt : #{prms[i]} => #{idx}" if @dbg[:parse]
490
+ @new.gsub!(src,rpl)
491
+ end
492
+
481
493
  rgx = '\\'+x+'\.([^~ ]+)~' #/\$0\.([^~ ]~)/ => fix: next-tag (~^)
482
494
  eva_v = Regexp.new(rgx) #Ex:$1.upcase~
483
495
  while eva_v=~ "\n#{@new}" do
484
496
  src = "#{x}.#{$1}~" #p "\n#{@new} => #{src}"
485
497
  evl = "\"#{prms[i]}\".#{$1}" #p "====> #{evl} <=="
498
+ p "Eval : #{evl}" if @dbg[:parse]
486
499
  rpl = prms[i] ? eval(evl).to_s : ""
487
500
  @new.gsub!(src,rpl)
488
501
  end
@@ -523,11 +536,11 @@ module W2Tags
523
536
  @doc_src = scrpt[1,99]+@doc_src
524
537
  else
525
538
  spc = send[/(^[ \t]*)/,1].to_s
526
- rpls << send.gsub(/\n/,"\n#{spc}") + "\n"
539
+ rpls << (send.gsub("\n","\n#{spc}") + "\n")
527
540
  end
528
541
  end
529
542
  end
530
- p "End2 : #{rpls.strip}" if @dbg[:parse] && rpls!= ''
543
+ p "End2 : #{rpls}" if @dbg[:parse] && rpls!= ''
531
544
  rpls
532
545
  end
533
546
 
@@ -616,14 +629,16 @@ module W2Tags
616
629
  # this var will be use in parsing w2tags/hot command
617
630
  def nameidclass_var()
618
631
  #@key = keys = @rgx[2].strip.gsub(/(\{(.*)\})/,'') #greedy :)
619
- @key = keys = @key.strip.gsub(/(\{(.*)\})/,'') #greedy :)
632
+ @key = keys = @key.strip.gsub(/(\{(.*)\})(=*)/,'') #greedy :)
620
633
  @att = $2.to_s.strip
634
+ lkey = $3.to_s.strip
621
635
  @mem_var['$$' ]= ''
622
636
  @mem_var['$&' ]= ''
623
637
  @mem_var['$:' ]= ''
624
638
  @mem_var['$#' ]= ''
625
639
  @mem_var['$.' ]= ''
626
640
  @mem_var['$@' ]= $1.to_s
641
+ @mem_var['$=' ]= ''
627
642
  @mem_var['*&' ]= ''
628
643
  @mem_var['*:' ]= ''
629
644
  @mem_var['*#' ]= ''
@@ -675,12 +690,15 @@ module W2Tags
675
690
  @mem_var['*all*'] << @mem_var['*@']
676
691
  @mem_var['*att*'] = @mem_var['*@']
677
692
  if @key[0,1]!='='
678
- if @key.gsub!(/==$/,'')
693
+ @key << lkey
694
+ if @key.gsub!(/==+$/,'')
679
695
  @mem_var['*code*'] = '<%= "$*" %>'
680
696
  @mem_var['$@']<< "=="
697
+ @mem_var['$='] = "=="
681
698
  elsif @key.gsub!(/=$/,'')
682
699
  @mem_var['*code*'] = "<%= $* %>"
683
700
  @mem_var['$@']<< "="
701
+ @mem_var['$='] = "="
684
702
  end
685
703
  end
686
704
  end
@@ -704,7 +722,7 @@ module W2Tags
704
722
  prms = @rgx[3].to_s.strip
705
723
  if /^\!/ =~ @key
706
724
  @new = (multi_end2(nil)+@spc+@rgx.to_s.gsub('%!','%')).split("\n")
707
- swap_last_empt_src_with_end_tg(@new)
725
+ swap_last_empt_src_with_end_tg(@new) #@new array of src
708
726
  @row = ''
709
727
  else
710
728
  nameidclass_var()
@@ -841,7 +859,7 @@ module W2Tags
841
859
  else
842
860
  @plt_opt= ''
843
861
  #rtn= true if @selector.select{|f|send(f)}.length>0
844
- rtn = true if shortcut_exec( /(^[\t ]*)\-([\w\-&\/:#.%]*\{.*\}[=]?) *([^\n]*)\n/)
862
+ rtn = true if shortcut_exec( /(^[\t ]*)\-([\w\-&\/:#.%]*\{.*\}=*) *([^\n]*)\n/)
845
863
  rtn = true if shortcut_exec( /(^[\t ]*)\-([\w\-&\/:#.%=]*) *([^\n]*)\n/)
846
864
  rtn = true if shortcut_equal( /(^[\t ]*)=([\w\-&\/:#.%=]*) *([^\n]*)\n/)
847
865
 
@@ -1,44 +1,3 @@
1
- <style>
2
- td{padding:0;}
3
- .h{display:none;}
4
- #content a{font-size:1em;}
5
-
6
- #tryit td{
7
- vertical-align:top;}
8
-
9
- textarea {
10
- border:0;
11
- font-size:11px;
12
- line-height:12px;}
13
-
14
- #link{
15
- width:200px;}
16
-
17
- textarea.in1{
18
- width:400px;}
19
-
20
- textarea.in2{
21
- width:450px;
22
- height:539px;
23
- background-color:#EEEEEE;}
24
-
25
- iframe{height:539px;}
26
- #ifr{
27
- width:450px;}
28
-
29
- td.i2{
30
- border:2px inset;}
31
-
32
- .CodeMirror-line-numbers div{
33
- line-height:1.362em;
34
- margin: 0;
35
- width:20px;
36
- text-align:right;
37
- padding-right:1px;
38
- background:#EE00FF;
39
- }
40
-
41
- </style>
42
1
  <div id="content">
43
2
  <table id="tryit">
44
3
  <tr>
@@ -164,61 +123,4 @@ td.i2{
164
123
  </tr>
165
124
  </table>
166
125
  </div>
167
- <script type="text/javascript">
168
- var editor1 = null;
169
- var editor2 = null;
170
- $(function(){
171
- $('#btnclick').click(function(){
172
- $('#load').show();
173
- $.post('/parse',{input : editor1.getCode()},function(data){
174
- editor2.setCode(data);
175
- $('td.i3').hide();
176
- $('td.i2').show();
177
- $('#load').hide();
178
- });
179
- });
180
-
181
- $('a.load').live('click',function(){
182
- $('#load').show();
183
- var loc= "/w2/"+$(this).attr('loc')+".w2erb.htm";
184
- $.get(loc, function(data){
185
- editor1.setCode(data);
186
- $('#load').hide();
187
- });
188
- });
189
-
190
- $('a.load2').live('click',function(){
191
- $('#load').show();
192
- var src= '/w2/'+$(this).attr('loc')+'.hot.html'
193
- $('#ifr').attr('src',src);
194
- $('td.i2').hide();
195
- $('td.i3').show();
196
- });
197
-
198
- $('a.load').cluetip({showtitle : false});
199
-
200
- editor1 = CodeMirror.fromTextArea('code1', {
201
- parserfile: ["parsew2tags.js"],
202
- stylesheet: "/css/rubycolors.css",
203
- path: "../js/",
204
- lineNumbers: true,
205
- textWrapping: false,
206
- indentUnit: 4,
207
- parserConfig: {},
208
- width: '400px',
209
- height: '539px'
210
- });
211
-
212
- editor2 = CodeMirror.fromTextArea('code2', {
213
- parserfile: ["parsexml.js", "parsecss.js", "tokenizejavascript.js", "parsejavascript.js", "parsehtmlmixed.js"],
214
- stylesheet: ["css/xmlcolors.css", "css/jscolors.css", "css/csscolors.css"],
215
- path: "../js/",
216
- lineNumbers: false,
217
- textWrapping: false,
218
- indentUnit: 4,
219
- parserConfig: {},
220
- width: '450px',
221
- height: '535px'
222
- });
223
- });
224
- </script>
126
+ <script type="text/javascript" src="/javascripts/application.js" > </script>
@@ -4,6 +4,7 @@
4
4
  <head>
5
5
  <meta content="text/html; charset=utf-8" http-equiv="Content-type"/>
6
6
  <title>W2tags Try</title>
7
+ <link rel="stylesheet" href="/stylesheets/application.css" type="text/css" />
7
8
  <link rel="stylesheet" href="/stylesheets/jquery.cluetip.css" type="text/css" />
8
9
  <link rel="stylesheet" href="/stylesheets/jquery.live.accordion.css" type="text/css" />
9
10
  <script type="text/javascript" src="/js/codemirror.js" > </script>
data/tasks/setup.rb CHANGED
@@ -17,7 +17,7 @@ PROJ = OpenStruct.new(
17
17
  :authors => 'Widi Harsojo',
18
18
  :email => 'wharsojo@gmail.com',
19
19
  :url => "\000",
20
- :version => ENV['VERSION'] || '0.9.65',
20
+ :version => ENV['VERSION'] || '0.9.67',
21
21
  :exclude => %w(tmp$ bak$ ~$ CVS \.svn/ \.git/ ^pkg/),
22
22
  :release_name => ENV['RELEASE'],
23
23
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: w2tags
3
3
  version: !ruby/object:Gem::Version
4
- hash: 185
4
+ hash: 189
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 65
10
- version: 0.9.65
9
+ - 67
10
+ version: 0.9.67
11
11
  platform: ruby
12
12
  authors:
13
13
  - widi harsojo
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-20 00:00:00 +07:00
18
+ date: 2011-01-05 00:00:00 +07:00
19
19
  default_executable:
20
20
  dependencies: []
21
21