latinirb 0.3.4 → 0.4.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c57bbd86b3d1dd4c0c91df4d40df713380ef70be
4
+ data.tar.gz: 1a9145e1b89143f1a093bcfc4b192d6738b30e41
5
+ SHA512:
6
+ metadata.gz: bb77e235b525e3ee59ffcae5effac435b4776fb9472c3cc05974201fe997cbd80e47e611fe7d81c5e4f8e2fdeff68ca7a58752db2cdb590486db46d296e9699f
7
+ data.tar.gz: 7a9a02f0eb9634e8a94e9f8ca02501c7b86b95173fb1af94f80c44aa4113e9eb6962c2a9399a118ac963110a55f31cf80e86c2ad5aa6d40d392a8060ceb0bcd2
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- latinirb (0.3.1)
4
+ latinirb (0.3.4)
5
5
  activesupport (>= 4)
6
- latinverb (~> 0.9.4)
6
+ latinverb (~> 0.9.5)
7
7
 
8
8
  GEM
9
9
  remote: http://rubygems.org/
@@ -15,14 +15,9 @@ GEM
15
15
  thread_safe (~> 0.1)
16
16
  tzinfo (~> 0.3.37)
17
17
  atomic (1.1.14)
18
- byebug (2.2.2)
19
- columnize (~> 0.3.6)
20
- debugger-linecache (~> 1.2.0)
21
- columnize (0.3.6)
22
- debugger-linecache (1.2.0)
23
18
  i18n (0.6.5)
24
- json (1.8.1)
25
- latinverb (0.9.4)
19
+ json (1.8.0)
20
+ latinverb (0.9.5)
26
21
  activesupport
27
22
  linguistics_latin
28
23
  macronconversions
@@ -30,7 +25,7 @@ GEM
30
25
  rdoc
31
26
  linguistics_latin (0.0.1)
32
27
  macronconversions (0.0.1)
33
- minitest (4.7.5)
28
+ minitest (4.3.2)
34
29
  multi_json (1.8.2)
35
30
  rake (10.1.0)
36
31
  rdoc (4.0.1)
@@ -43,5 +38,4 @@ PLATFORMS
43
38
  ruby
44
39
 
45
40
  DEPENDENCIES
46
- byebug
47
41
  latinirb!
data/lib/LatinIRB.rb CHANGED
@@ -4,60 +4,32 @@ require 'irb'
4
4
  require 'irb/completion'
5
5
  require 'latinverb'
6
6
 
7
- # Monkey-patch to change the gets behavior. In the gem, the FileInputMethod
8
- # class's 'gets' method always prints out what was read. This should be
9
- # suppressed by the IRB class's Context class's ECHO state, but this is not
10
- # used, possibly a bug depending on what the semantics of that @echo variable
11
- # are meant to mean.
12
-
13
- module IRB
14
- class FileInputMethod < InputMethod
15
- def gets
16
- @io.gets
17
- end
18
- end
19
- end
20
-
21
7
  module Linguistics
22
8
  module Latin
23
9
  module Util
24
10
  class LatinIRB
25
11
  def self.begin
26
- #---
27
- #
28
- # This method is taken from irb.rb's IRB.start method. I trimmed
29
- # out some of the conditional possibilities that I did not want to
30
- # handle here (because they're not necessary).
31
- #
32
- # Run the basic setup script and pull the configuration object
33
- # (IRB::Context) back into the present scope. Then we set that
34
- # object's options and proceed.
35
- #
36
- #+++
12
+ configure_irb_singleton
13
+ @irb = get_irb_singleton
14
+ set_required_main_irb_context
15
+ configure_latinverb_prompt
16
+ print_prelude
37
17
 
38
- IRB.setup(nil)
39
- @CONF = IRB.conf
40
-
41
- # This will be the script IRB sources on execution. You can
42
- # pre-define variables (@aFirst, etc.) and convenience methods here.
43
-
44
- @CONF[:SCRIPT]=File.join(File.dirname(__FILE__), %w|latirb.rb|)
45
-
46
- # No, do not tell me what you read in
47
- @CONF[:ECHO]=false
48
-
49
- # Nor tell me how it evaluated
50
- @CONF[:VERBOSE]=false
51
-
52
- # We need this module
53
- @CONF[:LOAD_MODULES]=["latinverb"]
18
+ trap("SIGINT") do
19
+ irb.signal_handle
20
+ end
54
21
 
55
- # Create an irb object that is programmed to (silently, per above)
56
- # source a configuration file that ends with a call to 'irb' itself
57
- # after defining several instance variables
22
+ begin
23
+ catch(:IRB_EXIT) do
24
+ # Start the REPL
25
+ @irb.eval_input
26
+ end
27
+ end
58
28
 
59
- irb = IRB::Irb.new(nil, @CONF[:SCRIPT])
29
+ puts "Vale! Come back to LatinIRB soon."
30
+ end
60
31
 
32
+ def self.configure_latinverb_prompt
61
33
  # Create a LatinIRB prompt
62
34
  @CONF[:PROMPT][:LATINIRB] = {
63
35
  :PROMPT_I => "LatinIRB > ",
@@ -68,109 +40,52 @@ module Linguistics
68
40
  :AUTO_INDENT => true
69
41
  }
70
42
  @CONF[:PROMPT_MODE]=:LATINIRB
43
+ end
71
44
 
72
- # Unless this is set, eval_input will fail. Make sure this is
73
- # set.
74
- @CONF[:MAIN_CONTEXT] = irb.context
45
+ def self.configure_irb_singleton
46
+ IRB.setup(nil)
47
+ @CONF = IRB.conf
75
48
 
76
- # This corrects the tab-completion behavior as provided by
77
- # irb/completion.rb. In the even that what's tabbed-after matches
78
- # the RegExp, it should invoke this process. If the receiver is a
79
- # LatinVerb, the full complement of vectors should be provided as
80
- # complet-able. IF NOT, then the pairing is passed to the standard
81
- # CompletionProc.
49
+ # This will be the script IRB sources on execution. You can
50
+ # pre-define variables (@aFirst, etc.) and convenience methods here.
82
51
 
83
- Readline.completion_proc = calculate_completion_proc
52
+ @CONF[:SCRIPT]=File.join(File.dirname(__FILE__), %w|latirb.rb|)
84
53
 
85
- # We have finished the configuration at this point, so now we need
86
- # to kick up the REPL after providing preliminary instruction.
87
- puts "Beginning a LatinVerb session."
54
+ # No, do not tell me what you read in
55
+ @CONF[:ECHO]=false
88
56
 
89
- puts "The following verbs have been made available to this session:"
57
+ # Nor tell me how it evaluated
58
+ @CONF[:VERBOSE]=false
59
+ end
90
60
 
91
- # Open the file and extract the names of the variables that can be
92
- # used for autocompletion
93
- @irb_ivars =
94
- File::open(irb.context.io.file_name).readlines.grep(/^@/).map do |x|
95
- x.sub(/(@\w+)\s.*\n/, "\\1")
96
- end
97
- @irb_ivars.each{|x| puts " * #{x}\n"}
61
+ def self.get_irb_singleton
62
+ # Create an irb object that is programmed to source a configuration
63
+ # file that ends with a call to 'irb' itself after defining several
64
+ # instance variables
98
65
 
66
+ @CONF[:LOAD_MODULES]=["latinverb"]
67
+ IRB::Irb.new(nil, @CONF[:SCRIPT])
68
+ end
99
69
 
70
+ def self.print_prelude
71
+ puts "Beginning a LatinVerb session."
72
+ puts "The following verbs have been made available to this session:"
73
+ self.irb_ivars.each{|x| puts " * #{x}"}
100
74
  puts "Tab-completion of the conjugation \"vectors\" is supported."
101
-
102
- trap("SIGINT") do
103
- irb.signal_handle
104
- end
105
-
106
- begin
107
- catch(:IRB_EXIT) do
108
- # Start the REPL
109
- irb.eval_input
110
- end
111
- end
112
-
113
- puts "Vale! Come back to LatinIRB soon."
75
+ puts ""
114
76
  end
115
77
 
116
- ##
117
- #
118
- # Used to override IRB::InputCompletor::select_message for handling
119
- # tab-completion of instance variables. Code is largely taken from
120
- # that method with the addition of the /^@/ condition. In
121
- # IRB::Completor, when an array of matches has been identified, they
122
- # are sent as the "candidates" while the "receiver" bears the match
123
- # based on the regex of "message."
124
- #
125
- ##
126
-
127
- def self.select_message(receiver, message, candidates)
128
- candidates.grep(/^#{message}/).collect do |e|
129
- case e
130
- when /^[a-zA-Z_]/
131
- receiver + "." + e
132
- when /^[0-9]/
133
- when /^@/
134
- e
135
- when *Operators
136
- #receiver + " " + e
137
- end
78
+ def self.irb_ivars
79
+ File::open(@irb.context.io.file_name).readlines.grep(/^@/).map do |x|
80
+ x.sub(/(@\w+)\s.*\n/, "\\1")
138
81
  end
139
82
  end
140
83
 
141
- ##
142
- #
143
- # As part of the TAB completion, Readline must be provided a
144
- # completion proc that will be used to generate the matching results
145
- # that will be appended to the line at whose end the TAB key was
146
- # struck. This method provides that proc.
147
- #
148
- ##
149
-
150
- def self.calculate_completion_proc
151
- proc do |input|
152
- bind = IRB.conf[:MAIN_CONTEXT].workspace.binding
153
-
154
- input =~ /^([^."].*)\.([^.]*)$/
155
- begin
156
- receiver = $1
157
- message = Regexp.quote($2)
158
-
159
- # Pull the object from the binding
160
- rObj = eval("instance_variable_get(:#{receiver})", bind)
161
- rescue Exception
162
- end
163
-
164
- if rObj.class == Linguistics::Latin::Verb::LatinVerb
165
- IRB::InputCompletor::select_message(receiver, message, rObj.instance_methods.grep(/^#{message}/))
166
- elsif input =~ /^@/
167
- # This handles instance variables. input is @someInstanceVariable's @aSomeIn<TAB>
168
- self.select_message input, input, eval("instance_variables", bind).grep(/@[at]/)
169
- else
170
- IRB::InputCompletor::CompletionProc.call input
171
- end
172
- end
84
+ def self.set_required_main_irb_context
85
+ # Unless this is set, eval_input will fail.
86
+ @CONF[:MAIN_CONTEXT] = @irb.context
173
87
  end
88
+
174
89
  end
175
90
  end
176
91
  end
@@ -2,7 +2,7 @@ module Linguistics
2
2
  module Latin
3
3
  module Util
4
4
  class LatinIRB
5
- VERSION = "0.3.4" # :nodoc:
5
+ VERSION = "0.4.0"
6
6
  end
7
7
  end
8
8
  end
data/lib/latirb.rb CHANGED
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  # Basic definitions
3
2
  @aFirst = Linguistics::Latin::Verb::LatinVerb.new %q(amō amāre amāvī amatum)
4
3
  @aSecond = Linguistics::Latin::Verb::LatinVerb.new %q(moneō monēre monvī monitum)
@@ -11,12 +10,10 @@
11
10
  @toCarry = Linguistics::Latin::Verb::LatinVerb.new %q(ferō ferre tulī lātum)
12
11
  @toCome = Linguistics::Latin::Verb::LatinVerb.new %q(eō īre ivī itum)
13
12
 
14
- # It's handy to have these two methods defined here for simple tests of the
15
- # code and demonstrations.
16
-
17
13
  def j
18
14
  puts @aFirst.active_voice_indicative_mood_present_tense_first_person_singular_number
19
15
  end
16
+
20
17
  def b(f)
21
18
  puts f.active_voice_indicative_mood_present_tense_first_person_singular_number
22
19
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: latinirb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
5
- prerelease:
4
+ version: 0.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Steven G. Harms
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-10-22 00:00:00.000000000 Z
11
+ date: 2013-10-23 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: latinverb
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,17 +27,15 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: activesupport
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '4'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '4'
46
41
  description: This gem takes initial data describing a LatinVerb and allows this is
@@ -64,26 +59,25 @@ files:
64
59
  - lib/latirb.rb
65
60
  homepage: http://rubygems.org/gems/latinverb
66
61
  licenses: []
62
+ metadata: {}
67
63
  post_install_message:
68
64
  rdoc_options: []
69
65
  require_paths:
70
66
  - lib
71
67
  required_ruby_version: !ruby/object:Gem::Requirement
72
- none: false
73
68
  requirements:
74
- - - ! '>='
69
+ - - '>='
75
70
  - !ruby/object:Gem::Version
76
71
  version: '0'
77
72
  required_rubygems_version: !ruby/object:Gem::Requirement
78
- none: false
79
73
  requirements:
80
- - - ! '>='
74
+ - - '>='
81
75
  - !ruby/object:Gem::Version
82
76
  version: '0'
83
77
  requirements: []
84
78
  rubyforge_project:
85
- rubygems_version: 1.8.23
79
+ rubygems_version: 2.0.3
86
80
  signing_key:
87
- specification_version: 3
81
+ specification_version: 4
88
82
  summary: Gem designed to explore verbs created by LatinVerb
89
83
  test_files: []