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.



553
554
555
556
557
558
559
560
561
# File 'lib/kiss/ext/core.rb', line 553

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



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

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

#blank?Boolean

Returns:

  • (Boolean)


571
572
573
# File 'lib/kiss/ext/core.rb', line 571

def blank?
  self !~ /\S/
end

#capitalizeObject



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

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

#commaize(places = 3) ⇒ Object



564
565
566
567
568
569
570
# File 'lib/kiss/ext/core.rb', line 564

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

#content_lengthObject



588
589
590
# File 'lib/kiss/ext/core.rb', line 588

def content_length
  bytesize rescue length
end

#headercaseObject Also known as: headerize



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

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

#html_escapeObject



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

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

#original_sequel_titlecaseObject

adapt titlecase method to downcase short prepositions in middle



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

alias_method :original_sequel_titlecase, :titlecase

#original_sequel_underscoreObject

adapt underscore method to convert whitespace to underscores



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

alias_method :original_sequel_underscore, :underscore

#prepend_html(addition, tag) ⇒ Object

Prepend addition just inside the specified tag of document.



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

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

#remove_tagsObject Also known as: strip_tags



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

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

#titlecaseObject Also known as: titleize



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

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



575
576
577
578
579
580
581
582
583
584
585
586
# File 'lib/kiss/ext/core.rb', line 575

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



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

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

#unless_blank(alt_value = nil) ⇒ Object



626
627
628
# File 'lib/kiss/ext/core.rb', line 626

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

#unless_equal_to(value, alt_value = nil) ⇒ Object



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

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

#url_escapeObject Also known as: url_encode



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

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.



650
651
652
653
654
# File 'lib/kiss/ext/core.rb', line 650

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.



659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
# File 'lib/kiss/ext/core.rb', line 659

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