PageTemplate 2.1.7 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. data/Changes +15 -0
  2. data/doc/classes/PageTemplate.html +203 -0
  3. data/doc/classes/PageTemplate.src/M000001.html +18 -0
  4. data/doc/classes/PageTemplate/BlockCommand.html +230 -0
  5. data/doc/classes/PageTemplate/BlockCommand.src/M000020.html +18 -0
  6. data/doc/classes/PageTemplate/BlockCommand.src/M000021.html +18 -0
  7. data/doc/classes/PageTemplate/BlockCommand.src/M000022.html +18 -0
  8. data/doc/classes/PageTemplate/BlockCommand.src/M000023.html +21 -0
  9. data/doc/classes/PageTemplate/BlockCommand.src/M000024.html +18 -0
  10. data/doc/classes/PageTemplate/CaseCommand.html +252 -0
  11. data/doc/classes/PageTemplate/CaseCommand.src/M000085.html +22 -0
  12. data/doc/classes/PageTemplate/CaseCommand.src/M000086.html +22 -0
  13. data/doc/classes/PageTemplate/CaseCommand.src/M000087.html +19 -0
  14. data/doc/classes/PageTemplate/CaseCommand.src/M000088.html +19 -0
  15. data/doc/classes/PageTemplate/CaseCommand.src/M000089.html +23 -0
  16. data/doc/classes/PageTemplate/CaseCommand.src/M000090.html +23 -0
  17. data/doc/classes/PageTemplate/Command.html +199 -0
  18. data/doc/classes/PageTemplate/Command.src/M000045.html +19 -0
  19. data/doc/classes/PageTemplate/Command.src/M000046.html +18 -0
  20. data/doc/classes/PageTemplate/CommentCommand.html +187 -0
  21. data/doc/classes/PageTemplate/CommentCommand.src/M000028.html +18 -0
  22. data/doc/classes/PageTemplate/CommentCommand.src/M000029.html +18 -0
  23. data/doc/classes/PageTemplate/CommentCommand.src/M000030.html +18 -0
  24. data/doc/classes/PageTemplate/DefaultGlossary.html +121 -0
  25. data/doc/classes/PageTemplate/DefaultPreprocessor.html +232 -0
  26. data/doc/classes/PageTemplate/DefaultPreprocessor.src/M000074.html +18 -0
  27. data/doc/classes/PageTemplate/DefaultPreprocessor.src/M000075.html +18 -0
  28. data/doc/classes/PageTemplate/DefaultPreprocessor.src/M000076.html +20 -0
  29. data/doc/classes/PageTemplate/DefaultPreprocessor.src/M000077.html +22 -0
  30. data/doc/classes/PageTemplate/DefaultPreprocessor.src/M000078.html +18 -0
  31. data/doc/classes/PageTemplate/DefineCommand.html +166 -0
  32. data/doc/classes/PageTemplate/DefineCommand.src/M000079.html +19 -0
  33. data/doc/classes/PageTemplate/DefineCommand.src/M000080.html +19 -0
  34. data/doc/classes/PageTemplate/FileSource.html +222 -0
  35. data/doc/classes/PageTemplate/FileSource.src/M000016.html +28 -0
  36. data/doc/classes/PageTemplate/FileSource.src/M000017.html +32 -0
  37. data/doc/classes/PageTemplate/FileSource.src/M000018.html +20 -0
  38. data/doc/classes/PageTemplate/FileSource.src/M000019.html +30 -0
  39. data/doc/classes/PageTemplate/FilterCommand.html +181 -0
  40. data/doc/classes/PageTemplate/FilterCommand.src/M000065.html +20 -0
  41. data/doc/classes/PageTemplate/FilterCommand.src/M000066.html +18 -0
  42. data/doc/classes/PageTemplate/FilterCommand.src/M000067.html +29 -0
  43. data/doc/classes/PageTemplate/HTGlossary.html +113 -0
  44. data/doc/classes/PageTemplate/IfCommand.html +261 -0
  45. data/doc/classes/PageTemplate/IfCommand.src/M000059.html +24 -0
  46. data/doc/classes/PageTemplate/IfCommand.src/M000060.html +22 -0
  47. data/doc/classes/PageTemplate/IfCommand.src/M000061.html +19 -0
  48. data/doc/classes/PageTemplate/IfCommand.src/M000062.html +20 -0
  49. data/doc/classes/PageTemplate/IfCommand.src/M000063.html +22 -0
  50. data/doc/classes/PageTemplate/IfCommand.src/M000064.html +36 -0
  51. data/doc/classes/PageTemplate/IncludeCommand.html +203 -0
  52. data/doc/classes/PageTemplate/IncludeCommand.src/M000039.html +18 -0
  53. data/doc/classes/PageTemplate/IncludeCommand.src/M000040.html +18 -0
  54. data/doc/classes/PageTemplate/IncludeCommand.src/M000041.html +35 -0
  55. data/doc/classes/PageTemplate/LoopCommand.html +260 -0
  56. data/doc/classes/PageTemplate/LoopCommand.src/M000011.html +24 -0
  57. data/doc/classes/PageTemplate/LoopCommand.src/M000012.html +20 -0
  58. data/doc/classes/PageTemplate/LoopCommand.src/M000013.html +22 -0
  59. data/doc/classes/PageTemplate/LoopCommand.src/M000014.html +77 -0
  60. data/doc/classes/PageTemplate/LoopCommand.src/M000015.html +21 -0
  61. data/doc/classes/PageTemplate/Namespace.html +163 -0
  62. data/doc/classes/PageTemplate/Namespace.src/M000057.html +20 -0
  63. data/doc/classes/PageTemplate/Namespace.src/M000058.html +22 -0
  64. data/doc/classes/PageTemplate/NamespaceItem.html +333 -0
  65. data/doc/classes/PageTemplate/NamespaceItem.src/M000002.html +18 -0
  66. data/doc/classes/PageTemplate/NamespaceItem.src/M000004.html +19 -0
  67. data/doc/classes/PageTemplate/NamespaceItem.src/M000006.html +84 -0
  68. data/doc/classes/PageTemplate/NamespaceItem.src/M000008.html +18 -0
  69. data/doc/classes/PageTemplate/NamespaceItem.src/M000009.html +22 -0
  70. data/doc/classes/PageTemplate/NamespaceItem.src/M000010.html +31 -0
  71. data/doc/classes/PageTemplate/Parser.html +369 -0
  72. data/doc/classes/PageTemplate/Parser.src/M000031.html +18 -0
  73. data/doc/classes/PageTemplate/Parser.src/M000032.html +32 -0
  74. data/doc/classes/PageTemplate/Parser.src/M000033.html +18 -0
  75. data/doc/classes/PageTemplate/Parser.src/M000034.html +30 -0
  76. data/doc/classes/PageTemplate/Parser.src/M000035.html +66 -0
  77. data/doc/classes/PageTemplate/Parser.src/M000036.html +18 -0
  78. data/doc/classes/PageTemplate/Parser.src/M000037.html +18 -0
  79. data/doc/classes/PageTemplate/Parser.src/M000038.html +19 -0
  80. data/doc/classes/PageTemplate/Preprocessor.html +123 -0
  81. data/doc/classes/PageTemplate/Source.html +165 -0
  82. data/doc/classes/PageTemplate/Source.src/M000055.html +18 -0
  83. data/doc/classes/PageTemplate/Source.src/M000056.html +18 -0
  84. data/doc/classes/PageTemplate/StackableCommand.html +205 -0
  85. data/doc/classes/PageTemplate/StackableCommand.src/M000081.html +17 -0
  86. data/doc/classes/PageTemplate/StackableCommand.src/M000082.html +18 -0
  87. data/doc/classes/PageTemplate/StackableCommand.src/M000083.html +18 -0
  88. data/doc/classes/PageTemplate/StackableCommand.src/M000084.html +18 -0
  89. data/doc/classes/PageTemplate/StringSource.html +163 -0
  90. data/doc/classes/PageTemplate/StringSource.src/M000053.html +23 -0
  91. data/doc/classes/PageTemplate/StringSource.src/M000054.html +18 -0
  92. data/doc/classes/PageTemplate/SyntaxGlossary.html +263 -0
  93. data/doc/classes/PageTemplate/SyntaxGlossary.src/M000047.html +22 -0
  94. data/doc/classes/PageTemplate/SyntaxGlossary.src/M000048.html +24 -0
  95. data/doc/classes/PageTemplate/SyntaxGlossary.src/M000049.html +18 -0
  96. data/doc/classes/PageTemplate/SyntaxGlossary.src/M000050.html +21 -0
  97. data/doc/classes/PageTemplate/SyntaxGlossary.src/M000051.html +21 -0
  98. data/doc/classes/PageTemplate/SyntaxGlossary.src/M000052.html +22 -0
  99. data/doc/classes/PageTemplate/Template.html +208 -0
  100. data/doc/classes/PageTemplate/Template.src/M000071.html +19 -0
  101. data/doc/classes/PageTemplate/Template.src/M000072.html +18 -0
  102. data/doc/classes/PageTemplate/Template.src/M000073.html +29 -0
  103. data/doc/classes/PageTemplate/TextCommand.html +185 -0
  104. data/doc/classes/PageTemplate/TextCommand.src/M000068.html +18 -0
  105. data/doc/classes/PageTemplate/TextCommand.src/M000069.html +18 -0
  106. data/doc/classes/PageTemplate/TextCommand.src/M000070.html +18 -0
  107. data/doc/classes/PageTemplate/UnknownCommand.html +191 -0
  108. data/doc/classes/PageTemplate/UnknownCommand.src/M000025.html +24 -0
  109. data/doc/classes/PageTemplate/UnknownCommand.src/M000026.html +18 -0
  110. data/doc/classes/PageTemplate/UnknownCommand.src/M000027.html +18 -0
  111. data/doc/classes/PageTemplate/ValueCommand.html +206 -0
  112. data/doc/classes/PageTemplate/ValueCommand.src/M000042.html +19 -0
  113. data/doc/classes/PageTemplate/ValueCommand.src/M000043.html +27 -0
  114. data/doc/classes/PageTemplate/ValueCommand.src/M000044.html +21 -0
  115. data/doc/created.rid +1 -0
  116. data/doc/files/README_txt.html +225 -0
  117. data/doc/files/lib/PageTemplate/case_rb.html +115 -0
  118. data/doc/files/lib/PageTemplate/commands_rb.html +111 -0
  119. data/doc/files/lib/PageTemplate/htglossary_rb.html +110 -0
  120. data/doc/files/lib/PageTemplate/parser_rb.html +111 -0
  121. data/doc/files/lib/PageTemplate_rb.html +139 -0
  122. data/doc/fr_class_index.html +52 -0
  123. data/doc/fr_file_index.html +32 -0
  124. data/doc/fr_method_index.html +116 -0
  125. data/doc/index.html +24 -0
  126. data/doc/rdoc-style.css +208 -0
  127. data/lib/PageTemplate.rb +1 -1
  128. data/lib/PageTemplate/commands.rb +49 -5
  129. data/lib/PageTemplate/parser.rb +57 -10
  130. data/tdata/include.txt +3 -0
  131. data/tdata/include2.txt +3 -0
  132. data/tdata/variable.txt +1 -0
  133. data/test.rb +83 -6
  134. metadata +159 -2
@@ -29,7 +29,7 @@ require 'PageTemplate/commands'
29
29
  # It is a class so that programmers are not confused by being able to
30
30
  # do .new on a module
31
31
  class PageTemplate
32
- VERSION = "2.1.7"
32
+ VERSION = "2.2.0"
33
33
 
34
34
  # Passes arguments straight to Parser.new
35
35
  #
@@ -84,7 +84,7 @@ class PageTemplate
84
84
  # branch in the logic: such as If, Loop, etcetera.
85
85
  #
86
86
  # Any child that wants to do more than stand alone must inherit from
87
- # StackableCommand. Also recommended is setting @called_as, so
87
+ # StackableCommand. We recommend setting @called_as, so
88
88
  # all of StackableCommand's ways of closing blocks work.
89
89
  class StackableCommand < Command
90
90
  @modifier = nil
@@ -209,6 +209,50 @@ class PageTemplate
209
209
  end
210
210
  end
211
211
 
212
+ # DefineCommand will set a variable within the enclosing namespace
213
+ class DefineCommand < Command
214
+ def initialize(name, value)
215
+ @name = name
216
+ @value = value
217
+ end
218
+
219
+ # Doesn't return any output
220
+ def output(namespace)
221
+ namespace[@name] = @value
222
+ return
223
+ end
224
+ end
225
+
226
+ # FilterCommand filters its block through a preprocessor
227
+ # [% filter :processor %]text[% end %]
228
+ class FilterCommand < StackableCommand
229
+ @closer = :end
230
+ def initialize(filter)
231
+ @called_as = "filter"
232
+ @processor = filter
233
+ @text = []
234
+ end
235
+
236
+ def add(line)
237
+ @text.push(line)
238
+ end
239
+
240
+ def output(namespace=nil)
241
+ parser = namespace.parser if namespace
242
+ parser = Parser.recent_parser unless parser
243
+ namespace ||= parser
244
+ preprocessor = parser.preprocessor
245
+ processor = @processor || parser.default_processor
246
+ text = ""
247
+ @text.each { |c| text += c.output(namespace) }
248
+ if preprocessor.respond_to?(processor)
249
+ preprocessor.send(processor, text)
250
+ else
251
+ "[ ValueCommand: unknown preprocessor #{@processor} ]"
252
+ end
253
+ end
254
+ end
255
+
212
256
  # ValueCommand will print out a variable name, possibly passing its
213
257
  # value through a preprocessor.
214
258
  #
@@ -217,8 +261,8 @@ class PageTemplate
217
261
  # +variable+ is first plucked out of the Namespace,
218
262
  #
219
263
  # The to_s of the output from Namespace#get is passed through
220
- # parser's preprocessor. If :processor is defined, then it is
221
- # parser.preprocessor.send(:processor,body) is called, allowing the
264
+ # parser's preprocessor. If :processor is defined, then
265
+ # parser.preprocessor.send(:processor,body) is called. This allows the
222
266
  # designer to choose a particular format for the output. If
223
267
  # :processor is not given, then parser's default processor is used.
224
268
  class ValueCommand < Command
@@ -498,8 +542,8 @@ class PageTemplate
498
542
  body.output(namespace)
499
543
  elsif body
500
544
  cmds = parser.parse(body)
501
- parser.source.cache(fn,cmds)
502
- cmds.output(namespace)
545
+ parser.source.cache(fn,cmds)
546
+ cmds.output(namespace)
503
547
  else
504
548
  "[ Template '#{fn}' not found ]"
505
549
  end
@@ -160,11 +160,21 @@ class PageTemplate
160
160
 
161
161
  class Namespace
162
162
  include NamespaceItem
163
+
163
164
  def initialize(parent=nil,object=nil)
164
165
  @values = Hash.new
165
166
  @parent = parent
166
167
  @object = object
167
168
  end
169
+
170
+ # Create a new top-level Namespace with a Hash-like object
171
+ def Namespace.construct_from(arg)
172
+ ns = Namespace.new()
173
+ arg.each { |k, v|
174
+ ns[k] = v
175
+ }
176
+ return ns
177
+ end
168
178
  end
169
179
 
170
180
  # A Source is a source from which templates are drawn.
@@ -172,14 +182,32 @@ class PageTemplate
172
182
  # Source#get(name) must return the body of the template that is to
173
183
  # be parsed, or nil if it doesn't exist.
174
184
  class Source
185
+
175
186
  def initialize(args = {})
176
187
  @args = args
177
188
  end
178
- def get(name)
189
+
190
+ def get(name=nil)
179
191
  name
180
192
  end
181
193
  end
182
194
 
195
+ # A StringSource is created with a raw string, which is returned on any
196
+ # call to 'get'.
197
+ class StringSource < Source
198
+ def initialize(args)
199
+ if args.class == String
200
+ @source = args
201
+ else
202
+ @args = args
203
+ @source = args["source"]
204
+ end
205
+ end
206
+ def get()
207
+ return @source
208
+ end
209
+ end
210
+
183
211
  # FileSource provides access to files within the 'include_paths'
184
212
  # argument.
185
213
  #
@@ -212,15 +240,15 @@ class PageTemplate
212
240
  fn = get_filename(name)
213
241
  begin
214
242
  case
215
- when fn.nil?
216
- nil
217
- when @cache.has_key?(fn) && (@mtime[fn] > File.mtime(fn).to_i)
218
- cmds = @cache[fn]
219
- cmds.clear_cache
220
- cmds
221
- else
222
- IO.read(fn)
223
- end
243
+ when fn.nil?
244
+ nil
245
+ when @cache.has_key?(fn) && (@mtime[fn] > File.mtime(fn).to_i)
246
+ cmds = @cache[fn]
247
+ cmds.clear_cache
248
+ cmds
249
+ else
250
+ IO.read(fn)
251
+ end
224
252
  rescue Exception => er
225
253
  return "[ Unable to open file #{fn} because of #{er.message} ]"
226
254
  end
@@ -231,6 +259,12 @@ class PageTemplate
231
259
  @mtime[fn] = Time.now.to_i
232
260
  end
233
261
  def get_filename(file)
262
+ # Check for absolute filepaths
263
+ if file == File.expand_path(file)
264
+ if File.exists?(file)
265
+ return file
266
+ end
267
+ end
234
268
  file = file.gsub(/\.\.\//,'')
235
269
  @paths.each do |path|
236
270
  fn = File.join(path,file)
@@ -327,6 +361,14 @@ class PageTemplate
327
361
  CommentCommand.new(match[1])
328
362
  }
329
363
 
364
+ define(/^define (\w+)\s+?(.+)$/i) { |match|
365
+ DefineCommand.new(match[1], match[2])
366
+ }
367
+
368
+ define(/^filter :(\w+)$/i) { |match|
369
+ FilterCommand.new(match[1])
370
+ }
371
+
330
372
  define(/^(if|unless) ((\w+)(\.\w+\??)*)$/i) { |match|
331
373
  # Called_As, Value
332
374
  IfCommand.new(match[1],match[2])
@@ -481,6 +523,11 @@ class PageTemplate
481
523
  @@recent_parser = self
482
524
  @args = args # For sub-commands
483
525
  @parent = args['namespace'] || nil
526
+ if @parent
527
+ unless @parent.is_a? Namespace then
528
+ @parent = Namespace.construct_from(args['namespace'])
529
+ end
530
+ end
484
531
  @glossary = args['glossary'] || DefaultGlossary
485
532
  @preprocessor = args['preprocessor'] || DefaultPreprocessor
486
533
  @default_processor = args['default_processor'] || :unescaped
@@ -0,0 +1,3 @@
1
+ A
2
+ [%include file%]
3
+ B
@@ -0,0 +1,3 @@
1
+ A
2
+ [%include dummy.txt%]
3
+ B
@@ -0,0 +1 @@
1
+ Hello, [%var name %]!
data/test.rb CHANGED
@@ -159,12 +159,29 @@ module TestPageTemplate
159
159
  end
160
160
  end
161
161
 
162
+ class TestDefine < Test::Unit::TestCase
163
+ def setup
164
+ @@p = PageTemplate::Parser.new('empty_is_true' => false)
165
+ end
166
+
167
+ def test_output
168
+ template = @@p.parse("[%define zero 0%]Zero is [%var zero%]")
169
+ assert_equal("Zero is 0", template.output,
170
+ "define command allows you to set values in a template")
171
+ end
172
+ end
173
+
162
174
  class TestFileSource < Test::Unit::TestCase
163
175
  def setup
164
176
  @@args = {}
165
177
  @@fs = PageTemplate::FileSource.new(@@args)
166
- @@filename = 'tdata/dummy.txt'
167
- @@location = File.join(Dir.getwd, @@filename)
178
+ # Construct an absolute path, whatever it looks like on our platform
179
+ require 'pathname'
180
+ cwd = Dir.getwd
181
+ directory = "tdata"
182
+ file = "dummy.txt"
183
+ @@filename = File.join(directory, file)
184
+ @@location = File.join(cwd, directory, file)
168
185
  @@text = IO.read(@@location)
169
186
  end
170
187
 
@@ -210,15 +227,29 @@ module TestPageTemplate
210
227
  end
211
228
  end
212
229
 
230
+ class TestFilterCommand < Test::Unit::TestCase
231
+ def setup
232
+ @@p = PageTemplate::Parser.new()
233
+ end
234
+
235
+ def test_filter
236
+ source = "[%filter :reverse %]foo[%end%]"
237
+ assert_equal("oof", @@p.parse(source).output,
238
+ "FilterCommands can be used to filter raw template text.")
239
+ @@p["f"] = "boy"
240
+ source = "[%filter :reverse %][%var f%][%end%]"
241
+ assert_equal("yob", @@p.parse(source).output,
242
+ "Commands in a FilterCommand are parsed before filtering")
243
+ end
244
+ end
245
+
213
246
  class TestIfCommand < Test::Unit::TestCase
214
247
  def setup
215
- parser = PageTemplate::Parser.new()
216
248
  @@if = PageTemplate::IfCommand.new("if", "flag")
217
249
  @@unless = PageTemplate::IfCommand.new("unless", "flag")
218
250
  end
219
251
 
220
252
  def test_initialize
221
- parser = PageTemplate::Parser.new
222
253
  good_1 = "if flag"
223
254
  good_2 = "unless flag"
224
255
  bad_1 = "heck no"
@@ -299,13 +330,29 @@ module TestPageTemplate
299
330
  end
300
331
 
301
332
  class TestIncludeCommand < Test::Unit::TestCase
302
- def test_output
333
+ def test_simple_output
303
334
  parser = PageTemplate::Parser.new()
304
- parser['dummy'] = '/tdata/dummy.txt'
335
+ parser['dummy'] = File.join("tdata", "dummy.txt")
305
336
  i = PageTemplate::IncludeCommand.new('dummy')
306
337
  parser.load('tdata/dummy.txt')
307
338
  assert_equal(parser.output, i.output(parser))
308
339
  end
340
+
341
+ def test_include_template
342
+ pt = PageTemplate::Parser.new("include_path" => "tdata/")
343
+ pt.load("include.txt")
344
+ pt["file"] = "variable.txt"
345
+ pt["name"] = "Phil"
346
+ assert(pt.output =~ /Hello, Phil!/,
347
+ "Included files are parsed as templates.")
348
+ end
349
+
350
+ def test_include_literal
351
+ pt = PageTemplate::Parser.new("include_path" => "tdata")
352
+ pt.load("include2.txt")
353
+ assert(pt.output =~ /get_filename/,
354
+ "Include Commands can be handed a filename directly")
355
+ end
309
356
  end
310
357
 
311
358
  class TestLoopCommand < Test::Unit::TestCase
@@ -554,6 +601,20 @@ module TestPageTemplate
554
601
  assert_equal({}, @@p.args)
555
602
  end
556
603
 
604
+ def test_namespace_arg
605
+ require 'yaml'
606
+ ns = PageTemplate::Namespace.new()
607
+ ns['oompa'] = 'loompa'
608
+ p = PageTemplate::Parser.new('namespace' => ns)
609
+ assert_equal('loompa', p['oompa'])
610
+ p = PageTemplate::Parser.new('namespace' => { 'oompa' => 'loompa' })
611
+ assert_equal('loompa', p['oompa'])
612
+ # This assertion is just for my own peace of mind.
613
+ y = YAML::load({ 'doompity' => 'doo' }.to_yaml)
614
+ p = PageTemplate::Parser.new('namespace' => y)
615
+ assert_equal('doo', p['doompity'])
616
+ end
617
+
557
618
  def test_clearCommands
558
619
  @@p.clearCommands
559
620
  assert_equal(nil, @@p.commands)
@@ -607,6 +668,18 @@ module TestPageTemplate
607
668
  end
608
669
  end
609
670
 
671
+ class TestStringSource < Test::Unit::TestCase
672
+ def test_get
673
+ str = "John Jacob Jingleheimer Smith"
674
+ ss = PageTemplate::StringSource.new(str)
675
+ assert_equal(str, ss.get,
676
+ "StringSource holds a simple String")
677
+ ss = PageTemplate::StringSource.new("source" => str)
678
+ assert_equal(str, ss.get,
679
+ "StringSource holds a simple String")
680
+ end
681
+ end
682
+
610
683
  class TestSyntaxGlossary < Test::Unit::TestCase
611
684
  # Test modifications by gmillam
612
685
  def setup
@@ -723,13 +796,16 @@ module TestPageTemplate
723
796
  assert_equal('4',w.output(p.namespace))
724
797
  assert_equal('',v.output(p.namespace))
725
798
  end
799
+
726
800
  def test_raise_on_error
727
801
  p = PageTemplate::Parser.new
728
802
  template = p.parse("[% var foo.bar %]")
729
803
  foo = "hello"
804
+
730
805
  def foo.bar
731
806
  asdf # method unknown error
732
807
  end
808
+
733
809
  template["foo"] = foo
734
810
  assert_equal(
735
811
  template.output,
@@ -743,6 +819,7 @@ module TestPageTemplate
743
819
  rescue Exception => er
744
820
  puts "error: #{er.class}"
745
821
  end
822
+
746
823
  end
747
824
  end
748
825
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: PageTemplate
5
5
  version: !ruby/object:Gem::Version
6
- version: 2.1.7
7
- date: 2006-02-20 00:00:00 -08:00
6
+ version: 2.2.0
7
+ date: 2006-03-02 00:00:00 -08:00
8
8
  summary: A simple templating system for Web sites.
9
9
  require_paths:
10
10
  - lib
@@ -29,6 +29,7 @@ authors:
29
29
  - Brian Wisti
30
30
  files:
31
31
  - Changes
32
+ - doc
32
33
  - lib
33
34
  - MANIFEST
34
35
  - Rakefile
@@ -39,6 +40,159 @@ files:
39
40
  - tdata
40
41
  - test-install.rb
41
42
  - test.rb
43
+ - doc/classes
44
+ - doc/created.rid
45
+ - doc/files
46
+ - doc/fr_class_index.html
47
+ - doc/fr_file_index.html
48
+ - doc/fr_method_index.html
49
+ - doc/index.html
50
+ - doc/rdoc-style.css
51
+ - doc/classes/PageTemplate
52
+ - doc/classes/PageTemplate.html
53
+ - doc/classes/PageTemplate.src
54
+ - doc/classes/PageTemplate/BlockCommand.html
55
+ - doc/classes/PageTemplate/BlockCommand.src
56
+ - doc/classes/PageTemplate/CaseCommand.html
57
+ - doc/classes/PageTemplate/CaseCommand.src
58
+ - doc/classes/PageTemplate/Command.html
59
+ - doc/classes/PageTemplate/Command.src
60
+ - doc/classes/PageTemplate/CommentCommand.html
61
+ - doc/classes/PageTemplate/CommentCommand.src
62
+ - doc/classes/PageTemplate/DefaultGlossary.html
63
+ - doc/classes/PageTemplate/DefaultPreprocessor.html
64
+ - doc/classes/PageTemplate/DefaultPreprocessor.src
65
+ - doc/classes/PageTemplate/DefineCommand.html
66
+ - doc/classes/PageTemplate/DefineCommand.src
67
+ - doc/classes/PageTemplate/FileSource.html
68
+ - doc/classes/PageTemplate/FileSource.src
69
+ - doc/classes/PageTemplate/FilterCommand.html
70
+ - doc/classes/PageTemplate/FilterCommand.src
71
+ - doc/classes/PageTemplate/HTGlossary.html
72
+ - doc/classes/PageTemplate/IfCommand.html
73
+ - doc/classes/PageTemplate/IfCommand.src
74
+ - doc/classes/PageTemplate/IncludeCommand.html
75
+ - doc/classes/PageTemplate/IncludeCommand.src
76
+ - doc/classes/PageTemplate/LoopCommand.html
77
+ - doc/classes/PageTemplate/LoopCommand.src
78
+ - doc/classes/PageTemplate/Namespace.html
79
+ - doc/classes/PageTemplate/Namespace.src
80
+ - doc/classes/PageTemplate/NamespaceItem.html
81
+ - doc/classes/PageTemplate/NamespaceItem.src
82
+ - doc/classes/PageTemplate/Parser.html
83
+ - doc/classes/PageTemplate/Parser.src
84
+ - doc/classes/PageTemplate/Preprocessor.html
85
+ - doc/classes/PageTemplate/Source.html
86
+ - doc/classes/PageTemplate/Source.src
87
+ - doc/classes/PageTemplate/StackableCommand.html
88
+ - doc/classes/PageTemplate/StackableCommand.src
89
+ - doc/classes/PageTemplate/StringSource.html
90
+ - doc/classes/PageTemplate/StringSource.src
91
+ - doc/classes/PageTemplate/SyntaxGlossary.html
92
+ - doc/classes/PageTemplate/SyntaxGlossary.src
93
+ - doc/classes/PageTemplate/Template.html
94
+ - doc/classes/PageTemplate/Template.src
95
+ - doc/classes/PageTemplate/TextCommand.html
96
+ - doc/classes/PageTemplate/TextCommand.src
97
+ - doc/classes/PageTemplate/UnknownCommand.html
98
+ - doc/classes/PageTemplate/UnknownCommand.src
99
+ - doc/classes/PageTemplate/ValueCommand.html
100
+ - doc/classes/PageTemplate/ValueCommand.src
101
+ - doc/classes/PageTemplate/BlockCommand.src/M000020.html
102
+ - doc/classes/PageTemplate/BlockCommand.src/M000021.html
103
+ - doc/classes/PageTemplate/BlockCommand.src/M000022.html
104
+ - doc/classes/PageTemplate/BlockCommand.src/M000023.html
105
+ - doc/classes/PageTemplate/BlockCommand.src/M000024.html
106
+ - doc/classes/PageTemplate/CaseCommand.src/M000085.html
107
+ - doc/classes/PageTemplate/CaseCommand.src/M000086.html
108
+ - doc/classes/PageTemplate/CaseCommand.src/M000087.html
109
+ - doc/classes/PageTemplate/CaseCommand.src/M000088.html
110
+ - doc/classes/PageTemplate/CaseCommand.src/M000089.html
111
+ - doc/classes/PageTemplate/CaseCommand.src/M000090.html
112
+ - doc/classes/PageTemplate/Command.src/M000045.html
113
+ - doc/classes/PageTemplate/Command.src/M000046.html
114
+ - doc/classes/PageTemplate/CommentCommand.src/M000028.html
115
+ - doc/classes/PageTemplate/CommentCommand.src/M000029.html
116
+ - doc/classes/PageTemplate/CommentCommand.src/M000030.html
117
+ - doc/classes/PageTemplate/DefaultPreprocessor.src/M000074.html
118
+ - doc/classes/PageTemplate/DefaultPreprocessor.src/M000075.html
119
+ - doc/classes/PageTemplate/DefaultPreprocessor.src/M000076.html
120
+ - doc/classes/PageTemplate/DefaultPreprocessor.src/M000077.html
121
+ - doc/classes/PageTemplate/DefaultPreprocessor.src/M000078.html
122
+ - doc/classes/PageTemplate/DefineCommand.src/M000079.html
123
+ - doc/classes/PageTemplate/DefineCommand.src/M000080.html
124
+ - doc/classes/PageTemplate/FileSource.src/M000016.html
125
+ - doc/classes/PageTemplate/FileSource.src/M000017.html
126
+ - doc/classes/PageTemplate/FileSource.src/M000018.html
127
+ - doc/classes/PageTemplate/FileSource.src/M000019.html
128
+ - doc/classes/PageTemplate/FilterCommand.src/M000065.html
129
+ - doc/classes/PageTemplate/FilterCommand.src/M000066.html
130
+ - doc/classes/PageTemplate/FilterCommand.src/M000067.html
131
+ - doc/classes/PageTemplate/IfCommand.src/M000059.html
132
+ - doc/classes/PageTemplate/IfCommand.src/M000060.html
133
+ - doc/classes/PageTemplate/IfCommand.src/M000061.html
134
+ - doc/classes/PageTemplate/IfCommand.src/M000062.html
135
+ - doc/classes/PageTemplate/IfCommand.src/M000063.html
136
+ - doc/classes/PageTemplate/IfCommand.src/M000064.html
137
+ - doc/classes/PageTemplate/IncludeCommand.src/M000039.html
138
+ - doc/classes/PageTemplate/IncludeCommand.src/M000040.html
139
+ - doc/classes/PageTemplate/IncludeCommand.src/M000041.html
140
+ - doc/classes/PageTemplate/LoopCommand.src/M000011.html
141
+ - doc/classes/PageTemplate/LoopCommand.src/M000012.html
142
+ - doc/classes/PageTemplate/LoopCommand.src/M000013.html
143
+ - doc/classes/PageTemplate/LoopCommand.src/M000014.html
144
+ - doc/classes/PageTemplate/LoopCommand.src/M000015.html
145
+ - doc/classes/PageTemplate/Namespace.src/M000057.html
146
+ - doc/classes/PageTemplate/Namespace.src/M000058.html
147
+ - doc/classes/PageTemplate/NamespaceItem.src/M000002.html
148
+ - doc/classes/PageTemplate/NamespaceItem.src/M000004.html
149
+ - doc/classes/PageTemplate/NamespaceItem.src/M000006.html
150
+ - doc/classes/PageTemplate/NamespaceItem.src/M000008.html
151
+ - doc/classes/PageTemplate/NamespaceItem.src/M000009.html
152
+ - doc/classes/PageTemplate/NamespaceItem.src/M000010.html
153
+ - doc/classes/PageTemplate/Parser.src/M000031.html
154
+ - doc/classes/PageTemplate/Parser.src/M000032.html
155
+ - doc/classes/PageTemplate/Parser.src/M000033.html
156
+ - doc/classes/PageTemplate/Parser.src/M000034.html
157
+ - doc/classes/PageTemplate/Parser.src/M000035.html
158
+ - doc/classes/PageTemplate/Parser.src/M000036.html
159
+ - doc/classes/PageTemplate/Parser.src/M000037.html
160
+ - doc/classes/PageTemplate/Parser.src/M000038.html
161
+ - doc/classes/PageTemplate/Source.src/M000055.html
162
+ - doc/classes/PageTemplate/Source.src/M000056.html
163
+ - doc/classes/PageTemplate/StackableCommand.src/M000081.html
164
+ - doc/classes/PageTemplate/StackableCommand.src/M000082.html
165
+ - doc/classes/PageTemplate/StackableCommand.src/M000083.html
166
+ - doc/classes/PageTemplate/StackableCommand.src/M000084.html
167
+ - doc/classes/PageTemplate/StringSource.src/M000053.html
168
+ - doc/classes/PageTemplate/StringSource.src/M000054.html
169
+ - doc/classes/PageTemplate/SyntaxGlossary.src/M000047.html
170
+ - doc/classes/PageTemplate/SyntaxGlossary.src/M000048.html
171
+ - doc/classes/PageTemplate/SyntaxGlossary.src/M000049.html
172
+ - doc/classes/PageTemplate/SyntaxGlossary.src/M000050.html
173
+ - doc/classes/PageTemplate/SyntaxGlossary.src/M000051.html
174
+ - doc/classes/PageTemplate/SyntaxGlossary.src/M000052.html
175
+ - doc/classes/PageTemplate/Template.src/M000071.html
176
+ - doc/classes/PageTemplate/Template.src/M000072.html
177
+ - doc/classes/PageTemplate/Template.src/M000073.html
178
+ - doc/classes/PageTemplate/TextCommand.src/M000068.html
179
+ - doc/classes/PageTemplate/TextCommand.src/M000069.html
180
+ - doc/classes/PageTemplate/TextCommand.src/M000070.html
181
+ - doc/classes/PageTemplate/UnknownCommand.src/M000025.html
182
+ - doc/classes/PageTemplate/UnknownCommand.src/M000026.html
183
+ - doc/classes/PageTemplate/UnknownCommand.src/M000027.html
184
+ - doc/classes/PageTemplate/ValueCommand.src/M000042.html
185
+ - doc/classes/PageTemplate/ValueCommand.src/M000043.html
186
+ - doc/classes/PageTemplate/ValueCommand.src/M000044.html
187
+ - doc/classes/PageTemplate.src/M000001.html
188
+ - doc/files/lib
189
+ - doc/files/README_txt.html
190
+ - doc/files/lib/PageTemplate
191
+ - doc/files/lib/PageTemplate_rb.html
192
+ - doc/files/lib/PageTemplate/case_rb.html
193
+ - doc/files/lib/PageTemplate/commands_rb.html
194
+ - doc/files/lib/PageTemplate/htglossary_rb.html
195
+ - doc/files/lib/PageTemplate/parser_rb.html
42
196
  - lib/PageTemplate
43
197
  - lib/PageTemplate.rb
44
198
  - lib/PageTemplate/case.rb
@@ -72,6 +226,9 @@ files:
72
226
  - site/src/SiteMap
73
227
  - site/src/version2
74
228
  - tdata/dummy.txt
229
+ - tdata/include.txt
230
+ - tdata/include2.txt
231
+ - tdata/variable.txt
75
232
  test_files:
76
233
  - test.rb
77
234
  rdoc_options: []