tagz 5.0.1 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (13) hide show
  1. data/README +40 -249
  2. data/Rakefile +228 -0
  3. data/lib/tagz.rb +234 -154
  4. data/readme.erb +154 -0
  5. data/samples/d.rb +4 -4
  6. data/tagz.gemspec +26 -0
  7. data/test/tagz.rb +154 -0
  8. metadata +6 -8
  9. data/a.rb +0 -12
  10. data/gemspec.rb +0 -44
  11. data/gen_readme.rb +0 -34
  12. data/install.rb +0 -214
  13. data/prof.rb +0 -25
@@ -0,0 +1,154 @@
1
+ NAME
2
+
3
+ tagz.rb
4
+
5
+ SYNOPSIS
6
+
7
+ require Tagz
8
+
9
+ include Tagz.globally
10
+
11
+ a_(:href => "/foo"){ "bar" } #=> <a href="/foo">bar</a>
12
+
13
+ DESCRIPTION
14
+
15
+ tagz.rb is generates html, xml, or any sgml variant like a small ninja
16
+ running across the backs of a herd of giraffes swatting of heads like a
17
+ mark-up weedwacker. weighing in at less than 300 lines of code tagz.rb adds
18
+ an html/xml/sgml syntax to ruby that is both unobtrusive, safe, and available
19
+ globally to objects without the need for any builder or superfluous objects.
20
+ tagz.rb is designed for applications that generate html to be able to do so
21
+ easily in any context without heavyweight syntax or scoping issues, like a
22
+ ninja sword through butter.
23
+
24
+ FEATURES
25
+
26
+ - use as a library or mixin
27
+
28
+ - simple, clean and consistent mark-up that is easy to visually
29
+ distinguish from other ruby methods
30
+
31
+ - auto-compatibility with rails/actionview
32
+
33
+ - ability to independently open and close tagz in markup
34
+
35
+ - intelligent auto-escaping of both attributes and content for both html
36
+ and xml
37
+
38
+ - validate your html/xml with 'ruby -c' syntax check
39
+
40
+ - generally bitchin
41
+
42
+ - no lame method_missing approach that prevents tagz like 'type' from being
43
+ generated
44
+
45
+ RAILS
46
+
47
+ in config/environment.rb
48
+
49
+ require 'tagz'
50
+
51
+ in a helper
52
+
53
+ def list_of_users
54
+ ul_(:class => 'users'){
55
+ @users.each{|user| li_{ user }}
56
+ }
57
+ end
58
+
59
+ in a view
60
+
61
+ table_{
62
+ rows.each do |row|
63
+ tr_{
64
+ row.each do |cell|
65
+ td_{ cell }
66
+ end
67
+ }
68
+ end
69
+ }
70
+
71
+ in a controller
72
+
73
+ def ajax_responder
74
+ text =
75
+ tagz{
76
+ table_{
77
+ rows.each do |row|
78
+ tr_{
79
+ row.each do |cell|
80
+ td_{ cell }
81
+ end
82
+ }
83
+ end
84
+ }
85
+ }
86
+
87
+ render :text => text
88
+ end
89
+
90
+ INSTALL
91
+
92
+ gem install tagz
93
+
94
+ URIS
95
+
96
+ http://github.com/ahoward/tagz/tree/master
97
+ http://rubyforge.org/projects/codeforpeople
98
+
99
+ HISTORY
100
+ 6.0.0
101
+ - reorganize lib to avoid dumping a few constants into the includee - aka
102
+ don't absolutely minimize namespace pollution. there is now reason to
103
+ thing this version shouldn't be backwards compat - i bumped the version
104
+ just in case
105
+
106
+ 5.1.0
107
+ - attribute/content auto-escaping can be turned off with
108
+
109
+ Tagz.i_know_what_the_hell_i_am_doing!
110
+
111
+ and turned back on with
112
+
113
+ Tagz.i_do_not_know_what_the_hell_i_am_doing!
114
+
115
+ attribute and content escaping can be configured individually too. see
116
+ tests for examples
117
+
118
+
119
+ thanks Dan Fitzpatrick
120
+
121
+ - << and concat escape (if configured) while puts and push and write do not
122
+
123
+ thanks JoelVanderWerf
124
+
125
+ 5.0.0
126
+ - introduce better escaping for attributes using xchar.rb approach
127
+ - indroduce smart escaping for content
128
+ - make Tagz.globally kick ass more hard
129
+ - note that this version is not backward compatibile if you were relying
130
+ on tagz never escaping any content should be an ok upgrade for most
131
+ applications
132
+
133
+ 4.6.0
134
+ - fix a bug with self closing tagz that had crept in 1.0.0 -> 4.2.0. thx
135
+ jeremy hinegardner
136
+
137
+ - added tests from 1.0.0 back into svn
138
+
139
+ 4.4.0
140
+ - remove dependancy on cgi lib, tagz is now completely standalone
141
+
142
+ 4.3.0
143
+ - detect rails and auto-include into ActionController::Base and include
144
+ globally into ActionView::Base
145
+
146
+ 4.2.0
147
+ - general lib cleanup
148
+ - introduction of dual-mixin technique (Tagz.globally)
149
+ - few small bug fixes
150
+ - ninja tales
151
+
152
+ SAMPLES
153
+
154
+ <%= @samples %>
@@ -12,16 +12,16 @@ def header
12
12
  html_
13
13
  body_(:class => 'ninja-like', :id => 'giraffe-slayer')
14
14
 
15
- ___ "<!-- this is the header -->"
15
+ __ "<!-- this is the header -->"
16
16
  }
17
17
  end
18
18
 
19
19
  def footer
20
20
  tagz{
21
- ___ "<!-- this is the footer -->"
21
+ __ "<!-- this is the footer -->"
22
22
 
23
- body_
24
- html_
23
+ _body
24
+ _html
25
25
  }
26
26
  end
27
27
 
@@ -0,0 +1,26 @@
1
+ ## tagz.gemspec
2
+ #
3
+
4
+ Gem::Specification::new do |spec|
5
+ spec.name = "tagz"
6
+ spec.version = "6.0.0"
7
+ spec.platform = Gem::Platform::RUBY
8
+ spec.summary = "tagz"
9
+
10
+ spec.files = ["lib", "lib/tagz.rb", "Rakefile", "README", "readme.erb", "samples", "samples/a.rb", "samples/b.rb", "samples/c.rb", "samples/d.rb", "samples/e.rb", "samples/f.rb", "samples/g.rb", "tagz.gemspec", "test", "test/tagz.rb"]
11
+ spec.executables = []
12
+
13
+ spec.require_path = "lib"
14
+
15
+ spec.has_rdoc = true
16
+ spec.test_files = "test/tagz.rb"
17
+ #spec.add_dependency 'lib', '>= version'
18
+ #spec.add_dependency 'fattr'
19
+
20
+ spec.extensions.push(*[])
21
+
22
+ spec.rubyforge_project = "codeforpeople"
23
+ spec.author = "Ara T. Howard"
24
+ spec.email = "ara.t.howard@gmail.com"
25
+ spec.homepage = "http://github.com/ahoward/tagz/tree/master"
26
+ end
@@ -550,4 +550,158 @@ class TagzTest < Test::Unit::TestCase
550
550
  assert_equal expected, actual
551
551
  assert_nothing_raised{ c.b }
552
552
  end
553
+
554
+ def test_460
555
+ c = Class.new{
556
+ include Tagz.globally
557
+ def a
558
+ div_( 'a>b' => 'a>b' ){ 'content' }
559
+ end
560
+ }.new
561
+
562
+ actual = nil
563
+ assert_nothing_raised{ actual=c.a}
564
+ expected = %(<div a&gt;b="a&gt;b">content</div>)
565
+ assert_equal expected, actual
566
+
567
+ original = Tagz.escape_attribute! false
568
+ assert original
569
+ actual = nil
570
+ assert_nothing_raised{ actual=c.a}
571
+ expected = %(<div a>b="a>b">content</div>)
572
+ assert_equal expected, actual
573
+
574
+ Tagz.escape_attribute! original
575
+ actual = nil
576
+ assert_nothing_raised{ actual=c.a}
577
+ expected = %(<div a&gt;b="a&gt;b">content</div>)
578
+ assert_equal expected, actual
579
+
580
+ upcased = Tagz.escape_attribute! lambda{|value| original.call(value).upcase}
581
+ assert upcased
582
+ actual = nil
583
+ assert_nothing_raised{ actual=c.a}
584
+ expected = %(<div A&GT;B="A&GT;B">content</div>)
585
+ assert_equal expected, actual
586
+
587
+ Tagz.escape_attributes! lambda{|value| upcased.call(value).downcase}
588
+ actual = nil
589
+ assert_nothing_raised{ actual=c.a}
590
+ expected = %(<div a&gt;b="a&gt;b">content</div>)
591
+ assert_equal expected, actual
592
+ ensure
593
+ Tagz.escape_attributes!(original)
594
+ end
595
+
596
+ def test_470
597
+ c = Class.new{
598
+ include Tagz.globally
599
+ def a
600
+ div_( ){ 'a>b' }
601
+ end
602
+ }.new
603
+
604
+ actual = nil
605
+ assert_nothing_raised{ actual=c.a}
606
+ expected = %(<div>a&gt;b</div>)
607
+ assert_equal expected, actual
608
+
609
+ original = Tagz.escape_content! false
610
+ assert original
611
+ actual = nil
612
+ assert_nothing_raised{ actual=c.a}
613
+ expected = %(<div>a>b</div>)
614
+ assert_equal expected, actual
615
+
616
+ upcased = Tagz.escape_content! lambda{|value| original.call(value).upcase}
617
+ assert upcased
618
+ actual = nil
619
+ assert_nothing_raised{ actual=c.a}
620
+ expected = %(<div>A&GT;B</div>)
621
+ assert_equal expected, actual
622
+
623
+ Tagz.escape_content! original
624
+ actual = nil
625
+ assert_nothing_raised{ actual=c.a}
626
+ expected = %(<div>a&gt;b</div>)
627
+ assert_equal expected, actual
628
+ ensure
629
+ Tagz.escape_content!(original)
630
+ end
631
+
632
+ def test_480
633
+ c = Class.new{
634
+ include Tagz.globally
635
+ def a
636
+ div_( 'a>b' => '<>'){ 'a>b' }
637
+ end
638
+ }.new
639
+
640
+ Tagz.i_know_what_the_hell_i_am_doing!
641
+ actual = nil
642
+ assert_nothing_raised{ actual=c.a}
643
+ expected = %(<div a>b="<>">a>b</div>)
644
+ assert_equal expected, actual
645
+ ensure
646
+ Tagz.i_do_not_know_what_the_hell_i_am_doing!
647
+ end
648
+
649
+ def test_490
650
+ c = Class.new{
651
+ include Tagz.globally
652
+ def a
653
+ div_{
654
+ __
655
+ tagz.concat 'a>b'
656
+ __
657
+ tagz.write 'c>d'
658
+ __
659
+ tagz << 'e>f'
660
+ __
661
+ tagz.push 'g>h'
662
+ }
663
+ end
664
+ }.new
665
+
666
+ actual = nil
667
+ assert_nothing_raised{ actual=c.a}
668
+ expected = "<div>\na&gt;b\nc>d\ne&gt;f\ng>h</div>"
669
+ assert_equal expected, actual
670
+ end
671
+
672
+ def test_500
673
+ expected = actual = nil
674
+ Module.new do
675
+ before = constants
676
+ include Tagz
677
+ after = constants
678
+ expected = %w[ TagzConstants ]
679
+ actual = after - before
680
+ end
681
+ assert_equal expected, actual
682
+ end
683
+
684
+ def test_510
685
+ expected = actual = nil
686
+ Module.new do
687
+ before = constants
688
+ include Tagz.globally
689
+ after = constants
690
+ expected = %w[ TagzConstants ]
691
+ actual = after - before
692
+ end
693
+ assert_equal expected, actual
694
+ end
695
+
696
+ def test_520
697
+ expected = actual = nil
698
+ Module.new do
699
+ before = constants
700
+ include Tagz.privately
701
+ after = constants
702
+ expected = %w[ TagzConstants ]
703
+ actual = after - before
704
+ end
705
+ assert_equal expected, actual
706
+ end
553
707
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tagz
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.1
4
+ version: 6.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ara T. Howard
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-25 00:00:00 -06:00
12
+ date: 2009-07-25 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -22,14 +22,11 @@ extensions: []
22
22
  extra_rdoc_files: []
23
23
 
24
24
  files:
25
- - a.rb
26
- - gemspec.rb
27
- - gen_readme.rb
28
- - install.rb
29
25
  - lib
30
26
  - lib/tagz.rb
31
- - prof.rb
27
+ - Rakefile
32
28
  - README
29
+ - readme.erb
33
30
  - samples
34
31
  - samples/a.rb
35
32
  - samples/b.rb
@@ -38,10 +35,11 @@ files:
38
35
  - samples/e.rb
39
36
  - samples/f.rb
40
37
  - samples/g.rb
38
+ - tagz.gemspec
41
39
  - test
42
40
  - test/tagz.rb
43
41
  has_rdoc: true
44
- homepage: http://codeforpeople.com/lib/ruby/tagz/
42
+ homepage: http://github.com/ahoward/tagz/tree/master
45
43
  post_install_message:
46
44
  rdoc_options: []
47
45
 
data/a.rb DELETED
@@ -1,12 +0,0 @@
1
- require 'tagz'
2
-
3
- include Tagz.globally
4
-
5
- c = Class.new{
6
- include Tagz.globally
7
- def a() tagz{ a_{ b(tagz); nil } } end
8
- def b(doc) tagz(doc){ b_{ 'content' } } end
9
- }.new
10
-
11
- puts c.a
12
-
data/gemspec.rb DELETED
@@ -1,44 +0,0 @@
1
- #! /usr/bin/env gem build
2
-
3
- require 'rubygems'
4
-
5
- Gem::Specification::new do |spec|
6
- $VERBOSE = nil
7
-
8
- shiteless = lambda do |list|
9
- list.delete_if do |file|
10
- file =~ %r/\.svn/ or
11
- file =~ %r/\.tmp/
12
- end
13
- end
14
-
15
- spec.name = $lib
16
- spec.version = $version
17
- spec.platform = Gem::Platform::RUBY
18
- spec.summary = $lib
19
-
20
- spec.files = shiteless[Dir::glob("**/**")]
21
- spec.executables = shiteless[Dir::glob("bin/*")].map{|exe| File::basename exe}
22
-
23
- spec.require_path = "lib"
24
-
25
- spec.has_rdoc = true #File::exist? "doc"
26
- spec.test_suite_file = "test/#{ $lib }.rb" if File::file?("test/#{ $lib }.rb")
27
- #spec.add_dependency 'lib', '>= version'
28
- #spec.add_dependency 'fattr'
29
-
30
- spec.extensions << "extconf.rb" if File::exists? "extconf.rb"
31
-
32
- spec.rubyforge_project = 'codeforpeople'
33
- spec.author = "Ara T. Howard"
34
- spec.email = "ara.t.howard@gmail.com"
35
- spec.homepage = "http://codeforpeople.com/lib/ruby/#{ $lib }/"
36
- end
37
-
38
-
39
- BEGIN{
40
- Dir.chdir(File.dirname(__FILE__))
41
- $lib = 'tagz'
42
- Kernel.load "./lib/#{ $lib }.rb"
43
- $version = Tagz.version
44
- }