Module: Card::Format::Content

Included in:
Card::Format
Defined in:
lib/card/format/content.rb

Instance Method Summary collapse

Instance Method Details

#add_class(options, klass) ⇒ Object Also known as: append_class



44
45
46
47
48
# File 'lib/card/format/content.rb', line 44

def add_class options, klass
  return if klass.blank?

  options[:class] = css_classes options[:class], klass
end

#content_nest(opts = {}) ⇒ Object

nested by another card's content (as opposed to a direct API nest)



21
22
23
24
25
26
27
28
# File 'lib/card/format/content.rb', line 21

def content_nest opts={}
  return opts[:comment] if opts.key? :comment # commented nest

  nest_name = opts[:nest_name]
  return main_nest(opts) if main_nest?(nest_name) && @nest_mode != :template

  nest nest_name, opts
end

#css_classes(*array) ⇒ Object



56
57
58
# File 'lib/card/format/content.rb', line 56

def css_classes *array
  array.flatten.uniq.compact * " "
end

#format_date(date, include_time = true) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/card/format/content.rb', line 30

def format_date date, include_time=true
  # using DateTime because Time doesn't support %e on some platforms
  if include_time
    # .strftime('%B %e, %Y %H:%M:%S')
    I18n.localize(DateTime.new(date.year, date.mon, date.day,
                               date.hour, date.min, date.sec),
                  format: :card_date_seconds)
  else
    # .strftime('%B %e, %Y')
    I18n.localize(DateTime.new(date.year, date.mon, date.day),
                  format: :card_date_only)
  end
end

#id_counterObject



60
61
62
63
64
65
# File 'lib/card/format/content.rb', line 60

def id_counter
  return @parent.id_counter if @parent

  @id_counter ||= 0
  @id_counter += 1
end

#output(*content) ⇒ Object



71
72
73
74
# File 'lib/card/format/content.rb', line 71

def output *content
  content = yield if block_given?
  Array.wrap(content).flatten.compact.join "\n"
end

#prepend_class(options, klass) ⇒ Object



52
53
54
# File 'lib/card/format/content.rb', line 52

def prepend_class options, klass
  options[:class] = css_classes klass, options[:class]
end

#process_content(override_content = nil, content_opts = nil, &block) ⇒ Object



4
5
6
7
8
# File 'lib/card/format/content.rb', line 4

def process_content override_content=nil, content_opts=nil, &block
  content_obj = content_object override_content , content_opts
  content_obj.process_chunks(&block)
  content_obj.to_s
end

#safe_process_content(override_content = nil, content_opts = nil, &block) ⇒ Object

Preserves the syntax in all nests. The content is yielded with placeholders for all nests. After executing the given block the original nests are put back in. Placeholders are numbers in double curly brackets like {2}.



13
14
15
16
17
# File 'lib/card/format/content.rb', line 13

def safe_process_content override_content=nil, content_opts=nil, &block
  content_obj = content_object override_content, chunk_list: :nest_only
  result = content_obj.without_nests(&block)
  process_content result, content_opts
end

#unique_idObject



67
68
69
# File 'lib/card/format/content.rb', line 67

def unique_id
  "#{card.name.safe_key}-#{id_counter}"
end