class Nguyen::Xfdf

Attributes

options[R]

Public Class Methods

new(fields = {}, options = {}) click to toggle source
# File lib/nguyen/xfdf.rb, line 8
def initialize(fields = {}, options = {})
  @fields = fields
  @options = {
    file: nil,
    id: nil
  }.merge(options)
end

Public Instance Methods

save_to(path) click to toggle source

write fdf content to path

# File lib/nguyen/xfdf.rb, line 39
def save_to(path)
  File.write(path, to_xfdf)
end
to_xfdf() click to toggle source

generate XFDF content

# File lib/nguyen/xfdf.rb, line 17
def to_xfdf
  builder = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
    xml.xfdf('xmlns' => 'http://ns.adobe.com/xfdf/', 'xml:space' => 'preserve') {
      xml.f(href: options[:file]) if options[:file]
      xml.ids(original: options[:id], modified: options[:id]) if options[:id]
      xml.fields {
        @fields.each do |field, value|
          xml.field(name: field) {
            if value.is_a? Array
              value.each { |item| xml.value(item.to_s) }
            else
              xml.value(value.to_s)
            end
          }
        end
      }
    }
  end
  builder.to_xml(save_with: Nokogiri::XML::Node::SaveOptions::AS_XML)
end