latinirb 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ pkg/*
2
+ .DS_*
3
+ *.gem
4
+ *.sw?
5
+ *.vim
6
+ **/*.vim
7
+ .bundle
8
+ .rvmrc
9
+ *doc
10
+ tags
11
+ TODO
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in latinirb.gemspec
4
+ gemspec
data/README.markdown ADDED
@@ -0,0 +1,260 @@
1
+ # LatinIRB
2
+
3
+ ## DESCRIPTION
4
+
5
+ LatinIRB is an IRB session in which a user can interact with paradigmatic
6
+ Latin verbs (`@aFirst`, `@aSecond`, `@aThird`, `@aThirdIO`, `@aFourth`) as
7
+ calculated heuristically by the LatinVerb library.
8
+
9
+ The methods of chief interest will be those that are _vectors_ within the
10
+ LatinVerb parlance i.e. methods that uniquely identify a specific conjugated
11
+ form of a verb.
12
+
13
+ An primary use case would be:
14
+
15
+ ```ruby
16
+ p @aFirst.active_voice_indicative_mood_present_tense_first_person_singular_number #=> amō
17
+ p @aFirst.chart #=> ( a chart )
18
+ p @aFirst.active_voice_indicative_mood_present_tense #=> ["amō", "amās", "amat", "amāmus", "amātis", "amant"]
19
+ ```
20
+
21
+ Upon opening the script, the student may play with verbs offered for
22
+ exploration. These are the standard paradigmatics verbs presented in
23
+ Wheelock:
24
+
25
+ <table>
26
+ <tr><th>Varible </th> <th>Parts </th> <th> Meaning</th></tr>
27
+ <tr><td>@aFirst </td> <td>amō amāre amāvī amatum </td> <td> to love / like</td></tr>
28
+ <tr><td>@aSecond </td> <td>moneō monēre monvī monitum</td> <td> to warn / advise</td></tr>
29
+ <tr><td>@aThird </td> <td>agō agere ēgī actum </td> <td> to do / lead / undertake</td></tr>
30
+ <tr><td>@aThirdIO</td> <td>capiō capere cēpī captum </td> <td> to grab / seize</td></tr>
31
+ <tr><td>@aFourth </td> <td>audiō audīre audīvī auditum</td> <td> to hear</td></tr>
32
+ </table>
33
+
34
+ ## INSTANTIATING
35
+
36
+ Because LatinVerb attempts to preserve the phonographic data of a Latin verb,
37
+ the quantity of the vowels, the LatinVerb-definining string _must_ contain the
38
+ macron data so that the heuristics work.
39
+
40
+ To this end, you may use
41
+ [MacronConversions](https://github.com/sgharms/Macronconversions) to convert
42
+ ASCII TeX-style transliterations of macronized vowels to produce the correct
43
+ string.
44
+
45
+ lv = Linguistics::Latin::Verb::LatinVerb#new("amō amāre amāvī amatum"))
46
+ lv.active\_voice\_indicative\_mood\_present\_tense\_first\_person\_singular\_number #=> amō
47
+
48
+ ## VIEWING
49
+
50
+ The environment takes advantage of Ruby's UTF-8 support to display the verbs
51
+ with macrons (notation representing the quantity of the vowels). I recommend
52
+ that you use urxvt or Apple's Terminal.app for viewing these entries.
53
+
54
+ ## GENERATING VERBS
55
+
56
+ Typically, in the code I have used the macron-ized character because Vim and my Terminal of choice
57
+ both understand it.
58
+
59
+ LatinVerb#new %w(amō amāre amāvī amatum)
60
+
61
+ ## EXECUTING METHODS
62
+
63
+ Every verb in latin is a "vector" comprised of the voice / mood / tense /
64
+ number / and person
65
+
66
+ ### CHART VIEW
67
+
68
+ To view the chart of a verb, use `LatinVerb#chart`. This is a basic chart that
69
+ will look familiar to students.
70
+
71
+ ### SINGULAR VECTOR
72
+
73
+ As such methods are of the form
74
+
75
+ (active|passive)\_voice\_(indicative|subjunctive)\_mood\_(present|imperfect|perfect|pastperfect|futureperfect|etc.)tense\_first\_person\_singular\_number
76
+
77
+ This will return a single value. Where the result is ambiguous (e.g. 'number' is not provided) multiple values are returned.
78
+ an exhaustive list of options follows below.
79
+
80
+ ### MULTIPLEX VECTORS
81
+
82
+ Several convenience methods exist which load multiple tenses at the same time such as "present system" or "perfect system". These
83
+ methods load the tenses into the @collections iVar associated with the LatinVerb# This value can be accessed as @collections
84
+ is shared per attr\_reader
85
+
86
+ ### CHART VIEW
87
+
88
+ By using the LatinDisplay.chart\_view, a chart, much like what is found in verb references can be had for the verb. This is a
89
+ _very_ handy method.
90
+
91
+ ### Comprehensive List of Singular Vectors
92
+
93
+ * LatinVerb#active\_voice\_indicative\_mood\_present\_tense\_first\_person\_singular\_number
94
+ * LatinVerb#active\_voice\_indicative\_mood\_present\_tense\_second\_person\_singular\_number
95
+ * LatinVerb#active\_voice\_indicative\_mood\_present\_tense\_third\_person\_singular\_number
96
+ * LatinVerb#active\_voice\_indicative\_mood\_present\_tense\_first\_person\_plural\_number
97
+ * LatinVerb#active\_voice\_indicative\_mood\_present\_tense\_second\_person\_plural\_number
98
+ * LatinVerb#active\_voice\_indicative\_mood\_present\_tense\_third\_person\_plural\_number
99
+
100
+ * LatinVerb#active\_voice\_indicative\_mood\_imperfect\_tense\_first\_person\_singular\_number
101
+ * LatinVerb#active\_voice\_indicative\_mood\_imperfect\_tense\_second\_person\_singular\_number
102
+ * LatinVerb#active\_voice\_indicative\_mood\_imperfect\_tense\_third\_person\_singular\_number
103
+ * LatinVerb#active\_voice\_indicative\_mood\_imperfect\_tense\_first\_person\_plural\_number
104
+ * LatinVerb#active\_voice\_indicative\_mood\_imperfect\_tense\_second\_person\_plural\_number
105
+ * LatinVerb#active\_voice\_indicative\_mood\_imperfect\_tense\_third\_person\_plural\_number
106
+
107
+ * LatinVerb#active\_voice\_indicative\_mood\_future\_tense\_first\_person\_singular\_number
108
+ * LatinVerb#active\_voice\_indicative\_mood\_future\_tense\_second\_person\_singular\_number
109
+ * LatinVerb#active\_voice\_indicative\_mood\_future\_tense\_third\_person\_singular\_number
110
+ * LatinVerb#active\_voice\_indicative\_mood\_future\_tense\_first\_person\_plural\_number
111
+ * LatinVerb#active\_voice\_indicative\_mood\_future\_tense\_second\_person\_plural\_number
112
+ * LatinVerb#active\_voice\_indicative\_mood\_future\_tense\_third\_person\_plural\_number
113
+
114
+ * LatinVerb#active\_voice\_indicative\_mood\_perfect\_tense\_first\_person\_singular\_number
115
+ * LatinVerb#active\_voice\_indicative\_mood\_perfect\_tense\_second\_person\_singular\_number
116
+ * LatinVerb#active\_voice\_indicative\_mood\_perfect\_tense\_third\_person\_singular\_number
117
+ * LatinVerb#active\_voice\_indicative\_mood\_perfect\_tense\_first\_person\_plural\_number
118
+ * LatinVerb#active\_voice\_indicative\_mood\_perfect\_tense\_second\_person\_plural\_number
119
+ * LatinVerb#active\_voice\_indicative\_mood\_perfect\_tense\_third\_person\_plural\_number
120
+
121
+ * LatinVerb#active\_voice\_indicative\_mood\_pastperfect\_tense\_first\_person\_singular\_number
122
+ * LatinVerb#active\_voice\_indicative\_mood\_pastperfect\_tense\_second\_person\_singular\_number
123
+ * LatinVerb#active\_voice\_indicative\_mood\_pastperfect\_tense\_third\_person\_singular\_number
124
+ * LatinVerb#active\_voice\_indicative\_mood\_pastperfect\_tense\_first\_person\_plural\_number
125
+ * LatinVerb#active\_voice\_indicative\_mood\_pastperfect\_tense\_second\_person\_plural\_number
126
+ * LatinVerb#active\_voice\_indicative\_mood\_pastperfect\_tense\_third\_person\_plural\_number
127
+
128
+ * LatinVerb#active\_voice\_indicative\_mood\_futureperfect\_tense\_first\_person\_singular\_number
129
+ * LatinVerb#active\_voice\_indicative\_mood\_futureperfect\_tense\_second\_person\_singular\_number
130
+ * LatinVerb#active\_voice\_indicative\_mood\_futureperfect\_tense\_third\_person\_singular\_number
131
+ * LatinVerb#active\_voice\_indicative\_mood\_futureperfect\_tense\_first\_person\_plural\_number
132
+ * LatinVerb#active\_voice\_indicative\_mood\_futureperfect\_tense\_second\_person\_plural\_number
133
+ * LatinVerb#active\_voice\_indicative\_mood\_futureperfect\_tense\_third\_person\_plural\_number
134
+
135
+ * LatinVerb#passive\_voice\_indicative\_mood\_present\_tense\_first\_person\_singular\_number
136
+ * LatinVerb#passive\_voice\_indicative\_mood\_present\_tense\_second\_person\_singular\_number
137
+ * LatinVerb#passive\_voice\_indicative\_mood\_present\_tense\_third\_person\_singular\_number
138
+ * LatinVerb#passive\_voice\_indicative\_mood\_present\_tense\_first\_person\_plural\_number
139
+ * LatinVerb#passive\_voice\_indicative\_mood\_present\_tense\_second\_person\_plural\_number
140
+ * LatinVerb#passive\_voice\_indicative\_mood\_present\_tense\_third\_person\_plural\_number
141
+
142
+ * LatinVerb#passive\_voice\_indicative\_mood\_imperfect\_tense\_first\_person\_singular\_number
143
+ * LatinVerb#passive\_voice\_indicative\_mood\_imperfect\_tense\_second\_person\_singular\_number
144
+ * LatinVerb#passive\_voice\_indicative\_mood\_imperfect\_tense\_third\_person\_singular\_number
145
+ * LatinVerb#passive\_voice\_indicative\_mood\_imperfect\_tense\_first\_person\_plural\_number
146
+ * LatinVerb#passive\_voice\_indicative\_mood\_imperfect\_tense\_second\_person\_plural\_number
147
+ * LatinVerb#passive\_voice\_indicative\_mood\_imperfect\_tense\_third\_person\_plural\_number
148
+
149
+ * LatinVerb#passive\_voice\_indicative\_mood\_future\_tense\_first\_person\_singular\_number
150
+ * LatinVerb#passive\_voice\_indicative\_mood\_future\_tense\_second\_person\_singular\_number
151
+ * LatinVerb#passive\_voice\_indicative\_mood\_future\_tense\_third\_person\_singular\_number
152
+ * LatinVerb#passive\_voice\_indicative\_mood\_future\_tense\_first\_person\_plural\_number
153
+ * LatinVerb#passive\_voice\_indicative\_mood\_future\_tense\_second\_person\_plural\_number
154
+ * LatinVerb#passive\_voice\_indicative\_mood\_future\_tense\_third\_person\_plural\_number
155
+
156
+ * LatinVerb#passive\_voice\_indicative\_mood\_perfect\_tense\_first\_person\_singular\_number
157
+ * LatinVerb#passive\_voice\_indicative\_mood\_perfect\_tense\_second\_person\_singular\_number
158
+ * LatinVerb#passive\_voice\_indicative\_mood\_perfect\_tense\_third\_person\_singular\_number
159
+ * LatinVerb#passive\_voice\_indicative\_mood\_perfect\_tense\_first\_person\_plural\_number
160
+ * LatinVerb#passive\_voice\_indicative\_mood\_perfect\_tense\_second\_person\_plural\_number
161
+ * LatinVerb#passive\_voice\_indicative\_mood\_perfect\_tense\_third\_person\_plural\_number.to\_s)
162
+
163
+ * LatinVerb#passive\_voice\_indicative\_mood\_pastperfect\_tense\_first\_person\_singular\_number
164
+ * LatinVerb#passive\_voice\_indicative\_mood\_pastperfect\_tense\_second\_person\_singular\_number
165
+ * LatinVerb#passive\_voice\_indicative\_mood\_pastperfect\_tense\_third\_person\_singular\_number
166
+ * LatinVerb#passive\_voice\_indicative\_mood\_pastperfect\_tense\_first\_person\_plural\_number
167
+ * LatinVerb#passive\_voice\_indicative\_mood\_pastperfect\_tense\_second\_person\_plural\_number
168
+ * LatinVerb#passive\_voice\_indicative\_mood\_pastperfect\_tense\_third\_person\_plural\_number.to\_s)
169
+
170
+ * LatinVerb#passive\_voice\_indicative\_mood\_futureperfect\_tense\_first\_person\_singular\_number
171
+ * LatinVerb#passive\_voice\_indicative\_mood\_futureperfect\_tense\_second\_person\_singular\_number
172
+ * LatinVerb#passive\_voice\_indicative\_mood\_futureperfect\_tense\_third\_person\_singular\_number
173
+ * LatinVerb#passive\_voice\_indicative\_mood\_futureperfect\_tense\_first\_person\_plural\_number
174
+ * LatinVerb#passive\_voice\_indicative\_mood\_futureperfect\_tense\_second\_person\_plural\_number
175
+ * LatinVerb#passive\_voice\_indicative\_mood\_futureperfect\_tense\_third\_person\_plural\_number
176
+
177
+
178
+ * LatinVerb#active\_voice\_subjunctive\_mood\_present\_tense\_first\_person\_singular\_number
179
+ * LatinVerb#active\_voice\_subjunctive\_mood\_present\_tense\_second\_person\_singular\_number
180
+ * LatinVerb#active\_voice\_subjunctive\_mood\_present\_tense\_third\_person\_singular\_number
181
+ * LatinVerb#active\_voice\_subjunctive\_mood\_present\_tense\_first\_person\_plural\_number
182
+ * LatinVerb#active\_voice\_subjunctive\_mood\_present\_tense\_second\_person\_plural\_number
183
+ * LatinVerb#active\_voice\_subjunctive\_mood\_present\_tense\_third\_person\_plural\_number
184
+
185
+ * LatinVerb#active\_voice\_subjunctive\_mood\_imperfect\_tense\_first\_person\_singular\_number
186
+ * LatinVerb#active\_voice\_subjunctive\_mood\_imperfect\_tense\_second\_person\_singular\_number
187
+ * LatinVerb#active\_voice\_subjunctive\_mood\_imperfect\_tense\_third\_person\_singular\_number
188
+ * LatinVerb#active\_voice\_subjunctive\_mood\_imperfect\_tense\_first\_person\_plural\_number
189
+ * LatinVerb#active\_voice\_subjunctive\_mood\_imperfect\_tense\_second\_person\_plural\_number
190
+ * LatinVerb#active\_voice\_subjunctive\_mood\_imperfect\_tense\_third\_person\_plural\_number
191
+
192
+ * LatinVerb#active\_voice\_subjunctive\_mood\_perfect\_tense\_first\_person\_singular\_number
193
+ * LatinVerb#active\_voice\_subjunctive\_mood\_perfect\_tense\_second\_person\_singular\_number
194
+ * LatinVerb#active\_voice\_subjunctive\_mood\_perfect\_tense\_third\_person\_singular\_number
195
+ * LatinVerb#active\_voice\_subjunctive\_mood\_perfect\_tense\_first\_person\_plural\_number
196
+ * LatinVerb#active\_voice\_subjunctive\_mood\_perfect\_tense\_second\_person\_plural\_number
197
+ * LatinVerb#active\_voice\_subjunctive\_mood\_perfect\_tense\_third\_person\_plural\_number
198
+
199
+ * LatinVerb#active\_voice\_subjunctive\_mood\_pastperfect\_tense\_first\_person\_singular\_number
200
+ * LatinVerb#active\_voice\_subjunctive\_mood\_pastperfect\_tense\_second\_person\_singular\_number
201
+ * LatinVerb#active\_voice\_subjunctive\_mood\_pastperfect\_tense\_third\_person\_singular\_number
202
+ * LatinVerb#active\_voice\_subjunctive\_mood\_pastperfect\_tense\_first\_person\_plural\_number
203
+ * LatinVerb#active\_voice\_subjunctive\_mood\_pastperfect\_tense\_second\_person\_plural\_number
204
+ * LatinVerb#active\_voice\_subjunctive\_mood\_pastperfect\_tense\_third\_person\_plural\_number
205
+
206
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_present\_tense\_first\_person\_singular\_number
207
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_present\_tense\_second\_person\_singular\_number
208
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_present\_tense\_third\_person\_singular\_number
209
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_present\_tense\_first\_person\_plural\_number
210
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_present\_tense\_second\_person\_plural\_number
211
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_present\_tense\_third\_person\_plural\_number
212
+
213
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_imperfect\_tense\_first\_person\_singular\_number
214
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_imperfect\_tense\_second\_person\_singular\_number
215
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_imperfect\_tense\_third\_person\_singular\_number
216
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_imperfect\_tense\_first\_person\_plural\_number
217
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_imperfect\_tense\_second\_person\_plural\_number
218
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_imperfect\_tense\_third\_person\_plural\_number
219
+
220
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_perfect\_tense\_first\_person\_singular\_number
221
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_perfect\_tense\_second\_person\_singular\_number
222
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_perfect\_tense\_third\_person\_singular\_number
223
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_perfect\_tense\_first\_person\_plural\_number
224
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_perfect\_tense\_second\_person\_plural\_number
225
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_perfect\_tense\_third\_person\_plural\_number
226
+
227
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_pastperfect\_tense\_first\_person\_singular\_number
228
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_pastperfect\_tense\_second\_person\_singular\_number
229
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_pastperfect\_tense\_third\_person\_singular\_number
230
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_pastperfect\_tense\_first\_person\_plural\_number
231
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_pastperfect\_tense\_second\_person\_plural\_number
232
+ * LatinVerb#passive\_voice\_subjunctive\_mood\_pastperfect\_tense\_third\_person\_plural\_number
233
+
234
+ * LatinVerb#imperatives[0]
235
+ * LatinVerb#imperatives[1]
236
+
237
+ * LatinVerb#present\_active\_participle
238
+ * LatinVerb#future\_active\_participle
239
+ * LatinVerb#perfect\_passive\_participle
240
+ * LatinVerb#future\_passive\_participle
241
+
242
+ * LatinVerb#present\_active\_infinitive
243
+ * LatinVerb#perfect\_active\_infinitive
244
+ * LatinVerb#future\_active\_infinitive
245
+ * LatinVerb#present\_passive\_infinitive
246
+ * LatinVerb#perfect\_passive\_infinitive)
247
+
248
+ ## AUTHOR
249
+
250
+ Steven G. Harms (http://stevengharms.com)
251
+
252
+ ## THANKS
253
+
254
+ Thanks to the Austin Ruby coders group who answered questions that helped me put
255
+ this all together. Thanks also to the Reject^{2} conference at the Lone Star
256
+ Ruby Conference 2008 who helped me think through some of the metaprogrammatic
257
+ approaches. Thanks to Professor James Burleson of Austin Community College who
258
+ insisted, old-style, of a mastery of the rote basics of Latin. Thanks also to
259
+ Lauren Roth ( http://www.laurennroth.com) for her support and encouragement and
260
+ understanding of my pre-dawn hack sessions.
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ require 'bundler'
2
+ require "rake/rdoctask"
3
+
4
+ Bundler::GemHelper.install_tasks
5
+
6
+ # Generate documentation
7
+ Rake::RDocTask.new do |rd|
8
+ rd.rdoc_files.include("lib/**/*.rb")
9
+ rd.rdoc_dir = "rdoc"
10
+ end
11
+
12
+ #Added to get testing working
13
+ require 'rake/testtask'
14
+ Rake::TestTask.new(:test)
data/bin/latinirb ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Add the gem libraries to the Ruby path
4
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
5
+
6
+ require 'LatinIRB'
7
+ Linguistics::Latin::Util::LatinIRB.begin
data/latinirb.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "latinirb/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "latinirb"
7
+ s.version = Linguistics::Latin::Util::LatinIRB::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Steven G. Harms"]
10
+ s.email = ["steven.harms@gmail.com"]
11
+ s.homepage = "http://rubygems.org/gems/latinverb"
12
+ s.summary = %q{Gem designed to explore verbs created by LatinVerb}
13
+ s.description = %q{This gem takes initial data describing a LatinVerb and allows this is be instantiated into an IRB session. Here the verb can be queried or displayed.}
14
+
15
+
16
+ s.rubyforge_project = "latinverb"
17
+
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ["lib"]
22
+
23
+ s.add_dependency("latinverb",">=0.9.3")
24
+ end
data/lib/LatinIRB.rb ADDED
@@ -0,0 +1,172 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'irb'
4
+ require 'irb/completion'
5
+ require 'latinverb'
6
+ require 'latinirb/paradigmatic_verbs'
7
+ require 'macronconversions'
8
+ require 'pp'
9
+
10
+ # Monkey-patch to change the gets behavior. In the gem, the FileInputMethod
11
+ # class's 'gets' method always prints out what was read. This should be
12
+ # suppressed by the IRB class's Context class's ECHO state, but this is not
13
+ # used, possibly a bug depending on what the semantics of that @echo variable
14
+ # are meant to mean.
15
+
16
+ module IRB
17
+ class FileInputMethod < InputMethod
18
+ def gets
19
+ @io.gets
20
+ end
21
+ end
22
+ end
23
+
24
+ module Linguistics
25
+ module Latin
26
+ module Util
27
+ class LatinIRB
28
+ def self.begin
29
+ #---
30
+ #
31
+ # This method is taken from irb.rb's IRB.start method. I trimmed
32
+ # out some of the conditional possibilities that I did not want to
33
+ # handle here (because they're not necessary).
34
+ #
35
+ # Run the basic setup script and pull the configuration object
36
+ # (IRB::Context) back into the present scope. Then we set that
37
+ # object's options and proceed.
38
+ #
39
+ #+++
40
+
41
+ IRB.setup(nil)
42
+ @CONF = IRB.conf
43
+
44
+ # This will be the script IRB sources on execution. You can
45
+ # pre-define variables (@aFirst, etc.) and convenience methods here.
46
+
47
+ @CONF[:SCRIPT]="lib/latirb.rb"
48
+
49
+ # No, do not tell me what you read in
50
+ @CONF[:ECHO]=false
51
+
52
+ # Nor tell me how it evaluated
53
+ @CONF[:VERBOSE]=false
54
+
55
+ # We need this module
56
+ @CONF[:LOAD_MODULES]=["latinverb"]
57
+
58
+ # Create an irb object that is programmed to (silently, per above)
59
+ # source a configuration file that ends with a call to 'irb' itself
60
+ # after defining several instance variables
61
+
62
+ irb = IRB::Irb.new(nil, @CONF[:SCRIPT])
63
+
64
+ # Create a LatinIRB prompt
65
+ @CONF[:PROMPT][:LATINIRB] = {
66
+ :PROMPT_I => "LatinIRB > ",
67
+ :PROMPT_S => "LatinIRB%l> ",
68
+ :PROMPT_C => "LatinIRB > ",
69
+ :PROMPT_N => "LatinIRB ?> ",
70
+ :RETURN => " => %s \n",
71
+ :AUTO_INDENT => true
72
+ }
73
+ @CONF[:PROMPT_MODE]=:LATINIRB
74
+
75
+ # Unless this is set, eval_input will fail. Make sure this is
76
+ # set.
77
+ @CONF[:MAIN_CONTEXT] = irb.context
78
+
79
+ # This corrects the tab-completion behavior as provided by
80
+ # irb/completion.rb. In the even that what's tabbed-after matches
81
+ # the RegExp, it should invoke this process. If the receiver is a
82
+ # LatinVerb, the full complement of vectors should be provided as
83
+ # complet-able. IF NOT, then the pairing is passed to the standard
84
+ # CompletionProc.
85
+
86
+ Readline.completion_proc = calculate_completion_proc
87
+
88
+ # We have finished the configuration at this point, so now we need
89
+ # to kick up the REPL after providing preliminary instruction.
90
+ puts "Beginning a LatinVerb session."
91
+
92
+ puts "The following verbs have been made available to this session via latirb.rb:"
93
+
94
+ instance_variables.grep(/[a-z]/).each{|x| puts " * #{x}"}
95
+
96
+ puts "Tab-completion of the conjugation \"vectors\" is supported."
97
+
98
+ trap("SIGINT") do
99
+ irb.signal_handle
100
+ end
101
+
102
+ begin
103
+ catch(:IRB_EXIT) do
104
+ # Start the REPL
105
+ irb.eval_input
106
+ end
107
+ end
108
+
109
+ puts "Vale! Come back to LatinIRB soon."
110
+ end
111
+
112
+ ##
113
+ #
114
+ # Used to override IRB::InputCompletor::select_message for handling
115
+ # tab-completion of instance variables. Code is largely taken from
116
+ # that method with the addition of the /^@/ condition. In
117
+ # IRB::Completor, when an array of matches has been identified, they
118
+ # are sent as the "candidates" while the "receiver" bears the match
119
+ # based on the regex of "message."
120
+ #
121
+ ##
122
+
123
+ def self.select_message(receiver, message, candidates)
124
+ candidates.grep(/^#{message}/).collect do |e|
125
+ case e
126
+ when /^[a-zA-Z_]/
127
+ receiver + "." + e
128
+ when /^[0-9]/
129
+ when /^@/
130
+ e
131
+ when *Operators
132
+ #receiver + " " + e
133
+ end
134
+ end
135
+ end
136
+
137
+ ##
138
+ #
139
+ # As part of the TAB completion, Readline must be provided a
140
+ # completion proc that will be used to generate the matching results
141
+ # that will be appended to the line at whose end the TAB key was
142
+ # struck. This method provides that proc.
143
+ #
144
+ ##
145
+
146
+ def self.calculate_completion_proc
147
+ proc do |input|
148
+ bind = IRB.conf[:MAIN_CONTEXT].workspace.binding
149
+
150
+ input =~ /^([^."].*)\.([^.]*)$/
151
+ begin
152
+ receiver = $1
153
+ message = Regexp.quote($2)
154
+ rObj = instance_variable_get(receiver.to_sym)
155
+ rescue Exception
156
+ end
157
+
158
+ if rObj.class == Linguistics::Latin::Verb::LatinVerb
159
+ IRB::InputCompletor::select_message(receiver, message, rObj.instance_methods.grep(/^#{message}/))
160
+ elsif input =~ /^@/
161
+ # This handles instance variables. input is @someInstanceVariable's @aSomeIn<TAB>
162
+ self.select_message(input, input, eval("instance_variables", bind).grep(/^@a/))
163
+ else
164
+ IRB::InputCompletor::CompletionProc.call input
165
+ end
166
+ end
167
+ end
168
+
169
+ end
170
+ end
171
+ end
172
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ require 'macronconversions'
4
+
5
+ module Linguistics
6
+ module Latin
7
+ module Util
8
+ class LatinIRB
9
+ @aFirst = Linguistics::Latin::Verb::LatinVerb.new %q(amō amāre amāvī amatum)
10
+ @aSecond = Linguistics::Latin::Verb::LatinVerb.new %q(moneō monēre monvī monitum)
11
+ @aThird = Linguistics::Latin::Verb::LatinVerb.new %q(agō agere ēgī actum)
12
+ @aThirdIO = Linguistics::Latin::Verb::LatinVerb.new %q(capiō capere cēpī captum)
13
+ @aFourth = Linguistics::Latin::Verb::LatinVerb.new %q(audiō audīre audīvī auditum)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,10 @@
1
+ # encoding: UTF-8
2
+ module Linguistics
3
+ module Latin
4
+ module Util
5
+ class LatinIRB
6
+ VERSION = "0.0.2" # :nodoc:
7
+ end
8
+ end
9
+ end
10
+ end
data/lib/latirb.rb ADDED
@@ -0,0 +1,20 @@
1
+ # encoding: UTF-8
2
+ # Basic definitions
3
+ @aFirst = Linguistics::Latin::Verb::LatinVerb.new %q(amō amāre amāvī amatum)
4
+ @aSecond = Linguistics::Latin::Verb::LatinVerb.new %q(moneō monēre monvī monitum)
5
+ @aThird = Linguistics::Latin::Verb::LatinVerb.new %q(agō agere ēgī actum)
6
+ @aThirdIO = Linguistics::Latin::Verb::LatinVerb.new %q(capiō capere cēpī captum)
7
+ @aFourth = Linguistics::Latin::Verb::LatinVerb.new %q(audiō audīre audīvī auditum)
8
+
9
+ # It's handy to have these two methods defined here for simple tests of the
10
+ # code and demonstrations.
11
+
12
+ def j
13
+ puts @aFirst.active_voice_indicative_mood_present_tense_first_person_singular_number
14
+ end
15
+ def b(f)
16
+ puts f.active_voice_indicative_mood_present_tense_first_person_singular_number
17
+ end
18
+
19
+ # Start up the REPL
20
+ irb
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: latinirb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Steven G. Harms
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-11-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: latinverb
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.9.3
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.9.3
30
+ description: This gem takes initial data describing a LatinVerb and allows this is
31
+ be instantiated into an IRB session. Here the verb can be queried or displayed.
32
+ email:
33
+ - steven.harms@gmail.com
34
+ executables:
35
+ - latinirb
36
+ extensions: []
37
+ extra_rdoc_files: []
38
+ files:
39
+ - .gitignore
40
+ - Gemfile
41
+ - README.markdown
42
+ - Rakefile
43
+ - bin/latinirb
44
+ - latinirb.gemspec
45
+ - lib/LatinIRB.rb
46
+ - lib/latinirb/paradigmatic_verbs.rb
47
+ - lib/latinirb/version.rb
48
+ - lib/latirb.rb
49
+ homepage: http://rubygems.org/gems/latinverb
50
+ licenses: []
51
+ post_install_message:
52
+ rdoc_options: []
53
+ require_paths:
54
+ - lib
55
+ required_ruby_version: !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ! '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ requirements: []
68
+ rubyforge_project: latinverb
69
+ rubygems_version: 1.8.23
70
+ signing_key:
71
+ specification_version: 3
72
+ summary: Gem designed to explore verbs created by LatinVerb
73
+ test_files: []