Sha256: 2801e70e36712c6e18e435ce3899c42aa649f8f590b540cf39d1d1a3f7a142a4

Contents?: true

Size: 1.04 KB

Versions: 26

Compression:

Stored size: 1.04 KB

Contents

# -*- encoding : utf-8 -*-
require_dependency 'card/env'

require 'smart_name'

class Card
  class ViewName < SmartName
    @@name2viewnameobject = {}

    class << self
      def new obj
        return obj if self.class===obj
        str = Array===obj ? obj*joint : obj.to_s
        if known_name = @@name2viewnameobject[str]
          known_name
        else
          super str.strip
        end
      end
    end

    def initialize str
      @s = str.to_s.strip
      @s = @s.encode('UTF-8') if RUBYENCODING
      @key = if @s.index(self.class.joint)
          @parts = @s.split(/\s*#{JOINT_RE}\s*/)
          @parts << '' if @s[-1,1] == self.class.joint
          @simple = false
          @parts.map { |p| p.to_name.key } * self.class.joint
        else
          @parts = [str]
          @simple = true
          str.empty? ? '' : simple_key
        end
      @@name2viewnameobject[str] = self
    end

    def simple_key
      decoded.underscore.gsub(/[^#{OK4KEY_RE}]+/,'_').split(/_+/).reject(&:empty?)*'_'
    end

    def to_viewname() self end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
card-1.17.4 lib/card/view_name.rb
card-1.17.3 lib/card/view_name.rb
card-1.17.2 lib/card/view_name.rb
card-1.17.1 lib/card/view_name.rb
card-1.17.0 lib/card/view_name.rb
card-1.16.15 lib/card/view_name.rb
card-1.16.14 lib/card/view_name.rb
card-1.16.13 lib/card/view_name.rb
card-1.16.12 lib/card/view_name.rb
card-1.16.11 lib/card/view_name.rb
card-1.16.10 lib/card/view_name.rb
card-1.16.9 lib/card/view_name.rb
card-1.16.8 lib/card/view_name.rb
card-1.16.7 lib/card/view_name.rb
card-1.16.6 lib/card/view_name.rb
card-1.16.5 lib/card/view_name.rb
card-1.16.4 lib/card/view_name.rb
card-1.16.3 lib/card/view_name.rb
card-1.16.2 lib/card/view_name.rb
card-1.16.1 lib/card/view_name.rb