Sha256: a52db58486f70ce2ac8f99e22b7b01c73470b7aac12d9cdb8a1f171f3065e5b3

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true

module TailwindDsl
  module Etl
    module Extractors
      # Extract component data an place into a new file using a GTP3 extraction.
      class DataExtractor < TailwindDsl::Etl::Extractors::BaseExtractor
        attr_accessor :component

        def target_file
          component.absolute.target_data_file
        end

        # rubocop:disable Metrics/AbcSize
        def extract
          builder = Gpt3::Builder::Gpt3Builder.init

          tokens = 250

          source_file = component.absolute.target_clean_html_file
          source = File.read(source_file)

          target_file = component.absolute.target_data_file
          component_type = component.group.sub_keys.last

          builder
            .start("Extract JSON data from '#{component_type}' HTML component")
            .message('HTML:')
            .example(source)
            .message('JSON:')
            .complete(engine: 'code-davinci-002', max_tokens: tokens, suffix: "\n")
            .write_result(target_file)
        end
        # rubocop:enable Metrics/AbcSize
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tailwind_dsl-0.0.30 lib/tailwind_dsl/etl/extractors/data_extractor.rb
tailwind_dsl-0.0.29 lib/tailwind_dsl/etl/extractors/data_extractor.rb