Class: Jekyll::ClientSearch::RelatedConfiguration

Inherits:
Object
  • Object
show all
Defined in:
lib/jekyll/client_search/related_configuration.rb

Overview

Validates related-article output and matching rules.

Constant Summary collapse

DEFAULTS =
{
  "enabled" => false,
  "output" => "search-relations.json",
  "same_category" => true,
  "shared_tags" => true,
  "include_parent_domains" => true,
  "semantic" => true,
  "minimum_similarity" => 0.55,
  "max_items" => nil
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ RelatedConfiguration

Returns a new instance of RelatedConfiguration.



18
19
20
21
22
23
24
25
26
# File 'lib/jekyll/client_search/related_configuration.rb', line 18

def initialize(config)
  unless config.is_a?(Hash)
    raise Jekyll::Errors::FatalException,
          "client_search related configuration must be a mapping"
  end

  @values = DEFAULTS.merge(config)
  validate!
end

Instance Method Details

#enabled?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/jekyll/client_search/related_configuration.rb', line 28

def enabled?
  @values.fetch("enabled") == true
end

#include_parent_domains?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/jekyll/client_search/related_configuration.rb', line 49

def include_parent_domains?
  @values.fetch("include_parent_domains") == true
end

#max_itemsObject



61
62
63
# File 'lib/jekyll/client_search/related_configuration.rb', line 61

def max_items
  @values.fetch("max_items")
end

#minimum_similarityObject



57
58
59
# File 'lib/jekyll/client_search/related_configuration.rb', line 57

def minimum_similarity
  @values.fetch("minimum_similarity").to_f
end

#outputObject

Raises:

  • (Jekyll::Errors::FatalException)


32
33
34
35
36
37
38
39
# File 'lib/jekyll/client_search/related_configuration.rb', line 32

def output
  value = @values.fetch("output").to_s.sub(%r{\A/+}, "")
  normalized = Pathname.new(value).cleanpath.to_s
  return normalized unless value.empty? || normalized == "." || normalized.start_with?("../")

  raise Jekyll::Errors::FatalException,
        "client_search related output must be a relative file path inside the destination"
end

#same_category?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/jekyll/client_search/related_configuration.rb', line 41

def same_category?
  @values.fetch("same_category") == true
end

#semantic?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/jekyll/client_search/related_configuration.rb', line 53

def semantic?
  @values.fetch("semantic") == true
end

#shared_tags?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/jekyll/client_search/related_configuration.rb', line 45

def shared_tags?
  @values.fetch("shared_tags") == true
end