annlat 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZWM2MzMyZTlkMWVkZTNlYWZlNDJhMDBhNjZjMTM2Nzg0OGYxN2I4OQ==
5
+ data.tar.gz: !binary |-
6
+ OGZiMjM5MDg3ZTMzNWExZDcyNjZjMjMyOWZkMTM4ODIyNzFmMjM0MA==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MWVlYzM0MzAyYzQ1YjkzMjQ3YTZiMThjNzFhNGY1MmUzZjY4ZmNhZGFjNmM4
10
+ N2RhOGJiNTQ5NDg5MDU4Y2UyNjk3YzI5NWY3ZDliODk3Zjk1YWVmODVkNjEx
11
+ NTc2YTA5YTFhODhjMzgwOWVjZTcwNGZmMzU1MWNmMGYyNmZjM2Y=
12
+ data.tar.gz: !binary |-
13
+ MDdjYzljZGNjMWFhNmI5ODdjYmZjNzFmOWZhNmNiZGJkYTBhNzRlMjhlMzVl
14
+ MmEzOGVkMDNkMjM0NmVkMTc0NGY0MWM5NDM1MzVmNzg4ZGIyYzFlMjNmNzZk
15
+ MzJiNDBiNTY3YTcxMTkxMjU1NzlhNjEzNjJhMDBkN2MwZTM4ZDY=
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'fileutils'
4
+ gem 'json'
5
+
6
+ # Specify your gem's dependencies in annlat.gemspec
7
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Alexander Shevtsov
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,29 @@
1
+ # Annlat
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'annlat'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install annlat
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it ( https://github.com/[my-github-username]/annlat/fork )
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create a new Pull Request
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'annlat/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "annlat"
8
+ spec.version = Annlat::VERSION
9
+ spec.authors = ["Alexander Shevtsov"]
10
+ spec.email = ["randomlogin76@gmail.com"]
11
+ spec.summary = "Learnleague gem for containg used libraries"
12
+ spec.description = ''
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.6"
22
+
23
+ end
@@ -0,0 +1,9 @@
1
+ require "annlat/version"
2
+ require 'annlat/LaRuby'
3
+ require 'annlat/Concept'
4
+ require 'annlat/Sundries'
5
+ require 'annlat/AnnLat'
6
+
7
+ module Annlat
8
+ # Your code goes here...
9
+ end
@@ -0,0 +1,235 @@
1
+ # The class AnnLat, short for AnnotatedLatex, allows a concept to create
2
+ # step-by-step solutions with text, latex, hints, more hints, and embedded prerequisite concepts.
3
+ # It also allows for the creation of questions with text, latex, hints, and suggestions.
4
+ # The communication between the engine and the concepts is faciliated by AnnLat
5
+ # by the agreement that all communication from a concept back to the engine that is intended
6
+ # to be displayed to the user is an AnnLat object.
7
+
8
+ # An instance object maintains an array of objects to be presented on the screen together
9
+ # with an array indicating the type of each object. The engine can then access both arrays
10
+ # and decide how to encode each object, and which ones to present on the screen.
11
+ require 'json'
12
+ require 'securerandom'
13
+
14
+
15
+ public
16
+ def my_json
17
+ self.to_s
18
+ end
19
+
20
+ def get_type(thing)
21
+ if thing.class.ancestors.include? Concept
22
+ :Concept
23
+ elsif thing.class.ancestors.include? Latex
24
+ :Latex
25
+ elsif thing.class.ancestors.include? AnnLat
26
+ :AnnLat
27
+ else
28
+ thing.class.to_s.to_sym
29
+ end
30
+ end
31
+
32
+ def which_types(stuff)
33
+ subtypes = []
34
+ stuff.each do |stuffoid|
35
+ subtypes.insert(-1, get_type(stuffoid))
36
+ end
37
+ subtypes
38
+ end
39
+
40
+ class AnnLat #just the scafolds, the idea is to implement this so it will support the example concepts
41
+
42
+ include Enumerable
43
+
44
+ attr_accessor :objects, :tags, :options
45
+ def initialize
46
+ @objects = []
47
+ @tags = []
48
+ @options = {}
49
+ end
50
+
51
+ def each_with_symbols
52
+ @objects.each_with_index do |x,i|
53
+ yield(@objects[i][0],@tags[i][0])
54
+ end
55
+ end
56
+
57
+ def each
58
+ @objects.each {|x| yield(x)}
59
+ end
60
+
61
+ def +(x)
62
+ out=AnnLat.new
63
+ out.objects=self.objects+x.objects
64
+ out.tags=self.tags+x.tags
65
+ out
66
+ end
67
+
68
+ def add(*stuff) # adds stuff to the @objects array, in sequential order.
69
+ arr1=[]
70
+ arr2=[]
71
+ stuff.flatten.each do |object|
72
+ case get_type(object)
73
+ when :Table
74
+ hash = {}
75
+ hash[:objects]=object.objects
76
+ hash[:types]=object.types
77
+ arr1 << hash
78
+ arr2 << :Table
79
+ #when :Image
80
+ # str = object.path
81
+ # arr1 << str
82
+ # arr2 << get_type(object)
83
+ else
84
+ arr1 << object
85
+ arr2 << get_type(object)
86
+ end
87
+
88
+ end
89
+ @objects << arr1
90
+ @tags << arr2
91
+ self
92
+ end
93
+
94
+ #hint is new AnnLat object that is passed with tag :Hint
95
+ def addHint(*stuff)
96
+ x=AnnLat.new
97
+ x.add(*stuff)
98
+ @objects << [x]
99
+ @tags << [:Hint]
100
+ self
101
+ end
102
+
103
+ def my_json
104
+ output={}
105
+ obs=[]
106
+ tags=[]
107
+ @objects.each_with_index do |array, external_index|
108
+ arr=[]
109
+ tags_arr = []
110
+ array.each_with_index do |object, index|
111
+ tag=@tags[external_index][index]
112
+ unless tag == :Hint
113
+ arr << object.my_json
114
+ tags_arr << tag
115
+ end
116
+ end
117
+ obs << arr unless arr == []
118
+ tags << tags_arr unless arr == []
119
+ end
120
+ output[:objects]=obs
121
+ output[:tags]=tags
122
+ output[:options]=@options
123
+ output
124
+ end
125
+
126
+ #returns all the hints — an array of AnnLat objects
127
+ def hints
128
+ output = []
129
+ @objects.each_with_index do |hint, index|
130
+ if @tags[index] == [:Hint]
131
+ output << hint[0]
132
+ end
133
+ end
134
+ output
135
+ end
136
+
137
+ end
138
+
139
+ class String
140
+ def my_json
141
+ self
142
+ end
143
+ end
144
+
145
+ class Latex
146
+ def my_json
147
+ latex
148
+ end
149
+ end
150
+
151
+ class Image
152
+ attr_accessor :path
153
+ attr_reader :uuid
154
+ attr_reader :options
155
+
156
+
157
+ def initialize(path, options={:dynamic => true})
158
+ @options=options
159
+ @path=path
160
+ @uuid=SecureRandom.uuid
161
+ end
162
+
163
+ def my_json
164
+ path
165
+ end
166
+
167
+ end
168
+
169
+ class Hash
170
+ def my_json
171
+ if self[:objects] and self[:types]
172
+ hash={}
173
+ hash[:objects] = self[:objects].map {|row| row.map {|cell| cell.my_json }}
174
+ hash[:types]=self[:types]
175
+ hash
176
+ end
177
+ end
178
+ end
179
+
180
+ #this class represents a table, it's just a two-dimensional array, [[a,x,f],[q]]
181
+ class Table
182
+ include Enumerable
183
+ attr_accessor :objects, :types
184
+
185
+ def my_json
186
+ t=Table.new
187
+ t.objects = self.objects.map {|row| row.map {|cell| cell.my_json }}
188
+ t.types=self.types
189
+ t
190
+ end
191
+
192
+ def initialize
193
+ @objects=[]
194
+ @types=[]
195
+ end
196
+
197
+ def each
198
+ @objects.each {|row| yield(row)}
199
+ end
200
+
201
+ alias_method :each_row, :each
202
+ end
203
+
204
+ class Array
205
+
206
+ def to_table
207
+ # raise "It must be two-dimensional array" unless self.depth==2
208
+ table=Table.new
209
+ self.each_with_index do |row,i|
210
+ table.objects[i]=row
211
+ temp=[]
212
+ row.each do |item|
213
+ temp << get_type(item)
214
+ end
215
+ table.types[i]=temp
216
+ end
217
+ table
218
+ end
219
+
220
+
221
+ #depth of an array
222
+ def depth
223
+ return 0 if self.class != Array
224
+ result = 1
225
+ self.each do |sub_a|
226
+ if sub_a.class == Array
227
+ dim = sub_a.depth
228
+ result = dim + 1 if dim + 1 > result
229
+ end
230
+ end
231
+ result
232
+ end
233
+
234
+ end
235
+
@@ -0,0 +1,39 @@
1
+ class Concept
2
+
3
+ def self.name
4
+ nil
5
+ end
6
+
7
+ def self.version
8
+ 0
9
+ end
10
+
11
+ def solve
12
+ nil
13
+ end
14
+
15
+ def validate(attempt)
16
+ attempt.to_f == solve.to_f
17
+ end
18
+
19
+ def showQuestion
20
+ nil
21
+ end
22
+
23
+ def showAnswer
24
+ nil
25
+ end
26
+
27
+ def showHow
28
+ nil
29
+ end
30
+
31
+ def self.whichConcepts
32
+ nil
33
+ end
34
+
35
+ def variants
36
+ nil
37
+ end
38
+ end
39
+
@@ -0,0 +1,288 @@
1
+ class Latex
2
+ def wrap
3
+ Wrapped.new(self)
4
+ end
5
+
6
+ def latex
7
+ ""
8
+ end
9
+
10
+ def to_ltx
11
+ self
12
+ end
13
+
14
+ alias_method :l, :to_ltx
15
+
16
+ def is(y)
17
+ LatexConsec.new(self, '=', y)
18
+ end
19
+
20
+ def ne(y)
21
+ LatexConsec.new(self, '\ne ', y)
22
+ end
23
+
24
+ def of(*args)
25
+ Func.new(self, *args)
26
+ end
27
+
28
+ def +(y)
29
+ Sum.new(self, y)
30
+ end
31
+
32
+ def -@
33
+ kind_of? Negative ? expr : Negative.new(self)
34
+ end
35
+
36
+ def -(y)
37
+ Sum.new(self, -y)
38
+ end
39
+
40
+ def *(y)
41
+ Product.new(self, y)
42
+ end
43
+
44
+ def /(y)
45
+ Frac.new(self, y)
46
+ end
47
+
48
+ def **(y)
49
+ Expon.new(self, y)
50
+ end
51
+
52
+ def glue(some_expr)
53
+ LatexConsec.new(self, some_expr)
54
+ end
55
+
56
+ end
57
+
58
+ class Func < Latex # represents @name(@args)
59
+ def initialize(some_name, *some_args)
60
+ @name = some_name.to_ltx
61
+ @args = some_args.map{|a| a.to_ltx}
62
+ end
63
+
64
+ def latex
65
+ return (@name.latex + '()') if @args.length == 0
66
+ str = @args[0].latex
67
+ @args[1..-1].each {|a| str += (',' + a.latex)}
68
+ @name.latex + '(' + str + ')'
69
+ end
70
+ end
71
+
72
+ class Wrapped < Latex # should add support for custom wrappings
73
+ def initialize(some_expr)
74
+ @wrapee = some_expr.to_ltx
75
+ end
76
+
77
+ def unwrap
78
+ @wrapee
79
+ end
80
+
81
+ def latex
82
+ '(' + @wrapee.latex + ')'
83
+ end
84
+ end
85
+
86
+ class Negative < Latex # represents -@expr
87
+ attr_reader :expr
88
+ def initialize(some_expr)
89
+ @expr = some_expr.to_ltx
90
+ (@expr = @expr.wrap) if (@expr.kind_of?(Sum))
91
+ end
92
+
93
+ def latex
94
+ '-' + @expr.latex
95
+ end
96
+ end
97
+
98
+ class Atom < Latex
99
+ def initialize(some_expr)
100
+ @expr = some_expr.to_s
101
+ end
102
+
103
+ def latex
104
+ @expr
105
+ end
106
+ end
107
+
108
+ class LatexConsec < Latex
109
+ def initialize(*some_parts)
110
+ @parts = some_parts.map{|i| i.to_ltx}
111
+ end
112
+
113
+ def latex
114
+ @parts.map{|i| i.latex}.join
115
+ end
116
+ end
117
+
118
+ class BinOpe < Latex
119
+ attr_reader :args
120
+ attr_reader :oper
121
+
122
+ def initialize(some_oper, *some_args)
123
+ @oper = some_oper.to_ltx
124
+ some_args.map!(&:to_ltx)
125
+ first = some_args[0]
126
+ rest = some_args[1..-1].map {|a| (a.kind_of?(BinOpe) and a.args[0].kind_of?(Negative)) ? a.wrap : a }
127
+ @args = [first] + rest
128
+ end
129
+
130
+ def latex
131
+ @args.map{|a| a.latex}.join(@oper.latex)
132
+ end
133
+ end
134
+
135
+ class AssocBinOpe < BinOpe
136
+ def initialize(some_oper, *some_args)
137
+ super(some_oper, *(some_args.map{|a| (a.kind_of?(AssocBinOpe) and (a.oper == @oper))? a.args : a}.flatten))
138
+ end
139
+
140
+ def latex()
141
+ @args.map{|i| i.latex}.join(@oper.latex)
142
+ end
143
+ end
144
+
145
+ class Product < AssocBinOpe
146
+ def initialize(*some_factors)
147
+ super(Times, *some_factors)
148
+ @args.map!{|a| (a.kind_of?(Negative) or a.kind_of?(Sum))? a.wrap : a}
149
+ end
150
+ end
151
+
152
+ class Sum < Latex
153
+ def initialize(*some_summands)
154
+ @summands = some_summands.map(&:to_ltx)
155
+ end
156
+
157
+ def latex
158
+ str = @summands[0].latex
159
+ @summands[1..-1].each{|a| a.kind_of?(Negative) ? str += (a.latex) : str += ('+' + a.latex)}
160
+ str
161
+ end
162
+ end
163
+
164
+ class Frac < Latex
165
+ def initialize(some_numer, some_denom)
166
+ @numer = some_numer.to_ltx
167
+ @denom = some_denom.to_ltx
168
+ end
169
+
170
+ def latex
171
+ '\frac{' + @numer.latex + '}{' + @denom.latex + '}'
172
+ end
173
+ end
174
+
175
+ class Expon < Latex
176
+ def initialize(some_base, some_exp)
177
+ @base = some_base.to_ltx
178
+ @exp = some_exp.to_ltx
179
+ end
180
+
181
+ def latex
182
+ the_base = @base.wrap if (@base.kind_of?(Expon) or @base.kind_of?(Negative) or @base.kind_of?(BinOpe))
183
+ the_base.latex + '^{' + @exp.latex + '}'
184
+ end
185
+ end
186
+
187
+ class Fixnum
188
+ def to_ltx
189
+ (self >= 0) ? Atom.new(self) : -(Atom.new(-self))
190
+ end
191
+
192
+ alias_method :l, :to_ltx
193
+ end
194
+
195
+ class Float
196
+ def to_ltx
197
+ (self >= 0) ? Atom.new(self) : -(Atom.new(-self))
198
+ end
199
+
200
+ alias_method :l, :to_ltx
201
+ end
202
+
203
+ class String
204
+ def to_ltx
205
+ Atom.new(self)
206
+ end
207
+
208
+ alias_method :l, :to_ltx
209
+ end
210
+
211
+ class LatexList < Atom
212
+ def initialize(arr)
213
+ @list = arr
214
+ end
215
+
216
+ def latex
217
+ "(" + @list.join(", ") + ")"
218
+ end
219
+ end
220
+
221
+ class Array
222
+ def to_ltx
223
+ a = map{ |obj| obj.to_ltx.latex }
224
+ LatexList.new(a)
225
+ end
226
+ end
227
+
228
+ class LatexSet < Atom
229
+ def initialize(s)
230
+ @set = s.to_a
231
+ end
232
+
233
+ def latex
234
+ "{" + @set.join(", ") + "}"
235
+ end
236
+ end
237
+
238
+ class Set
239
+ def to_ltx
240
+ s = map{ |obj| obj.to_ltx.latex }
241
+ LatexSet.new(s)
242
+ end
243
+ end
244
+
245
+
246
+ Plus = Atom.new('+')
247
+ Times = Atom.new('\cdot ')
248
+ Minus = Atom.new('-')
249
+
250
+ # Greek alphabet
251
+ def alpha() Atom.new('\alpha ') end
252
+ def beta() Atom.new('\beta ') end
253
+ def gamma() Atom.new('\gamma ') end
254
+ def delta() Atom.new('\delta ') end
255
+ def epsilon() Atom.new('\epsilon ') end
256
+ def varepsilon() Atom.new('\varepsilon ') end
257
+ def zeta() Atom.new('\zeta ') end
258
+ def eta() Atom.new('\eta ') end
259
+ def theta() Atom.new('\theta ') end
260
+ def vartheta() Atom.new('\vartheta ') end
261
+ def kappa() Atom.new('\kappa ') end
262
+ def mu() Atom.new('\mu ') end
263
+ def nu() Atom.new('\nu ') end
264
+ def xi() Atom.new('\xi ') end
265
+ def pi() Atom.new('\pi ') end
266
+ def varpi() Atom.new('\varpi ') end
267
+ def rho() Atom.new('\rho ') end
268
+ def varrho() Atom.new('\varrho ') end
269
+ def sigma() Atom.new('\sigma ') end
270
+ def varsigma() Atom.new('\varsigma ') end
271
+ def tau() Atom.new('\tau ') end
272
+ def upsilon() Atom.new('\upsilon ') end
273
+ def phi() Atom.new('\phi ') end
274
+ def varphi() Atom.new('\varphi ') end
275
+ def chi() Atom.new('\chi ') end
276
+ def psi() Atom.new('\psi ') end
277
+ def omega() Atom.new('\omega ') end
278
+ def cGamma() Atom.new('\Gamma ') end
279
+ def cDelta() Atom.new('\Delta ') end
280
+ def cTheta() Atom.new('\Theta ') end
281
+ def cLambda() Atom.new('\Lmabda ') end
282
+ def cXi() Atom.new('\Xi ') end
283
+ def cPi() Atom.new('\Pi ') end
284
+ def cSigma() Atom.new('\Sigma ') end
285
+ def cUpsilon() Atom.new('\Upsilon ') end
286
+ def cPhi() Atom.new('\Phi ') end
287
+ def cPsi() Atom.new('\Psi ') end
288
+ def cOmega() Atom.new('\Omega ') end
@@ -0,0 +1,72 @@
1
+ def final?
2
+ instance_methods(false).include? :showHow
3
+ end
4
+
5
+ public :final?
6
+
7
+ class Fixnum
8
+ def prettify
9
+ self
10
+ end
11
+ end
12
+
13
+ class Float
14
+ def prettify
15
+ to_i == self ? to_i : self
16
+ end
17
+ end
18
+
19
+ class Rational
20
+ def prettify
21
+ if self.denominator==1
22
+ self.numerator
23
+ else
24
+ self
25
+ end
26
+ end
27
+ end
28
+
29
+ class Concept
30
+
31
+ attr_accessor :images
32
+ attr_accessor :uuid
33
+
34
+
35
+ def move_image(img)
36
+ uuid=img.uuid
37
+ path=img.path
38
+ if !img.options[:dynamic]
39
+ begin
40
+ FileUtils.mv("engine/concepts/#{path}", "public/images/#{self.class}/static/#{path}")
41
+ rescue Errno::ENOENT
42
+ end
43
+ img.path = "#{self.class}/static/#{path}"
44
+ else
45
+ img.path= "#{self.class}/#{uuid}"
46
+ FileUtils.mv("#{path}", "public/images/#{self.class}/#{uuid}")
47
+ end
48
+ img
49
+ end
50
+
51
+ def move_images
52
+ concept=self
53
+ @images=[] if @images.nil?
54
+ begin
55
+ Dir.mkdir("public/images/#{self.class}")
56
+ rescue Errno::EEXIST
57
+ end
58
+ begin
59
+ Dir.mkdir("public/images/#{self.class}/static")
60
+ rescue Errno::EEXIST
61
+ end
62
+ @images.map {|x| move_image(x)}
63
+ end
64
+
65
+ def addImage(img)
66
+ @images=[] if @images.nil?
67
+ raise "You tried to add not an image" if img.class!=Image
68
+ @images << img
69
+ end
70
+
71
+
72
+ end
@@ -0,0 +1,3 @@
1
+ module Annlat
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: annlat
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Alexander Shevtsov
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ description: ''
28
+ email:
29
+ - randomlogin76@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - .gitignore
35
+ - Gemfile
36
+ - LICENSE.txt
37
+ - README.md
38
+ - Rakefile
39
+ - annlat.gemspec
40
+ - lib/annlat.rb
41
+ - lib/annlat/AnnLat.rb
42
+ - lib/annlat/Concept.rb
43
+ - lib/annlat/LaRuby.rb
44
+ - lib/annlat/Sundries.rb
45
+ - lib/annlat/version.rb
46
+ homepage: ''
47
+ licenses:
48
+ - MIT
49
+ metadata: {}
50
+ post_install_message:
51
+ rdoc_options: []
52
+ require_paths:
53
+ - lib
54
+ required_ruby_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ! '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ required_rubygems_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ requirements: []
65
+ rubyforge_project:
66
+ rubygems_version: 2.2.2
67
+ signing_key:
68
+ specification_version: 4
69
+ summary: Learnleague gem for containg used libraries
70
+ test_files: []