Class: MasterView::FileSerializer
- Inherits:
-
Object
- Object
- MasterView::FileSerializer
- Defined in:
- lib/masterview/parser.rb
Overview
Serializer which can serialize output to file system. It will create any directories that are necessary before writing the file. It will overwrite any existing file that existed.
Instance Method Summary collapse
Instance Method Details
#serialize(render_mode, tag) ⇒ Object
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/masterview/parser.rb', line 191 def serialize(render_mode, tag) Log.debug { "outputting mode=#{render_mode.mode_type} to file=#{render_mode.output}".indent(2*(Renderer.last_renderer.render_levels.size - 1)) } dir_name = File.dirname render_mode.output FileUtils.makedirs(dir_name) unless File.exist?(dir_name) #ensure path exists data_to_write = tag.data.join if File.exist? render_mode.output existing_file_contents = File.readlines(render_mode.output).join if data_to_write == existing_file_contents Log.debug { "file identical, skipping output of #{render_mode.output}" } return false end end File.open(render_mode.output, 'w') do |io| io << data_to_write end true end |