Sha256: 20fe7148c29d29ffdf7f9bb61f9227cdc2d32edb5b9e824130b82da0db847d5f
Contents?: true
Size: 1.61 KB
Versions: 14
Compression:
Stored size: 1.61 KB
Contents
module OpenXml module Docx module Properties class BaseProperty attr_reader :value class << self attr_reader :property_name attr_reader :allowed_tags def tag_is_one_of(tags) attr_accessor :tag @allowed_tags = tags end def tag(*args) @tag = args.first if args.any? @tag end def name(*args) @property_name = args.first if args.any? @name end def namespace(*args) @namespace = args.first if args.any? @namespace end end def initialize(tag=nil, *args) return unless self.class.allowed_tags unless self.class.allowed_tags.include?(tag) raise ArgumentError, "Invalid tag name for #{name}: #{tag.inspect}. It should be one of #{self.class.allowed_tags.join(", ")}." end @tag = tag end def render? !value.nil? end def name self.class.property_name || default_name end def default_name class_name.gsub(/(.)([A-Z])/, '\1_\2').downcase end def tag self.class.tag || default_tag end def default_tag (class_name[0, 1].downcase + class_name[1..-1]).to_sym end def namespace self.class.namespace || default_namespace end def default_namespace :w end private def class_name self.class.to_s.split(/::/).last end end end end end
Version data entries
14 entries across 14 versions & 1 rubygems