Class: Linguistics::Latin::Util::LatinIRB

Inherits:
Object
  • Object
show all
Defined in:
lib/latinirb/version.rb,
lib/latinirb/LatinIRB.rb

Constant Summary collapse

VERSION =
"1.0.2"

Class Method Summary collapse

Class Method Details

.beginObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/latinirb/LatinIRB.rb', line 10

def self.begin
  configure_irb_singleton
  @irb = get_irb_singleton
  set_required_main_irb_context
  configure_latinverb_prompt
  print_prelude

  trap("SIGINT") do
    irb.signal_handle
  end

  begin
    catch(:IRB_EXIT) do
      # Start the REPL
      @irb.eval_input
    end
  end

  puts "Vale!  Come back to LatinIRB soon."
end

.configure_irb_singletonObject



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/latinirb/LatinIRB.rb', line 44

def self.configure_irb_singleton
  IRB.setup(nil)
  @CONF = IRB.conf

  # This will be the script IRB sources on execution. You can
  # pre-define variables (@aFirst, etc.) and convenience methods here.

  @CONF[:SCRIPT]=File.join(File.dirname(__FILE__),  %w|latinirb_paradigmatic_verbs.rb|)

  # No, do not tell me what you read in
  @CONF[:ECHO]=false

  # Nor tell me how it evaluated
  @CONF[:VERBOSE]=false
end

.configure_latinverb_promptObject



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/latinirb/LatinIRB.rb', line 31

def self.configure_latinverb_prompt
  # Create a LatinIRB prompt
  @CONF[:PROMPT][:LATINIRB] = {
                                :PROMPT_I    => "LatinIRB > ",
                                :PROMPT_S    => "LatinIRB%l> ",
                                :PROMPT_C    => "LatinIRB > ",
                                :PROMPT_N    => "LatinIRB ?> ",
                                :RETURN      => " => %s \n",
                                :AUTO_INDENT => true
                              }
  @CONF[:PROMPT_MODE]=:LATINIRB
end

.get_irb_singletonObject



60
61
62
63
64
65
66
67
# File 'lib/latinirb/LatinIRB.rb', line 60

def self.get_irb_singleton
  # Create an irb object that is programmed to source a configuration
  # file that ends with a call to 'irb' itself after defining several
  # instance variables

  @CONF[:LOAD_MODULES]=["latinverb"]
  IRB::Irb.new(nil, @CONF[:SCRIPT])
end


69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/latinirb/LatinIRB.rb', line 69

def self.print_prelude
  puts <<-EOT
The following verbs have been made available to this session:

  * AFIRST   / AFIRST_DEP
  * ASECOND  / ASECOND_DEP
  * ATHIRD   / ATHIRD_DEP
  * ATHIRDIO / ATHIRDIO_DEP
  * AFOURTH  / AFOURTH_DEP

As well as some primary irregulars:

  * TO_BE
  * TO_CARRY
  * TO_COME

Tab-completion of the conjugation \"vectors\" is supported.

Helpful methods `chart(verb)` which prints a verb's chart as well as `b(verb)`
which prints the
`active_voice_indicative_mood_present_tense_first_person_singular_number` of
`verb`.

Verb strings can be entered using the LaTeX-style ASCII representations of
macron-bearing letters e.g.: \\={e}, \\={a}, and NB: \\={\\i}
  EOT
end

.set_required_main_irb_contextObject



97
98
99
100
# File 'lib/latinirb/LatinIRB.rb', line 97

def self.set_required_main_irb_context
  # Unless this is set, eval_input will fail.
  @CONF[:MAIN_CONTEXT] = @irb.context
end