Sha256: ff7161d96b8d14aef1a585aa631fa6bcdb4d48efba4097e444d43ca408bf7fe8
Contents?: true
Size: 1.03 KB
Versions: 2
Compression:
Stored size: 1.03 KB
Contents
require 'xml/mapping/base' class Length attr_accessor :value, :unit, :number def initialize(value) @value = value @number = value.match(/[\d\.]*/)[0].to_f @unit = value.delete("#{number}").strip end #Return the numeric portion as a Points def as_pts if @unit =~ /pt/ return @number elsif @unit =~ /in/ return @number * 72 #72.270 elsif @unit =~ /mm/ return @number * 2.83464566929134 elsif @unit =~ /cm/ return @number * 28.3464566929134 elsif @unit =~ /pc/ return 1.0 * @number / 12 elsif @unit == '' return @number else raise "Unit #{unit} unknown" end end end class LengthNode < XML::Mapping::SingleAttributeNode def initialize_impl(path) @path = XML::XXPath.new(path) end def extract_attr_value(xml) @value = default_when_xpath_err{@path.first(xml).text} Length.new(@value) end def set_attr_value(xml, value) raise "Not a Length: #{value}" unless Length===value @path.first(xml,:ensure_created=>true).text = value.value end end XML::Mapping.add_node_class LengthNode
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pdf-labels-1.0.0 | lib/length_node.rb |
pdf-labels-1.0.1 | lib/length_node.rb |