Module: HtmlUtils

Defined in:
lib/buzzcore/html_utils.rb,
lib/buzzcore/extra/html_truncate.rb

Constant Summary collapse

INLINE_BLOCK_SAFE_STYLE =

browser-safe inline block

"display: -moz-inline-box; display: inline-block; zoom: 1; *display:inline"
RIGID_CRR_BLOCK_STYLE =

see fixed_frame_image

"margin: 0; padding: 0; position: relative; top: 0pt; left: 0pt; display: table-cell; vertical-align: middle; overflow: hidden"
IMAGE_CRD_STYLE =
"display: block; margin: auto; vertical-align: middle;"

Class Method Summary collapse

Class Method Details

.fixed_frame_image(aImgTag, aFrameW, aFrameH, aImgW = nil, aImgH = nil) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/buzzcore/html_utils.rb', line 14

def self.fixed_frame_image(aImgTag,aFrameW,aFrameH,aImgW=nil,aImgH=nil)
  style = RIGID_CRR_BLOCK_STYLE+";width: #{aFrameW}px; height: #{aFrameH}px"
  result = "<div style=\"#{INLINE_BLOCK_SAFE_STYLE}\"><div style=\"#{style}\">"
  aImgTag = XmlUtils.quick_remove_att(aImgTag,'width') if aImgW
  aImgTag = XmlUtils.quick_remove_att(aImgTag,'height') if aImgH
  style = XmlUtils.quick_att_from_tag(aImgTag,'style').to_s
  style += IMAGE_CRD_STYLE
  style += ";width: #{aImgW}px; height: #{aImgH}px"
  aImgTag = XmlUtils.quick_set_att(aImgTag,'style',style)
  result << aImgTag
  result << "</div></div>"
  result
end

.gen_seo_title(*aValues) ⇒ Object



28
29
30
31
32
33
# File 'lib/buzzcore/html_utils.rb', line 28

def self.gen_seo_title(*aValues)
  aValues = [aValues] unless aValues.is_a? Array
  aValues = aValues.map {|f| f.to_s.strip }
  aValues.delete_if {|v| v.empty? }
  aValues.join(' ').gsub(/ {2,}/,' ')
end

.html_to_plain(aHtml) ⇒ Object



27
28
29
30
31
32
# File 'lib/buzzcore/extra/html_truncate.rb', line 27

def self.html_to_plain(aHtml)
  return '' if !aHtml
  aHtml = StringUtils.simplify_whitespace(aHtml)
  aHtml = Sanitize.clean(aHtml)
  StringUtils.simplify_whitespace(aHtml)
end

.plain_chars(aHtmlText, aMaxLength) ⇒ Object



39
40
41
42
43
# File 'lib/buzzcore/extra/html_truncate.rb', line 39

def self.plain_chars(aHtmlText,aMaxLength)
  result = CGI.unescapeHTML(Sanitize.clean(aHtmlText))
  result = StringUtils.simplify_whitespace(result)
  StringUtils.word_safe_truncate(result,aMaxLength)
end

.plain_words(aHtmlText, aWords) ⇒ Object



34
35
36
37
# File 'lib/buzzcore/extra/html_truncate.rb', line 34

def self.plain_words(aHtmlText,aWords)
  result = CGI.unescapeHTML(Sanitize.clean(aHtmlText))
  StringUtils.crop_to_word_count(result,aWords)
end

.url_name_from(*aValues) ⇒ Object



35
36
37
# File 'lib/buzzcore/html_utils.rb', line 35

def self.url_name_from(*aValues)
  gen_seo_title(*aValues).urlize 
end

.word_safe_truncate(aHtmlText, aMaxLength, aSuffix = '...', aLevel = :BASIC) ⇒ Object

Truncates HTML text. Breaks on word boundaries and closes tags. valid values for aLevel are :NO_TAGS, :RESTRICTED, :BASIC and :RELAXED



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/buzzcore/extra/html_truncate.rb', line 8

def self.word_safe_truncate(aHtmlText,aMaxLength,aSuffix='...',aLevel=:BASIC)
  result = StringUtils.word_safe_truncate(aHtmlText,aMaxLength)
  level = case aLevel
    when :NO_TAGS   
      nil
    when :RESTRICTED
      Sanitize::Config::RESTRICTED
    when :BASIC
      Sanitize::Config::BASIC
    when :RELAXED
      Sanitize::Config::RELAXED
    else
      Sanitize::Config::BASIC
  end
  result = level ? Sanitize.clean(result,level) : Sanitize.clean(result)
  result += ' '+aSuffix
  result
end