PageTemplate 2.1.7 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []