Sha256: 4f7b521110de13c67dabaedadfd29de1d721d3b2829fcc91e64e171fa09e7841

Contents?: true

Size: 820 Bytes

Versions: 3

Compression:

Stored size: 820 Bytes

Contents

module Rocx
  module Properties
    class BaseProperty
      attr_reader :value

      class << self
        attr_reader :property_name

        def tag(*args)
          @tag = args.first if args.any?
          @tag
        end

        def name(*args)
          @property_name = args.first if args.any?
          @name
        end
      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

    private

      def class_name
        self.class.to_s.split(/::/).last
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rocx-0.7.0 lib/rocx/properties/base_property.rb
rocx-0.6.0 lib/rocx/properties/base_property.rb
rocx-0.5.8 lib/rocx/properties/base_property.rb