w2tags 0.9.3 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. data/COPYING +340 -340
  2. data/LICENSE +6 -6
  3. data/MIT-LICENSE +18 -18
  4. data/Manifest.txt +28 -25
  5. data/README.rdoc +27 -21
  6. data/Rakefile +1 -1
  7. data/VERSION +1 -1
  8. data/bin/w2tags +173 -143
  9. data/doc/History.rdoc +88 -0
  10. data/hot/erb.hot +18 -156
  11. data/hot/erb_base.hot +164 -0
  12. data/hot/html.hot +30 -31
  13. data/hot/rails/scaffold.hot +15 -15
  14. data/hot/vm.hot +8 -8
  15. data/hot/vm2.hot +34 -34
  16. data/hot/vm_crud.hot +34 -34
  17. data/hot/vm_popup.hot +74 -74
  18. data/lib/tags2w.rb +263 -0
  19. data/lib/w2tags/block/block_hot.rb +37 -0
  20. data/lib/w2tags/block/plain_text.rb +57 -57
  21. data/lib/w2tags/block/remark.rb +37 -37
  22. data/lib/w2tags/block/sass.rb +68 -66
  23. data/lib/w2tags/merb_hook.rb +15 -15
  24. data/lib/w2tags/parser.rb +17 -8
  25. data/lib/w2tags/rails_hook.rb +15 -15
  26. data/lib/w2tags/sinatra_hook.rb +74 -50
  27. data/lib/w2tags.rb +100 -100
  28. data/plugins/{/w2tags/ → w2tags}/README +2 -2
  29. data/plugins/{/w2tags//generators//w2scaffold/ → w2tags/generators/w2scaffold}/USAGE +29 -29
  30. data/plugins/{/w2tags//generators//w2scaffold//templates/ → w2tags/generators/w2scaffold/templates}/controller.rb +85 -85
  31. data/plugins/{/w2tags//generators//w2scaffold//templates/ → w2tags/generators/w2scaffold/templates}/functional_test.rb +45 -45
  32. data/plugins/{/w2tags//generators//w2scaffold//templates/ → w2tags/generators/w2scaffold/templates}/helper.rb +2 -2
  33. data/plugins/{/w2tags//generators//w2scaffold//templates/ → w2tags/generators/w2scaffold/templates}/helper_test.rb +4 -4
  34. data/plugins/{/w2tags//generators//w2scaffold//templates/ → w2tags/generators/w2scaffold/templates}/layout.html.erb +17 -17
  35. data/plugins/{/w2tags//generators//w2scaffold//templates/ → w2tags/generators/w2scaffold/templates}/style.css +54 -54
  36. data/plugins/{/w2tags//generators//w2scaffold//templates/ → w2tags/generators/w2scaffold/templates}/view_edit.html.erb +17 -17
  37. data/plugins/{/w2tags//generators//w2scaffold//templates/ → w2tags/generators/w2scaffold/templates}/view_edit.html.w2erb +16 -16
  38. data/plugins/{/w2tags//generators//w2scaffold//templates/ → w2tags/generators/w2scaffold/templates}/view_index.html.erb +23 -23
  39. data/plugins/{/w2tags//generators//w2scaffold//templates/ → w2tags/generators/w2scaffold/templates}/view_index.html.w2erb +13 -13
  40. data/plugins/{/w2tags//generators//w2scaffold//templates/ → w2tags/generators/w2scaffold/templates}/view_new.html.erb +16 -16
  41. data/plugins/{/w2tags//generators//w2scaffold//templates/ → w2tags/generators/w2scaffold/templates}/view_new.html.w2erb +15 -15
  42. data/plugins/{/w2tags//generators//w2scaffold//templates/ → w2tags/generators/w2scaffold/templates}/view_show.html.erb +9 -9
  43. data/plugins/{/w2tags//generators//w2scaffold//templates/ → w2tags/generators/w2scaffold/templates}/view_show.html.w2erb +8 -8
  44. data/plugins/{/w2tags//generators//w2scaffold/ → w2tags/generators/w2scaffold}/w2scaffold_generator.rb +106 -106
  45. data/plugins/{/w2tags/ → w2tags}/install.rb +0 -0
  46. data/tasks/ann.rake +81 -81
  47. data/tasks/bones.rake +21 -21
  48. data/tasks/gem.rake +126 -126
  49. data/tasks/git.rake +41 -41
  50. data/tasks/manifest.rake +49 -49
  51. data/tasks/notes.rake +28 -28
  52. data/tasks/post_load.rake +39 -39
  53. data/tasks/rdoc.rake +51 -51
  54. data/tasks/rubyforge.rake +57 -57
  55. data/tasks/setup.rb +268 -268
  56. data/tasks/spec.rake +55 -55
  57. data/tasks/svn.rake +48 -48
  58. data/tasks/test.rake +38 -38
  59. data/test/vars.hot +30 -30
  60. data/test/w2tags_basic_usability.rb +187 -187
  61. data/test/w2tags_enlightning.rb +42 -42
  62. data/test/w2tags_hot.rb +85 -85
  63. data/test/w2tags_hot_var.rb +115 -115
  64. metadata +28 -30
@@ -1,66 +1,68 @@
1
- module W2Tags
2
- module Block
3
- module Sass
4
- def sass_skip_initialize
5
- @doc_sas= [] #sass buffer
6
- @key_sas= [] #sass indentation
7
- @nms_sas= [0,""]
8
- @sas = 99 #sass indentation block
9
- end
10
-
11
- def sass_skip
12
- @rgx = nil
13
- if(/(^[\t ]*)(~~~)\n/ =~ @row;@rgx = $~)
14
- @row = ''
15
- @sas = @spc.size
16
- @doc_sas = [[' '*@sas,"<style>\n"].join]
17
- elsif @sas!= 99
18
- if @spc.size<= @sas
19
- @doc_sas<< "#{' '*@key_sas[-1][0]}}\n"
20
- @doc_sas<< @doc_sas[0].gsub("<style>","</style>")
21
- @doc_out = @doc_out + @doc_sas
22
- @sas = 99
23
- elsif @row.strip!=''
24
- sass_parser
25
- end
26
- end
27
- @sas!=99
28
- end
29
-
30
- private
31
-
32
- def sass_parser
33
- spc= @spc.size
34
- if(/(^[\t ]*)(:[\w\-]+) *\n/ =~ @row;@rgx = $~)
35
- @nms_sas= [spc,[$1,$2[1,99],"-"].join]
36
- elsif(/(^[\t ]*)(:[\w\-]+) +([^\n]+)\n/ =~ @row;@rgx = $~)
37
- nms= @nms_sas[0]!=0 && @nms_sas[0]<spc ? @nms_sas[1] : $1
38
- @doc_sas << [nms,$2[1,99],":",$3,";\n"].join
39
- else
40
- old_spc= nil
41
- if @key_sas!=[]
42
- old_spc = @key_sas[-1][0]
43
- @key_sas = @key_sas.select{|l|l[0]<spc} if spc<= old_spc
44
- end
45
- @key_sas<< [spc,@row.strip]
46
- @doc_sas<< [' '*old_spc, "}\n"].join if old_spc
47
- @doc_sas<< [@spc,sass_join,"{\n"].join
48
- @nms_sas = [0,""]
49
- end
50
- @row = ''
51
- end
52
-
53
- def sass_join
54
- rtn= ''
55
- @key_sas.each do |line|
56
- rtn = (rtn==''? [''] : rtn.split(',')).collect do |p|
57
- line[1].split(',').collect do |x|
58
- (x.gsub!(/&/,p) ? x : p+' '+ x).strip
59
- end.join(',')
60
- end.join(',')
61
- end
62
- rtn
63
- end
64
- end
65
- end
66
- end
1
+ module W2Tags
2
+ module Block
3
+ module Sass
4
+ def sass_skip_initialize
5
+ @doc_sas= [] #sass buffer
6
+ @key_sas= [] #sass indentation
7
+ @nms_sas= [0,""]
8
+ @sas = 99 #sass indentation block
9
+ end
10
+
11
+ def sass_skip
12
+ @rgx = nil
13
+ if(/(^[\t ]*)(~~~)\n/ =~ @row;@rgx = $~)
14
+ @row = ''
15
+ @sas = @spc.size
16
+ @doc_sas = [[' '*@sas,"<style>\n"].join]
17
+ @key_sas = [] #sass indentation
18
+ @nms_sas = [0,""]
19
+ elsif @sas!= 99
20
+ if @spc.size<= @sas
21
+ @doc_sas<< "#{' '*@key_sas[-1][0]}}\n"
22
+ @doc_sas<< @doc_sas[0].gsub("<style>","</style>")
23
+ @doc_out = @doc_out + @doc_sas
24
+ @sas = 99
25
+ elsif @row.strip!=''
26
+ sass_parser
27
+ end
28
+ end
29
+ @sas!=99
30
+ end
31
+
32
+ private
33
+
34
+ def sass_parser
35
+ spc= @spc.size
36
+ if(/(^[\t ]*)(:[\w\-]+) *\n/ =~ @row;@rgx = $~)
37
+ @nms_sas= [spc,[$1,$2[1,99],"-"].join]
38
+ elsif(/(^[\t ]*)(:[\w\-]+) +([^\n]+)\n/ =~ @row;@rgx = $~)
39
+ nms= @nms_sas[0]!=0 && @nms_sas[0]<spc ? @nms_sas[1] : $1
40
+ @doc_sas << [nms,$2[1,99],":",$3,";\n"].join
41
+ else
42
+ old_spc= nil
43
+ if @key_sas!=[]
44
+ old_spc = @key_sas[-1][0]
45
+ @key_sas = @key_sas.select{|l|l[0]<spc} if spc<= old_spc
46
+ end
47
+ @key_sas<< [spc,@row.strip]
48
+ @doc_sas<< [' '*old_spc, "}\n"].join if old_spc
49
+ @doc_sas<< [@spc,sass_join,"{\n"].join
50
+ @nms_sas = [0,""]
51
+ end
52
+ @row = ''
53
+ end
54
+
55
+ def sass_join
56
+ rtn= ''
57
+ @key_sas.each do |line|
58
+ rtn = (rtn==''? [''] : rtn.split(',')).collect do |p|
59
+ line[1].split(',').collect do |x|
60
+ (x.gsub!(/&/,p) ? x : p+' '+ x).strip
61
+ end.join(',')
62
+ end.join(',')
63
+ end
64
+ rtn
65
+ end
66
+ end
67
+ end
68
+ end
@@ -1,15 +1,15 @@
1
- module Merb::Template
2
- if Merb.environment != "development"
3
- puts 'W2Tags Only RUN on (Merb.environment == "development")'
4
- else
5
- puts 'W2Tags Hooked on Merb!'
6
- W2TAGS = W2Tags::Parser.new
7
- class << self
8
- def load_template_io(path)
9
- src = path.gsub(/\.erb$/,'.w2erb')
10
- W2TAGS.parse_file(src,false,true)
11
- File.open(path)
12
- end
13
- end
14
- end
15
- end
1
+ module Merb::Template
2
+ if Merb.environment != "development"
3
+ puts 'W2Tags Only RUN on (Merb.environment == "development")'
4
+ else
5
+ puts 'W2Tags Hooked on Merb!'
6
+ W2TAGS = W2Tags::Parser.new
7
+ class << self
8
+ def load_template_io(path)
9
+ src = path.gsub(/\.erb$/,'.w2erb')
10
+ W2TAGS.parse_file(src,false,true)
11
+ File.open(path)
12
+ end
13
+ end
14
+ end
15
+ end
data/lib/w2tags/parser.rb CHANGED
@@ -12,7 +12,7 @@ module W2Tags
12
12
  include *(block.collect{|m|eval("::W2Tags::Block::#{m.to_s}")})
13
13
  #initiall create instance object, default if no arguments will be
14
14
  #target for html
15
- def initialize(ext = 'html')
15
+ def initialize(ext = 'erb')
16
16
  @dbg={
17
17
  :hot =>nil,
18
18
  :stack =>nil,
@@ -32,7 +32,6 @@ module W2Tags
32
32
  @rgx = nil #current regular expression
33
33
  @ext = ext #target extension
34
34
  @hot = 'hot' #source of file hot
35
- @w2x = 'w2x' #source file to include
36
35
  @src_path= '' #path for source file
37
36
  @silent = false #for test
38
37
 
@@ -317,7 +316,7 @@ module W2Tags
317
316
  #v << ';'+@mem_var[k].to_s if v[0,1]!=';' && @mem_var[k]
318
317
  v = (@mem_var[k].to_s + ';' + v) if v[0,1]!=';' && @mem_var[k]
319
318
  @mem_var[k] = v.split(';').uniq.select{|x|x!=''}.join(';')
320
- p "uniq var> #{v}" if @dbg[:parse] #&& @plt == 99 && @rmk == 99
319
+ p "uniqV> #{v}" if @dbg[:parse] #&& @plt == 99 && @rmk == 99
321
320
  end
322
321
  end
323
322
 
@@ -347,11 +346,11 @@ module W2Tags
347
346
 
348
347
  #when parsing and found tag
349
348
  # !inc!fileinc
350
- #it will include / replace current row from file inside .w2x, and after
349
+ #it will include / replace current row from file include, and after
351
350
  #parser will try to get current row after merging to be evaluate
352
351
  def merge_w2x
353
352
  if(/!inc![ ]?([\/\w._]+)([`\n])/ =~ @row;@rgx = $~)
354
- mac = @src_path+'/'+$1+'.'+@w2x
353
+ mac = @src_path+'/'+$1
355
354
  src = $~.to_s #;p mac
356
355
  if File.exist?(mac)
357
356
  pop = $~.captures.pop
@@ -438,8 +437,18 @@ module W2Tags
438
437
  elsif new_alls==[] && new_prms.size==1 && prms.size>1
439
438
  tmp = ""
440
439
  rpt = @rgx.to_s.gsub(@rgx[3]+"\n","")
440
+ #multi key params(class,attribute,etc)
441
+ classs = rpt[/([.:#].*\{.*?\}.*?) /,1]
442
+ classs = rpt[/(\{.*?\}.*?) /,1] if !classs
443
+ classs = rpt[/([.:#].*?) /,1] if !classs
444
+ classs.sub!(/=$/,'') if classs
445
+ clsmlt = classs.to_s.split(';')
446
+ clscnt = clsmlt.length
441
447
  prms.each_with_index do |x,i|
442
- tmp<< rpt+x #tmp<< @new.gsub(new_prms[0],x)
448
+ line = rpt+x #tmp<< @new.gsub(new_prms[0],x)
449
+ #implement multi class params ^.d;.g canggh;bow
450
+ line.gsub!(classs,(clscnt>i ? clsmlt[i] : '')) if classs
451
+ tmp<< line
443
452
  tmp<< "\n#{@spc}" if i+1<prms.size
444
453
  end
445
454
  @new = tmp
@@ -794,8 +803,8 @@ module W2Tags
794
803
  rtn = true if shortcut_exec( /(^[\t ]*)\-([\w\-&\/:#.%=]*) *([^\n]*)\n/)
795
804
  rtn = true if shortcut_equal( /(^[\t ]*)=([\w\-&\/:#.%=]*) *([^\n]*)\n/)
796
805
 
797
- rtn = true if get_hot_simple(/^[\t ]*(%)([\$\w\-&\/:#.]+\{.*\}[= ]*)([^\n]*)\n/)
798
- rtn = true if get_hot_simple(/^[\t ]*(%)([\$\w\-&\/:#.]+\{.*\}[= ]*)()\n/)
806
+ rtn = true if get_hot_simple(/^[\t ]*(%)([\$\w\-&\/:#.]+\{.*?\}[= ]*)([^\n]*)\n/)
807
+ rtn = true if get_hot_simple(/^[\t ]*(%)([\$\w\-&\/:#.]+\{.*?\}[= ]*)()\n/)
799
808
  rtn = true if get_hot_simple(/^[\t ]*(%)([\$\w\-&\/:#.%=]+ )([^\n]*)\n/)
800
809
  rtn = true if get_hot_simple(/^[\t ]*(%)([\$\w\-&\/:#.%=]+)()\n/)
801
810
 
@@ -1,15 +1,15 @@
1
- module ActionView
2
- if Object::RAILS_ENV != "development"
3
- puts 'W2Tags Only RUN on (RAILS_ENV == "development")'
4
- else
5
- puts 'W2Tags Hooked on Rails 2.3.2 & Up!'
6
- class ReloadableTemplate < Template
7
- W2TAGS = W2Tags::Parser.new
8
- def mtime
9
- src = filename.gsub(/\.erb$/,'.w2erb')
10
- W2TAGS.parse_file(src,false,true)
11
- File.mtime(filename)
12
- end
13
- end
14
- end
15
- end
1
+ module ActionView
2
+ if Object::RAILS_ENV != "development"
3
+ puts 'W2Tags Only RUN on (RAILS_ENV == "development")'
4
+ else
5
+ puts 'W2Tags Hooked on Rails 2.3.2 & Up!'
6
+ class ReloadableTemplate < Template
7
+ W2TAGS = W2Tags::Parser.new
8
+ def mtime
9
+ src = filename.gsub(/\.erb$/,'.w2erb')
10
+ W2TAGS.parse_file(src,true,true)
11
+ File.mtime(filename)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,50 +1,74 @@
1
- module Sinatra
2
- if Sinatra::VERSION < '0.9'
3
- if Sinatra::Application.default_options[:env] != :development
4
- puts 'W2Tags Only RUN on (Sinatra::Application.default_options[:env] == :development)'
5
- else
6
- puts 'W2Tags Hooked on Sinatra < 0.9.x!'
7
-
8
- module W2TagsHooked
9
- W2TAGS = W2Tags::Parser.new
10
- def read_template_file(renderer, template, options, scream = true)
11
- path = File.join(
12
- options[:views_directory] || Sinatra.application.options.views,
13
- "#{template}.#{renderer}"
14
- )
15
- src = path.gsub(path[/(\.\w+)$/,1],'.w2'<<$1[1,9])
16
- W2TAGS.parse_file(src,false,true)
17
- super
18
- end
19
- end
20
-
21
- class EventContext
22
- include W2TagsHooked
23
- end
24
- end
25
- elsif Sinatra::VERSION > '0.9'
26
-
27
- if Sinatra::Application.environment != :development
28
- puts 'W2Tags Only RUN on (Sinatra::Application.environment == :development)'
29
- else
30
- puts 'W2Tags Hooked on Sinatra > 0.9.x!'
31
-
32
- module W2TagsHooked
33
- W2TAGS = W2Tags::Parser.new
34
- def lookup_template(engine, template, options={})
35
- case template
36
- when Symbol
37
- path= template_path(engine, template, options)
38
- src = path.gsub(path[/(\.\w+)$/,1],'.w2'<<$1[1,9])
39
- W2TAGS.parse_file(src,false,true)
40
- end
41
- super
42
- end
43
- end
44
-
45
- class Base
46
- include W2TagsHooked
47
- end
48
- end
49
- end
50
- end
1
+ module Sinatra
2
+ if Sinatra::VERSION < '0.9'
3
+ if Sinatra::Application.default_options[:env] != :development
4
+ puts 'W2Tags Only RUN on (Sinatra::Application.default_options[:env] == :development)'
5
+ else
6
+ puts 'W2Tags Hooked on Sinatra < 0.9.x!'
7
+
8
+ module W2TagsHooked
9
+ W2TAGS = W2Tags::Parser.new
10
+ def read_template_file(renderer, template, options, scream = true)
11
+ path = File.join(
12
+ options[:views_directory] || Sinatra.application.options.views,
13
+ "#{template}.#{renderer}"
14
+ )
15
+ src = path.gsub(path[/(\.\w+)$/,1],'.w2'<<$1[1,9])
16
+ W2TAGS.parse_file(src,true,true)
17
+ super
18
+ end
19
+ end
20
+
21
+ class EventContext
22
+ include W2TagsHooked
23
+ end
24
+ end
25
+ elsif Sinatra::VERSION > '0.9'
26
+
27
+ if Sinatra::Application.environment != :development
28
+ puts 'W2Tags Only RUN on (Sinatra::Application.environment == :development)'
29
+ else
30
+ puts 'W2Tags Hooked on Sinatra > 0.9.x!'
31
+
32
+ module W2TagsHooked
33
+ W2TAGS = W2Tags::Parser.new
34
+ if Sinatra::VERSION > '0.9.1'
35
+ def lookup_template(engine, template, views_dir, filename = nil, line = nil)
36
+ case template
37
+ when Symbol
38
+ if cached = self.class.templates[template]
39
+ lookup_template(engine, cached[:template], views_dir, cached[:filename], cached[:line])
40
+ else
41
+ path = ::File.join(views_dir, "#{template}.#{engine}")
42
+ src = path.gsub(path[/(\.\w+)$/,1],'.w2'<<$1[1,9])
43
+ W2TAGS.parse_file(src,true,true)
44
+ [ ::File.read(path), path, 1 ]
45
+ end
46
+ when Proc
47
+ filename, line = self.class.caller_locations.first if filename.nil?
48
+ [ template.call, filename, line.to_i ]
49
+ when String
50
+ filename, line = self.class.caller_locations.first if filename.nil?
51
+ [ template, filename, line.to_i ]
52
+ else
53
+ raise ArgumentError
54
+ end
55
+ end
56
+ else
57
+ def lookup_template(engine, template, options={})
58
+ case template
59
+ when Symbol
60
+ path= template_path(engine, template, options)
61
+ src = path.gsub(path[/(\.\w+)$/,1],'.w2'<<$1[1,9])
62
+ W2TAGS.parse_file(src,true,true)
63
+ end
64
+ super
65
+ end
66
+ end
67
+ end
68
+
69
+ class Base
70
+ include W2TagsHooked
71
+ end
72
+ end
73
+ end
74
+ end
data/lib/w2tags.rb CHANGED
@@ -1,100 +1,100 @@
1
- dir = File.dirname(__FILE__)
2
- Dir["#{dir}/w2tags/block/*.rb"].each{|f|require f}
3
- $LOAD_PATH << dir unless $LOAD_PATH.include?(dir)
4
-
5
- # = W2TAGS (Way to Tags)
6
- #
7
- # W2TAGS is a shortcut of tags, macros, and it is very simple describer for HTML
8
- # its not to become a replacement for inline tamplating engine, it best use for
9
- # developement (sinatra / rails / merb) and the result is an "erb" file to be
10
- # execute by erb or erubis (the fastest templating engine).
11
- #
12
- # It focus on how developer can code and generate dynamic content with
13
- # DRY philosophy, easy to understand and in a very clean way.
14
- #
15
- # == Features
16
- #
17
- # * Mimics HAML syntax (inherit features define in HAML)
18
- # * Extended syntax for Next Tag, Variable, Constanta
19
- # * HOT file is patern for put in repetitif code and leter can be call it
20
- # * HOT Variable interpolation, make it code really DRY
21
- #
22
- # == Using W2TAGS
23
- #
24
- # some of the guide are inside
25
- # * README.rdoc
26
- # * doc/W2TAGS.rdoc
27
- # * doc/HAML.rdoc
28
- # * doc/FAQ.rdoc
29
- # * doc/HOT.rdoc
30
-
31
- module W2Tags
32
- Dir = File.dirname(__FILE__)
33
- VERSION = File.read(Dir + '/../VERSION').strip unless defined?(VERSION)
34
-
35
- #split string with aditional option escape charaters'\'
36
- def self.splitter(data,deli=';')
37
- tg_esc = data.split("\\"+deli)
38
- if tg_esc.size > 1
39
- tg_esc = tg_esc.collect {|x|x.split(deli)}
40
- result = tg_esc.shift
41
- while tg_esc != []
42
- token = tg_esc[0]
43
- result[-1,1] = result[-1,1][0] +';'+ token[0,1][0]
44
- result = result + token[1,99]
45
- tg_esc.shift
46
- end
47
- else
48
- result = data.split(deli)
49
- end
50
- result
51
- end
52
-
53
- #hot files is a collection of w2tags function
54
- #example of the function that will translate by this method
55
- #
56
- # >>body
57
- # <body>
58
- # <</
59
- # </body>
60
- #
61
- #and example of use that function
62
- # @body()
63
- # @div!Hello Tags
64
- # ./
65
- #
66
- #it will produce
67
- # <body>
68
- # <div>Hello Tags</div>
69
- # </body>
70
- def self.read_filehot(fhot)
71
- hot_new = {}
72
- hot = ("\n"+IO.read(fhot)).delete("\r").split(/\n\>\>/)
73
- hot.shift
74
- hot.each do |item|
75
- item.gsub!(/\n([ \t]*)$/,'') #remove blank lines
76
- ends = item.split(/\n\<\<\/[^\n]*\n/) #hots | ends
77
- mems = ends[0].split(/\n\!~[^\n]*\n/) #hots | mems
78
- khot = mems[0].split("\n") #key | hot
79
- keys = khot.shift.rstrip #hots = mems[0].gsub(keys+"\n",'')
80
- hots = khot.join("\n")
81
- hot = [nil,nil]
82
- hot[0]= proc do |this|
83
- this.chg_mem_hot(mems[1]) if this!= nil
84
- hots
85
- end
86
- if ends.size>1
87
- hot[1] = [ends[1]]
88
- # tend = splitter(ends[1])
89
- # if tend.size==1
90
- # hot[1] = [tend]
91
- # else
92
- # hot[1] = tend.collect {|x|"</#{x}>"}
93
- # end
94
- end
95
- hot_new[keys] = hot
96
- end
97
- hot_new
98
- end
99
- end
100
- require 'w2tags/parser'
1
+ dir = File.dirname(__FILE__)
2
+ Dir["#{dir}/w2tags/block/*.rb"].each{|f|require f}
3
+ $LOAD_PATH << dir unless $LOAD_PATH.include?(dir)
4
+
5
+ # = W2TAGS (Way to Tags)
6
+ #
7
+ # W2TAGS is a shortcut of tags, macros, and it is very simple describer for HTML
8
+ # its not to become a replacement for inline tamplating engine, it best use for
9
+ # developement (sinatra / rails / merb) and the result is an "erb" file to be
10
+ # execute by erb or erubis (the fastest templating engine).
11
+ #
12
+ # It focus on how developer can code and generate dynamic content with
13
+ # DRY philosophy, easy to understand and in a very clean way.
14
+ #
15
+ # == Features
16
+ #
17
+ # * Mimics HAML syntax (inherit features define in HAML)
18
+ # * Extended syntax for Next Tag, Variable, Constanta
19
+ # * HOT file is patern for put in repetitif code and leter can be call it
20
+ # * HOT Variable interpolation, make it code really DRY
21
+ #
22
+ # == Using W2TAGS
23
+ #
24
+ # some of the guide are inside
25
+ # * README.rdoc
26
+ # * doc/W2TAGS.rdoc
27
+ # * doc/HAML.rdoc
28
+ # * doc/FAQ.rdoc
29
+ # * doc/HOT.rdoc
30
+
31
+ module W2Tags
32
+ Dir = File.dirname(__FILE__)
33
+ VERSION = File.read(Dir + '/../VERSION').strip unless defined?(VERSION)
34
+
35
+ #split string with aditional option escape charaters'\'
36
+ def self.splitter(data,deli=';')
37
+ tg_esc = data.split("\\"+deli)
38
+ if tg_esc.size > 1
39
+ tg_esc = tg_esc.collect {|x|x.split(deli)}
40
+ result = tg_esc.shift
41
+ while tg_esc != []
42
+ token = tg_esc[0]
43
+ result[-1,1] = result[-1,1][0] +';'+ token[0,1][0]
44
+ result = result + token[1,99]
45
+ tg_esc.shift
46
+ end
47
+ else
48
+ result = data.split(deli)
49
+ end
50
+ result
51
+ end
52
+
53
+ #hot files is a collection of w2tags function
54
+ #example of the function that will translate by this method
55
+ #
56
+ # >>body
57
+ # <body>
58
+ # <</
59
+ # </body>
60
+ #
61
+ #and example of use that function
62
+ # @body()
63
+ # @div!Hello Tags
64
+ # ./
65
+ #
66
+ #it will produce
67
+ # <body>
68
+ # <div>Hello Tags</div>
69
+ # </body>
70
+ def self.read_filehot(fhot)
71
+ hot_new = {}
72
+ hot = ("\n"+IO.read(fhot)).delete("\r").split(/\n\>\>/)
73
+ hot.shift
74
+ hot.each do |item|
75
+ item.gsub!(/\n([ \t]*)$/,'') #remove blank lines
76
+ ends = item.split(/\n\<\<\/[^\n]*\n/) #hots | ends
77
+ mems = ends[0].split(/\n\!~[^\n]*\n/) #hots | mems
78
+ khot = mems[0].split("\n") #key | hot
79
+ keys = khot.shift.rstrip #hots = mems[0].gsub(keys+"\n",'')
80
+ hots = khot.join("\n")
81
+ hot = [nil,nil]
82
+ hot[0]= proc do |this|
83
+ this.chg_mem_hot(mems[1]) if this!= nil
84
+ hots
85
+ end
86
+ if ends.size>1
87
+ hot[1] = [ends[1]]
88
+ # tend = splitter(ends[1])
89
+ # if tend.size==1
90
+ # hot[1] = [tend]
91
+ # else
92
+ # hot[1] = tend.collect {|x|"</#{x}>"}
93
+ # end
94
+ end
95
+ hot_new[keys] = hot
96
+ end
97
+ hot_new
98
+ end
99
+ end
100
+ require 'w2tags/parser'
@@ -1,2 +1,2 @@
1
- Scaffold with w2tags Generator
2
- ====
1
+ Scaffold with w2tags Generator
2
+ ====
@@ -1,29 +1,29 @@
1
- Description:
2
- Scaffolds an entire resource, from model and migration to controller and
3
- views, along with a full test suite. The resource is ready to use as a
4
- starting point for your RESTful, resource-oriented application.
5
-
6
- Pass the name of the model (in singular form), either CamelCased or
7
- under_scored, as the first argument, and an optional list of attribute
8
- pairs.
9
-
10
- Attribute pairs are column_name:sql_type arguments specifying the
11
- model's attributes. Timestamps are added by default, so you don't have to
12
- specify them by hand as 'created_at:datetime updated_at:datetime'.
13
-
14
- You don't have to think up every attribute up front, but it helps to
15
- sketch out a few so you can start working with the resource immediately.
16
-
17
- For example, 'scaffold post title:string body:text published:boolean'
18
- gives you a model with those three attributes, a controller that handles
19
- the create/show/update/destroy, forms to create and edit your posts, and
20
- an index that lists them all, as well as a map.resources :posts
21
- declaration in config/routes.rb.
22
-
23
- If you want to remove all the generated files, run
24
- 'script/destroy scaffold ModelName'.
25
-
26
- Examples:
27
- `./script/generate w2scaffold post`
28
- `./script/generate w2scaffold post title:string body:text published:boolean`
29
- `./script/generate w2scaffold purchase order_id:integer amount:decimal`
1
+ Description:
2
+ Scaffolds an entire resource, from model and migration to controller and
3
+ views, along with a full test suite. The resource is ready to use as a
4
+ starting point for your RESTful, resource-oriented application.
5
+
6
+ Pass the name of the model (in singular form), either CamelCased or
7
+ under_scored, as the first argument, and an optional list of attribute
8
+ pairs.
9
+
10
+ Attribute pairs are column_name:sql_type arguments specifying the
11
+ model's attributes. Timestamps are added by default, so you don't have to
12
+ specify them by hand as 'created_at:datetime updated_at:datetime'.
13
+
14
+ You don't have to think up every attribute up front, but it helps to
15
+ sketch out a few so you can start working with the resource immediately.
16
+
17
+ For example, 'scaffold post title:string body:text published:boolean'
18
+ gives you a model with those three attributes, a controller that handles
19
+ the create/show/update/destroy, forms to create and edit your posts, and
20
+ an index that lists them all, as well as a map.resources :posts
21
+ declaration in config/routes.rb.
22
+
23
+ If you want to remove all the generated files, run
24
+ 'script/destroy scaffold ModelName'.
25
+
26
+ Examples:
27
+ `./script/generate w2scaffold post`
28
+ `./script/generate w2scaffold post title:string body:text published:boolean`
29
+ `./script/generate w2scaffold purchase order_id:integer amount:decimal`