Module: Mbrao::ContentInterface

Extended by:
ActiveSupport::Concern
Included in:
Content
Defined in:
lib/mbrao/content_interface.rb

Overview

Miscellaneous Content class methods.

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

ALLOWED_DATETIME_FORMATS =

The allowed string format for a datetime.

[
  "%Y%m%dT%H%M%S%z", "%Y%m%dT%H%M%S%Z",
  "%FT%T.%L%z", "%FT%T.%L%Z",
  "%FT%T%z", "%FT%T%Z",
  "%F %T %z", "%F %T %Z",
  "%F %T.%L %z", "%F %T.%L %Z",

  "%F %T.%L", "%F %T", "%F %H:%M", "%F",
  "%d/%m/%Y %T.%L", "%d/%m/%Y %T", "%d/%m/%Y %H:%M", "%d/%m/%Y"
].freeze

Instance Method Summary collapse

Instance Method Details

#as_json(options = {}) ⇒ Hash

Returns the content as an Hash.

Parameters:

  • options (Hash) (defaults to: {})

    Options to modify behavior of the serialization. The only supported value are:

    • :exclude, an array of attributes to skip.
    • :exclude_empty, if to exclude nil values. Default is false.

Returns:

  • (Hash)

    An hash with all attributes.



106
107
108
109
# File 'lib/mbrao/content_interface.rb', line 106

def as_json(options = {})
  keys = [:uid, :locales, :title, :summary, :body, :tags, :more, :author, :created_at, :updated_at, :metadata]
  ::Mbrao::Parser.as_json(self, keys, options)
end

#enabled_for_locales?(*locales) ⇒ Boolean

Checks if the content is available for at least one of the provided locales.

Parameters:

  • locales (Array)

    The desired locales. Can include * to match all. If none are specified, the default mbrao locale will be used.

Returns:

  • (Boolean)

    true if the content is available for at least one of the desired locales, false otherwise.



56
57
58
59
# File 'lib/mbrao/content_interface.rb', line 56

def enabled_for_locales?(*locales)
  locales = locales.flatten.ensure_array(flatten: true) { |l| l.ensure_string.strip }.reject { |l| l == "*" }
  @locales.blank? || locales.blank? || (@locales & locales).present?
end

#get_body(locales = [], engine = :plain_text) ⇒ String|HashWithIndifferentAccess

Gets the body returning only the portion which are available for the given locales.

Parameters:

  • locales (String|Array) (defaults to: [])

    The desired locales. Can include * to match all. If none are specified, the default mbrao locale will be used.

  • engine (String|Symbol|Object) (defaults to: :plain_text)

    The engine to use to filter contents.

Returns:

  • (String|HashWithIndifferentAccess)

    Return the body of the content in the desired locales. If only one locale is required, then a String is returned, else a HashWithIndifferentAccess with locales as keys.



76
77
78
# File 'lib/mbrao/content_interface.rb', line 76

def get_body(locales = [], engine = :plain_text)
  Mbrao::Parser.create_engine(engine).filter_content(self, locales)
end

#get_more(locales = []) ⇒ String|HashWithIndifferentAccess

Gets the "more link" text of the content in the desired locales.

Parameters:

  • locales (String|Array) (defaults to: [])

    The desired locales. Can include * to match all. If none are specified, the default mbrao locale will be used.

Returns:

  • (String|HashWithIndifferentAccess)

    Return the label of the "more link" of the content in the desired locales. If only one locale is required, then a String is returned, else a HashWithIndifferentAccess with locales as keys.



94
95
96
# File 'lib/mbrao/content_interface.rb', line 94

def get_more(locales = [])
  filter_attribute_for_locales(@more, locales)
end

#get_tags(locales = []) ⇒ Array|HashWithIndifferentAccess

Gets the tags of the content in the desired locales.

Parameters:

  • locales (String|Array) (defaults to: [])

    The desired locales. Can include * to match all. If none are specified, the default mbrao locale will be used.

Returns:

  • (Array|HashWithIndifferentAccess)

    Return the title of the content in the desired locales. If only one locale is required, then a Array is returned, else a HashWithIndifferentAccess with locales as keys.



85
86
87
# File 'lib/mbrao/content_interface.rb', line 85

def get_tags(locales = [])
  filter_attribute_for_locales(@tags, locales)
end

#get_title(locales = []) ⇒ String|HashWithIndifferentAccess

Gets the title of the content in the desired locales.

Parameters:

  • locales (String|Array) (defaults to: [])

    The desired locales. Can include * to match all. If none are specified, the default mbrao locale will be used.

Returns:

  • (String|HashWithIndifferentAccess)

    Return the title of the content in the desired locales. If only one locale is required, then a String is returned, else a HashWithIndifferentAccess with locales as keys.



66
67
68
# File 'lib/mbrao/content_interface.rb', line 66

def get_title(locales = [])
  filter_attribute_for_locales(@title, locales)
end