Class: Mbrao::ParsingEngines::PlainText

Inherits:
Base
  • Object
show all
Defined in:
lib/mbrao/parsing_engines/plain_text.rb

Overview

A class for parsing plain text files.

Instance Method Summary (collapse)

Methods inherited from Base

#parse

Instance Method Details

- (String|HashWithIndifferentAccess) filter_content(content, locales = [], options = {})

Filters content of a post by locale.

Parameters:

  • content (Content)

    The content to filter.

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

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

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

    Options to customize parsing.

Returns:

  • (String|HashWithIndifferentAccess)

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



51
52
53
54
55
56
57
58
59
60
61
# File 'lib/mbrao/parsing_engines/plain_text.rb', line 51

def filter_content(content, locales = [], options = {})
  body = content.body.ensure_string.strip
  options = sanitize_options(options)
  locales = ::Mbrao::Content.validate_locales(locales, content)

  # Split the content
  result = scan_content(body, options[:content_tags].first, options[:content_tags].last)

  # Now filter results
  perform_filter_content(result, locales)
end

- (Hash) parse_metadata(content, options = {})

Parses metadata part and returns all valid metadata.

Parameters:

  • content (String)

    The content to parse.

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

    Options to customize parsing.

Returns:

  • (Hash)

    All valid metadata for the content.



37
38
39
40
41
42
43
# File 'lib/mbrao/parsing_engines/plain_text.rb', line 37

def (content, options = {})
  begin
    YAML.load(content)
  rescue Exception => e
    options[:default] ? options[:default] : (raise ::Mbrao::Exceptions::InvalidMetadata.new(e.to_s))
  end
end

- (Array) separate_components(content, options = {})

Parses a whole post content and return its metadata and content parts.

Parameters:

  • content (String)

    The content to parse.

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

    Options to customize parsing.

Returns:

  • (Array)

    An array of metadata and contents parts.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/mbrao/parsing_engines/plain_text.rb', line 17

def separate_components(content, options = {})
   = nil
  content = content.ensure_string.strip
  options = sanitize_options(options)
  scanner = StringScanner.new(content)
  end_tag = options[:meta_tags].last

  if scanner.scan_until(options[:meta_tags].first) && ( = scanner.scan_until(end_tag)) then
     = .partition(end_tag).first
    content = scanner.rest.strip
  end

  [.ensure_string.strip, content]
end