Module: XML::Smart
- Defined in:
- lib/xml/smart.rb,
lib/xml/smart_dom.rb,
lib/xml/smart_qname.rb,
lib/xml/smart_domtext.rb,
lib/xml/smart_domother.rb,
lib/xml/smart_domelement.rb,
lib/xml/smart_domnodeset.rb,
lib/xml/smart_domattribute.rb,
lib/xml/smart_domnamespace.rb,
lib/xml/smart_domattributeset.rb,
lib/xml/smart_domnamespaceset.rb,
lib/xml/smart_processinginstruction.rb
Defined Under Namespace
Classes: Dom, Error, ProcessingInstruction, QName
Constant Summary
collapse
- VERSION =
- LIBXML_VERSION =
- LOCKFILE =
{
:min_sleep => 0.25,
:max_sleep => 5,
:sleep_inc => 0.25,
:max_age => 5
}
- COPY =
0
- MOVE =
1
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.modify(name, default = nil, &block) ⇒ Object
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
# File 'lib/xml/smart.rb', line 126
def self::modify(name,default=nil,&block)
raise Error, 'first parameter has to be a filename or filehandle' unless name.is_a?(String) || name.is_a?(IO) || name.is_a?(Tempfile)
raise Error, 'a block is mandatory' unless block_given?
lfname = name.is_a?(String) ? name : name.fileno.to_s
lockfile = Lockfile.new(lfname + '.lock',LOCKFILE)
begin
lockfile.lock
so = Smart::open_unprotected(name,default)
block.call(so)
so.save_as(name)
ensure
lockfile.unlock
end
nil
end
|
.open(name, default = nil) ⇒ Object
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
# File 'lib/xml/smart.rb', line 142
def self::open(name,default=nil)
raise Error, 'first parameter has to be a filename or filehandle' unless name.is_a?(String) || name.is_a?(IO) || name.is_a?(Tempfile)
raise Error, 'second parameter has to be an xml string' unless default.is_a?(String) || default.nil?
lfname = name.is_a?(String) ? name : name.fileno.to_s
lockfile = Lockfile.new(lfname + '.lock',LOCKFILE)
dom = nil
begin
lockfile.lock
dom = Smart::open_unprotected(name,default)
ensure
lockfile.unlock
end
if dom && block_given?
yield dom
nil
else
dom
end
end
|
.open_unprotected(name, default = nil) ⇒ Object
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
# File 'lib/xml/smart.rb', line 162
def self::open_unprotected(name,default=nil)
raise Error, 'first parameter has to be a filename or filehandle' unless name.is_a?(String) || name.is_a?(IO) || name.is_a?(Tempfile)
raise Error, 'second parameter has to be an xml string' unless default.is_a?(String) || default.nil?
dom = begin
io = name.is_a?(String) ? ::Kernel::open(name) : name
Dom.new Nokogiri::XML::parse(io){|config| config.noblanks.noent.nsclean.strict }
rescue
if default.nil?
raise Error, "could not open #{name}"
else
Smart::string(default)
end
end
if block_given?
yield dom
nil
else
dom
end
end
|
.string(str) ⇒ Object
183
184
185
186
187
188
189
190
191
192
|
# File 'lib/xml/smart.rb', line 183
def self::string(str)
raise Error, 'first parameter has to be stringable (:to_s)' unless str.is_a?(String)
dom = Dom.new Nokogiri::XML::parse(str.to_s){|config| config.noblanks.noent.nsclean.strict }
if block_given?
yield dom
nil
else
dom
end
end
|
Instance Method Details
#initialize(name, default = nil) ⇒ Object
124
|
# File 'lib/xml/smart.rb', line 124
def initialize(name,default=nil); open(name,default); end
|