Class: Please::Request

Inherits:
Struct
  • Object
show all
Defined in:
lib/please/request.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#codex_serviceObject

Returns the value of attribute codex_service

Returns:

  • (Object)

    the current value of codex_service



4
5
6
# File 'lib/please/request.rb', line 4

def codex_service
  @codex_service
end

#contextObject

Returns the value of attribute context

Returns:

  • (Object)

    the current value of context



4
5
6
# File 'lib/please/request.rb', line 4

def context
  @context
end

#instructionObject

Returns the value of attribute instruction

Returns:

  • (Object)

    the current value of instruction



4
5
6
# File 'lib/please/request.rb', line 4

def instruction
  @instruction
end

Instance Method Details

#promptObject



18
19
20
21
22
23
24
25
26
27
# File 'lib/please/request.rb', line 18

def prompt
  <<~PROMPT.chomp
    Write a one-line bash command for each of the following tasks.

    #{context}

    # #{instruction.gsub(/\n/, " ")}
    $
  PROMPT
end

#sendObject



5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/please/request.rb', line 5

def send
  codex_service.completion(prompt)
    .strip
    # Collapse multiline commands into one line
    .gsub(/\s*\\\n\s*/, ' ')
    # Remove subsequent lines that do not contain commands
    .gsub(/\n[^$][^\n]*$/, '')
    # Collapse multiple commands into one line
    .gsub(/\n\$ /, '; ')
    # Remove multiple consecutive spaces
    .gsub(/\s+/, ' ')
end