Class: SwarmSDK::Tools::DocumentConverters::BaseConverter

Inherits:
Object
  • Object
show all
Defined in:
lib/swarm_sdk/tools/document_converters/base_converter.rb

Overview

Base class for document converters Provides common interface and utility methods for converting various document formats

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.available?Boolean

Check if the required gem is available

Returns:

  • (Boolean)


30
31
32
# File 'lib/swarm_sdk/tools/document_converters/base_converter.rb', line 30

def available?
  gem_available?(gem_name)
end

.extensionsArray<String>

File extensions this converter handles

Returns:

  • (Array<String>)

Raises:

  • (NotImplementedError)


24
25
26
# File 'lib/swarm_sdk/tools/document_converters/base_converter.rb', line 24

def extensions
  raise NotImplementedError, "#{name} must implement .extensions"
end

.format_nameString

Human-readable format name

Returns:

  • (String)

Raises:

  • (NotImplementedError)


18
19
20
# File 'lib/swarm_sdk/tools/document_converters/base_converter.rb', line 18

def format_name
  raise NotImplementedError, "#{name} must implement .format_name"
end

.gem_available?(gem_name) ⇒ Boolean

Check if a gem is installed

Parameters:

  • gem_name (String)

    Name of the gem to check

Returns:

  • (Boolean)


37
38
39
40
41
42
# File 'lib/swarm_sdk/tools/document_converters/base_converter.rb', line 37

def gem_available?(gem_name)
  Gem::Specification.find_by_name(gem_name)
  true
rescue Gem::LoadError
  false
end

.gem_nameString

The gem name required for this converter

Returns:

  • (String)

Raises:

  • (NotImplementedError)


12
13
14
# File 'lib/swarm_sdk/tools/document_converters/base_converter.rb', line 12

def gem_name
  raise NotImplementedError, "#{name} must implement .gem_name"
end

Instance Method Details

#convert(file_path) ⇒ String, RubyLLM::Content

Convert a document file to text/content

Parameters:

  • file_path (String)

    Path to the file

Returns:

  • (String, RubyLLM::Content)

    Converted content or error message

Raises:

  • (NotImplementedError)


48
49
50
# File 'lib/swarm_sdk/tools/document_converters/base_converter.rb', line 48

def convert(file_path)
  raise NotImplementedError, "#{self.class.name} must implement #convert"
end