Class: String

Inherits:
Object show all
Defined in:
lib/kiss/ext/core.rb

Direct Known Subclasses

SequelZeroTime

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.random(length) ⇒ Object

Generates string of random text of the specified length.



547
548
549
550
551
552
553
554
555
# File 'lib/kiss/ext/core.rb', line 547

def random(length)
  chars = [('A'..'H'), ('J'..'N'), ('P'..'R'), ('T'..'Y'), ('3'..'4'), ('6'..'9')].map {|r| r.to_a }.flatten  # array
  
  text = ''
  size = chars.size
  length.times { text += chars[rand(size)] }

  text
end

Instance Method Details

#adjectiveObject Also known as: adjectivize



615
616
617
# File 'lib/kiss/ext/core.rb', line 615

def adjective
  gsub(/\s/, '-')
end

#blank?Boolean

Returns:

  • (Boolean)


565
566
567
# File 'lib/kiss/ext/core.rb', line 565

def blank?
  self !~ /\S/
end

#capitalizeObject



597
598
599
600
601
# File 'lib/kiss/ext/core.rb', line 597

def capitalize
  result = self.downcase
  result[0,1] = result[0,1].upcase
  result
end

#commaize(places = 3) ⇒ Object



558
559
560
561
562
563
564
# File 'lib/kiss/ext/core.rb', line 558

def commaize(places = 3)
  s = reverse
  while s.sub!(/(\d{3})(\d)/, '\1,\2')
    next
  end
  s.reverse
end

#content_lengthObject



582
583
584
# File 'lib/kiss/ext/core.rb', line 582

def content_length
  bytesize rescue length
end

#headercaseObject Also known as: headerize



610
611
612
# File 'lib/kiss/ext/core.rb', line 610

def headercase
  original_sequel_underscore.capitalize.gsub('_', '-')
end

#html_escapeObject



633
634
635
# File 'lib/kiss/ext/core.rb', line 633

def html_escape
  Rack::Utils.escape_html(self)
end

#original_sequel_titlecaseObject

adapt titlecase method to downcase short prepositions in middle



604
# File 'lib/kiss/ext/core.rb', line 604

alias_method :original_sequel_titlecase, :titlecase

#original_sequel_underscoreObject

adapt underscore method to convert whitespace to underscores



592
# File 'lib/kiss/ext/core.rb', line 592

alias_method :original_sequel_underscore, :underscore

#prepend_html(addition, tag) ⇒ Object

Prepend addition just inside the specified tag of document.



628
629
630
631
# File 'lib/kiss/ext/core.rb', line 628

def prepend_html(addition, tag)
  regexp = /(\<#{tag}[^\>]*\>)/i
  self =~ regexp ? sub(regexp, '\1' + addition) : (addition + self)
end

#remove_tagsObject Also known as: strip_tags



586
587
588
# File 'lib/kiss/ext/core.rb', line 586

def remove_tags
  gsub(/<\/?[^>]*>/, "")
end

#titlecaseObject Also known as: titleize



605
606
607
# File 'lib/kiss/ext/core.rb', line 605

def titlecase
  original_sequel_titlecase.gsub(/(\S)( +)(at|for|in|of|on|to)( +)(\S)/i) {"#{$1}#{$2}#{$3.downcase}#{$4}#{$5}"}
end

#to_const(klass = Kernel) ⇒ Object



569
570
571
572
573
574
575
576
577
578
579
580
# File 'lib/kiss/ext/core.rb', line 569

def to_const(klass = Kernel)
  begin
    parts = self.split(/::/)
    while (next_part = parts.shift)
      klass = klass.const_get(next_part)
    end
    
    klass
  rescue
    raise "Constant '#{self}' not defined"
  end
end

#underscoreObject



593
594
595
# File 'lib/kiss/ext/core.rb', line 593

def underscore
  original_sequel_underscore.gsub(/\W+/, '_').sub(/_\Z/, '')
end

#unless_blank(alt_value = nil) ⇒ Object



620
621
622
# File 'lib/kiss/ext/core.rb', line 620

def unless_blank(alt_value = nil)
  self.blank? ? alt_value : self
end

#unless_equal_to(value, alt_value = nil) ⇒ Object



623
624
625
# File 'lib/kiss/ext/core.rb', line 623

def unless_equal_to(value, alt_value = nil)
  (self == value) ? alt_value : self
end

#url_escapeObject Also known as: url_encode



637
638
639
640
# File 'lib/kiss/ext/core.rb', line 637

def url_escape
	# encode space to '+'; don't encode letters, numbers, periods
  gsub(/([^\w\.])/) { sprintf("%%%02X", $&.unpack("C")[0]) }
end

#url_unescapeObject

Adapted from Rack::Utils.unescape.



644
645
646
647
648
# File 'lib/kiss/ext/core.rb', line 644

def url_unescape
  self.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n) do
    [$1.delete('%')].pack('H*')
  end
end

#validate(format, options = {}) ⇒ Object

Validates value against specified format. If required is true, value must contain a non-whitespace character. If required is false, value need not match format if and only if value contains only whitespace.



653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
# File 'lib/kiss/ext/core.rb', line 653

def validate(format, options = {})
  label = options[:label] || 'value'
  if options[:required] && (self.blank?)
    # value required
    raise "#{label} required and missing"
  elsif format && !self.blank?
    format_class = Kiss::Format.lookup(format)
    
    begin
      format_class.validate(self, options[:context] || {})
    rescue Kiss::Format::ValidateError => e
      raise "validation error on #{label}: #{e.message}"
    end
  end
end