source: extensions/gsdl-video/trunk/installed/cmdline/lib/ruby/1.8/rexml/instruction.rb@ 18425

Last change on this file since 18425 was 18425, checked in by davidb, 15 years ago

Video extension to Greenstone

File size: 1.8 KB
Line 
1require "rexml/child"
2require "rexml/source"
3
4module REXML
5 # Represents an XML Instruction; IE, <? ... ?>
6 # TODO: Add parent arg (3rd arg) to constructor
7 class Instruction < Child
8 START = '<\?'
9 STOP = '\?>'
10
11 # target is the "name" of the Instruction; IE, the "tag" in <?tag ...?>
12 # content is everything else.
13 attr_accessor :target, :content
14
15 # Constructs a new Instruction
16 # @param target can be one of a number of things. If String, then
17 # the target of this instruction is set to this. If an Instruction,
18 # then the Instruction is shallowly cloned (target and content are
19 # copied). If a Source, then the source is scanned and parsed for
20 # an Instruction declaration.
21 # @param content Must be either a String, or a Parent. Can only
22 # be a Parent if the target argument is a Source. Otherwise, this
23 # String is set as the content of this instruction.
24 def initialize(target, content=nil)
25 if target.kind_of? String
26 super()
27 @target = target
28 @content = content
29 elsif target.kind_of? Instruction
30 super(content)
31 @target = target.target
32 @content = target.content
33 end
34 @content.strip! if @content
35 end
36
37 def clone
38 Instruction.new self
39 end
40
41 def write writer, indent=-1, transitive=false, ie_hack=false
42 indent(writer, indent)
43 writer << START.sub(/\\/u, '')
44 writer << @target
45 writer << ' '
46 writer << @content
47 writer << STOP.sub(/\\/u, '')
48 end
49
50 # @return true if other is an Instruction, and the content and target
51 # of the other matches the target and content of this object.
52 def ==( other )
53 other.kind_of? Instruction and
54 other.target == @target and
55 other.content == @content
56 end
57
58 def node_type
59 :processing_instruction
60 end
61
62 def inspect
63 "<?p-i #{target} ...?>"
64 end
65 end
66end
Note: See TracBrowser for help on using the repository browser.