Class: JekyllImgFlow::PresetManager

Inherits:
Object
  • Object
show all
Defined in:
lib/jekyll-imgflow/preset_manager.rb

Overview

PresetManager - translates YAML presets to tags:value format Handles tag overrides (user tags override preset tags) Passes combined markup to Parser for uniform validation flow

Instance Method Summary collapse

Constructor Details

#initialize(site, config) ⇒ PresetManager

Returns a new instance of PresetManager.



10
11
12
13
14
# File 'lib/jekyll-imgflow/preset_manager.rb', line 10

def initialize(site, config)
  @site = site
  @config = config
  @presets = load_presets
end

Instance Method Details

#available_presetsArray<String>

Get all available preset names

Returns:

  • (Array<String>)

    Array of preset names



53
54
55
# File 'lib/jekyll-imgflow/preset_manager.rb', line 53

def available_presets
  @presets.keys
end

#build_markup_from_preset(preset_name, user_options = {}) ⇒ String

Build markup from preset (tags:value format)

Parameters:

  • preset_name (String)

    Name of preset

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

    User-provided options that override preset values

Returns:

  • (String)

    Markup string in tags:value format



61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/jekyll-imgflow/preset_manager.rb', line 61

def build_markup_from_preset(preset_name, user_options = {})
  preset = get_preset(preset_name)
  return "" unless preset

  # Convert YAML operations to tags:value format
  preset_tags = yaml_to_tags(preset)

  # Merge with user options (user options override preset)
  merged_tags = merge_tags(preset_tags, user_options)

  # Convert to markup string
  tags_to_markup(merged_tags)
end

#get_preset(name) ⇒ Hash?

Get a preset by name

Parameters:

  • name (String)

    Preset name

Returns:

  • (Hash, nil)

    Preset data or nil if not found



40
41
42
# File 'lib/jekyll-imgflow/preset_manager.rb', line 40

def get_preset(name)
  @presets[name.to_s]
end

#load_presetsObject

Load presets from _data/imgflow/presets/



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/jekyll-imgflow/preset_manager.rb', line 17

def load_presets
  presets = {}
  presets_dir = File.join(@site.source, "_data", "imgflow", "presets")

  return presets unless Dir.exist?(presets_dir)

  Dir.glob(File.join(presets_dir, "*.yml")).each do |preset_file|
    preset_name = File.basename(preset_file, ".yml")
    begin
      preset_data = YAML.safe_load_file(preset_file)
      presets[preset_name] = preset_data
    rescue Psych::SyntaxError => e
      Jekyll.logger.warn "ImgFlow: Invalid YAML in preset file #{preset_file}: #{e.message}"
      # Skip invalid preset files
    end
  end

  presets
end

#preset_exists?(name) ⇒ Boolean

Check if a preset exists

Parameters:

  • name (String)

    Preset name

Returns:

  • (Boolean)

    True if preset exists



47
48
49
# File 'lib/jekyll-imgflow/preset_manager.rb', line 47

def preset_exists?(name)
  @presets.key?(name.to_s)
end