meiou 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +5 -0
  3. data/CODE_OF_CONDUCT.md +84 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.md +39 -0
  6. data/Rakefile +4 -0
  7. data/_books/Anarchism.txt +6913 -0
  8. data/_books/Applied_Psychology_for_Nurses.txt +3743 -0
  9. data/_books/Common_Sense.txt +2659 -0
  10. data/_books/Considerations_on_Representative_Government.txt +9296 -0
  11. data/_books/Crystallizing_Public_Opinion.txt +5236 -0
  12. data/_books/Doctor_and_Patient.txt +3261 -0
  13. data/_books/Increasing_Human_Efficiency_in_Business.txt +8868 -0
  14. data/_books/Marriage_and_Love.txt +325 -0
  15. data/_books/Mutual_Aid.txt +9579 -0
  16. data/_books/Natural_Faculties.txt +12688 -0
  17. data/_books/Other_People's_Money.txt +5362 -0
  18. data/_books/Philosophy_of_Misery.txt +16700 -0
  19. data/_books/Playwrights_on_Playmaking.txt +7059 -0
  20. data/_books/Principles_of_Scientific_Management.txt +3978 -0
  21. data/_books/Psychology_of_Management.txt +11072 -0
  22. data/_books/Psychopathology_of_Everyday_Life.txt +8193 -0
  23. data/_books/Roman_Farm_Management.txt +6757 -0
  24. data/_books/Sexual_Neuroses.txt +3198 -0
  25. data/_books/Social_Organization.txt +13282 -0
  26. data/_books/Three_Contributions_to_the_Theory_of_Sex.txt +5596 -0
  27. data/_books/interpretation_of_dreams.txt +22183 -0
  28. data/_books/principals_of_political_economy.txt +20610 -0
  29. data/_books/the_Social_Contract.txt +10325 -0
  30. data/_books/the_individual_in_society.txt +1060 -0
  31. data/_books/the_prince.txt +5181 -0
  32. data/books/Anarchism.txt +6913 -0
  33. data/books/Applied_Psychology_for_Nurses.txt +3743 -0
  34. data/books/Crystallizing_Public_Opinion.txt +5236 -0
  35. data/books/Doctor_and_Patient.txt +3261 -0
  36. data/books/Increasing_Human_Efficiency_in_Business.txt +8868 -0
  37. data/books/Roman_Farm_Management.txt +6757 -0
  38. data/books/Social_Organization.txt +13282 -0
  39. data/books/interpretation_of_dreams.txt +22183 -0
  40. data/books/the_prince.txt +5181 -0
  41. data/lib/meiou/book.rb +189 -0
  42. data/lib/meiou/dictionary.rb +51 -0
  43. data/lib/meiou/mood.rb +29 -0
  44. data/lib/meiou/version.rb +5 -0
  45. data/lib/meiou/wiki.rb +114 -0
  46. data/lib/meiou/word.rb +35 -0
  47. data/lib/meiou.rb +43 -0
  48. data/meiou.gemspec +41 -0
  49. data/sig/meiou.rbs +4 -0
  50. metadata +165 -0
data/lib/meiou/book.rb ADDED
@@ -0,0 +1,189 @@
1
+
2
+ module BOOK
3
+ @@IGNORE = 6
4
+ @@TINY = 12
5
+ @@SMALL = 30
6
+ @@MED = 50
7
+ @@LARGE = 120
8
+ def self.size
9
+ [ @@IGNORE, @@TINY, @@SMALL, @@MED, @@LARGE ]
10
+ end
11
+ def self.sizes
12
+ [ :tiny, :info, :short, :med, :long ]
13
+ end
14
+ def self.size? w
15
+ if w.length > BOOK.size[0] && w.length <= BOOK.size[1]
16
+ s = :tiny
17
+ elsif w.length > BOOK.size[1] && w.length <= BOOK.size[2]
18
+ s = :info
19
+ elsif w.length > BOOK.size[2] && w.length <= BOOK.size[3]
20
+ s = :short
21
+ elsif w.length > BOOK.size[3] && w.length <= BOOK.size[4]
22
+ s = :med
23
+ elsif w.length > BOOK.size[4]
24
+ s = :long
25
+ end
26
+ return s
27
+ end
28
+ @@BOOK = Hash.new { |h,k| h[k] = Book.new(k) }
29
+ class Book
30
+ def initialize k
31
+ @id = k
32
+ @ind = PStore.new("db/book-#{k}.pstore") # index sizes
33
+ @sec = PStore.new("db/book-sec-#{k}.pstore") # sections
34
+ @top = PStore.new("db/book-top-#{k}.pstore") # topics
35
+ @tag = PStore.new("db/book-tag-#{k}.pstore") # tags
36
+ @mod = PStore.new("db/book-mod-#{k}.pstore") # moods
37
+ @bin = Hash.new { |h,k| h[k] = PStore.new("db/book-#{@id}-#{k}.pstore") } # sorted bins
38
+ end
39
+
40
+ def id; @id; end
41
+
42
+ def load f
43
+ c = File.read(f)
44
+ c.gsub(/\r\n/,"\n").gsub(/\n\n+/,"\n\n").split("\n\n").each_with_index do |e,i|
45
+ x = e.gsub(/\n/," ").gsub(/\s+/," ").strip;
46
+ if !/Project Gutenberg/.match(x)
47
+ if !/^[[[:upper:]]|[[:blank:]]|[[:punct:]]|[[:digit:]]]*$/.match(x)
48
+ s = BOOK.size?(x.split(/\s/))
49
+ @bin[s].transaction { |db| db[i] = x }
50
+ @ind.transaction { |db| db[i] = s }
51
+ @mod.transaction { |db| db[i] = MOOD[x] }
52
+ if s == :info
53
+ Meiou.extract(x) { |e| @tag.transaction { |db| if !db.key?(e[:word]); db[e[:word]] = []; end; db[e[:word]] << i; } }
54
+ end
55
+ else
56
+ if !/GUTENBERG/.match(x)
57
+ puts %[#{@id}>#{i}: #{x}]
58
+ @sec.transaction { |db| db[i] = x }
59
+ @top.transaction { |db| db[x] = i }
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+
66
+ def [] k
67
+ n = @ind.transaction { |db| db[k] }
68
+ @bin[n].transaction { |db| db[k] }
69
+ end
70
+ def mood k
71
+ @mod.transaction { |db| db[k] }
72
+ end
73
+ def tag k
74
+ @tag.transaction { |db| db[k] }
75
+ end
76
+ def tags
77
+ @tag.transaction { |db| db.keys }
78
+ end
79
+ def topic k
80
+ @top.transaction { |db| db[k] }
81
+ end
82
+ def topics
83
+ h = {}
84
+ @top.transaction { |db| db.keys.each { |e| h[e] = db[e] } }
85
+ return h
86
+ end
87
+
88
+ def section k
89
+ @sec.transaction { |db| db[k] }
90
+ end
91
+
92
+ def sections
93
+ h = {}
94
+ @sec.transaction { |db| db.keys.each { |e| h[e] = db[e] } }
95
+ return h
96
+ end
97
+
98
+ def filter s, k
99
+ a = []
100
+ @bin[s].transaction { |db| db.keys.map { |e| if Regexp.new(k).match(db[e]); a << e end } }
101
+ return a
102
+ end
103
+
104
+ def each k, &b
105
+ @bin[k].transaction { |db| db.keys.map { |e| b.call(db[e]) } }
106
+ return nil
107
+ end
108
+ end
109
+
110
+ def self.[] k
111
+ @@BOOK[k]
112
+ end
113
+
114
+ def self.keys
115
+ @@BOOK.keys
116
+ end
117
+
118
+ def self.topic k
119
+ h = {}
120
+ @@BOOK.keys.map { |e| h[e] = @@BOOK[e].topic(k) }
121
+ return h
122
+ end
123
+
124
+ def self.topics
125
+ h = {}
126
+ @@BOOK.keys.map { |e| h[e] = @@BOOK[e].topics }
127
+ return h
128
+ end
129
+
130
+ def self.section k
131
+ h = {}
132
+ @@BOOK.keys.map { |e| h[e] = @@BOOK[e].section(k) }
133
+ return h
134
+ end
135
+
136
+ def self.tag k
137
+ h = {}
138
+ @@BOOK.keys.map { |e| h[e] = @@BOOK[e].tag(k) }
139
+ return h
140
+ end
141
+
142
+ def self.tags
143
+ h = {}
144
+ @@BOOK.keys.map { |e| h[e] = @@BOOK[e].tags }
145
+ return h
146
+ end
147
+
148
+ def self.sections
149
+ h = {}
150
+ @@BOOK.keys.map { |e| h[e] = @@BOOK[e].sections }
151
+ return h
152
+ end
153
+
154
+ def self.find k, *t, &b
155
+ @@BOOK.keys.map { |kk| [t, :tiny].uniq.flatten.each { |s| book = @@BOOK[kk]; book.filter(s,k).each { |e| b.call({ book: kk, index: e, mood: book.mood(e), text: book[e] }); } } }
156
+ return nil
157
+ end
158
+
159
+ # Get +num+ number of "opinions" of +word+ based on compiled +BOOK.tag(word)+ keywords and pass it to block
160
+ def self.word word, *num, &block
161
+ a = []
162
+ BOOK.tag(word).each_pair { |k,v| if v != nil; v.sample(num[0] || 3).compact.uniq.shuffle.each { |e| a << { book: k, index: e, mood: BOOK[k].mood(e), text: BOOK[k][e] } }; end }
163
+ a.flatten.sample(num[1] || num[0] || 3).compact.uniq.shuffle.each { |e| block.call(e) }
164
+ return nil
165
+ end
166
+
167
+ def self.init!
168
+ Dir['books/*'].each { |e|
169
+ k = e.gsub("books/", "").gsub(".txt", "").gsub("_", " ");
170
+ puts %[Scanning #{k}...]
171
+ @@BOOK[k]
172
+ }
173
+ puts %[Books scanned!]
174
+ return "DONE!"
175
+ end
176
+
177
+ def self.compile!
178
+ Dir['books/*'].each { |e|
179
+ k = e.gsub("books/", "").gsub(".txt", "").gsub("_", " ");
180
+ puts %[Compiling #{k}...]
181
+ @@BOOK[k].load(e)
182
+ }
183
+ puts %[Books compiled!]
184
+ return "DONE!"
185
+ end
186
+ end
187
+
188
+ Meiou.compile(:book) { |h| BOOK.compile! }
189
+ Meiou.init(:book) { |h| BOOK.init! }
@@ -0,0 +1,51 @@
1
+ require 'tokenizer'
2
+
3
+ module DICT
4
+ # extract a list of tokens from +payload+ and handle with block passing +index+ and +WORD[word]+.
5
+ def self.[] payload, &block
6
+ Tokenizer::WhitespaceTokenizer.new().tokenize(payload).each do |e|
7
+ d = Meiou.word[e]
8
+ if d != nil
9
+ if "#{e}".length > 2 && !/[[:punct:]]/.match(e) && !['the','and','but','this','that'].include?(e.downcase) && d != false
10
+ #puts %[Meiou | #{e} | #{d[:pos].sample} | #{d[:def].sample}]
11
+ block.call(d)
12
+ end
13
+ end
14
+ end
15
+ return nil
16
+ end
17
+
18
+ def self.know input, h={}
19
+ a = []
20
+ DICT[input] { |w|
21
+ if h[:define] == true
22
+ a << %[#{w[:word].capitalize} means #{w[:def].sample}.];
23
+ end
24
+ BOOK.word(w[:word]) { |r|
25
+ if h[:cite] == true
26
+ a << %[[#{r[:book]}:#{r[:index]}:#{w[:word]}] #{r[:text]}]
27
+ else
28
+ if h[:example] == true
29
+ a << %[#{r[:text]}]
30
+ end
31
+ end
32
+ }
33
+ }
34
+ return a
35
+ end
36
+ end
37
+
38
+ module Meiou
39
+ def self.[] k
40
+ DICT.know(k, define: true, example: true)
41
+ end
42
+ def self.define k
43
+ DICT.know(k, define: true)
44
+ end
45
+ def self.example k
46
+ DICT.know(k, example: true)
47
+ end
48
+ def self.cite k
49
+ DICT.know(k, cite: true)
50
+ end
51
+ end
data/lib/meiou/mood.rb ADDED
@@ -0,0 +1,29 @@
1
+ require 'textmood'
2
+
3
+ module MOOD
4
+ @@MOOD = PStore.new("db/moods.pstore")
5
+ def self.[] k
6
+ @@MOOD.transaction { |db| db[k] }
7
+ end
8
+ def self.keys
9
+ @@MOOD.transaction { |db| db.keys }
10
+ end
11
+ def self.incr k, n
12
+ @@MOOD.transaction { |db| x = db[k].to_f; db[k] = x + n[0] || 1 }
13
+ end
14
+ def self.decr k, *n
15
+ @@MOOD.transaction { |db| x = db[k].to_f; db[k] = x + n[0] || 1 }
16
+ end
17
+ def self.update k, s
18
+ MOOD.incr(k, MOOD[s])
19
+ end
20
+ def self.[] p
21
+ TextMood.new(language: "en", ternary_output: true, start_ngram: 1, end_ngram: 4).analyze(p).to_f
22
+ end
23
+ end
24
+
25
+ module Meiou
26
+ def self.mood
27
+ MOOD
28
+ end
29
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Meiou
4
+ VERSION = "0.1.0"
5
+ end
data/lib/meiou/wiki.rb ADDED
@@ -0,0 +1,114 @@
1
+ require 'wikipedia-client'
2
+
3
+ module WIKIPEDIA
4
+ @@INFO = Hash.new do |h,k|
5
+ if x = Wikipedia.find(k.to_s).summary
6
+ h[k] = x.gsub(/\n+/,"\n").split("\n")
7
+ else
8
+ h[k] = false
9
+ end
10
+ end
11
+ def self.[] k
12
+ @@INFO[k]
13
+ end
14
+ def self.keys
15
+ @@INFO.keys
16
+ end
17
+ def self.to_h
18
+ @@INFO
19
+ end
20
+ end
21
+
22
+ module WIKI
23
+
24
+ @@GPS = Hash.new { |h,k| h[k] = Gps.new(k) }
25
+ class Gps
26
+ def initialize k
27
+ @id = k
28
+ @x = PStore.new("db/gps-#{k}.pstore")
29
+ end
30
+ def [] k
31
+ @x.transaction { |db| db[k] }
32
+ end
33
+ def []= k,v
34
+ @x.transaction { |db| db[k] = v }
35
+ end
36
+ def id; @id; end
37
+ end
38
+
39
+ def self.gps
40
+ @@GPS
41
+ end
42
+
43
+ @@W = Hash.new { |h,k| h[k] = W.new(k) }
44
+ class W
45
+ def initialize k
46
+ @id = k
47
+ @x = PStore.new("db/w-#{k}.pstore")
48
+ end
49
+ def [] k
50
+ @x.transaction { |db| db[k] }
51
+ end
52
+ def []= k,v
53
+ @x.transaction { |db| db[k] = v }
54
+ end
55
+ def id; @id; end
56
+
57
+ end
58
+
59
+
60
+ @@WIKI = Hash.new do |h,k|
61
+ a, x = [], @@W[k.to_s]
62
+ if x[:text] == nil
63
+ s = Wikipedia.find(k.to_s)
64
+ if s != nil
65
+ %[#{s.summary}].split("\n").each { |e|
66
+ if !/^=+/.match(e)
67
+ a << %[#{e}]
68
+ end
69
+ }
70
+ aa = []; a.join("\n").split(/\n+/).each { |e| aa << e.gsub('"',"'").gsub(/\s+/," ").strip }
71
+ x[:text] = aa.join("\n\n")
72
+ x[:url] = s.fullurl
73
+ x[:edit] = s.editurl
74
+ cc, c = [], [];
75
+ [s.categories].flatten.each { |e| if e != nil; cc << e.gsub("Category:",""); end }
76
+ cc.each { |e|
77
+ if !/^All articles/.match(e) && !/^Articles/.match(e) && !/^Coordinates on/.match(e) && !/^Short description is/.match(e)
78
+ c << e
79
+ end
80
+ }
81
+ x[:categories] = c.join("\n\n")
82
+
83
+ x[:google] = "https://www.google.com/search?q=#{k.gsub(" ","+")}"
84
+
85
+ x[:map] = "https://www.google.com/maps/place/#{k.gsub(" ","+")}"
86
+
87
+ xx = s.coordinates
88
+
89
+ if xx != nil
90
+ x[:lat] = xx[0]
91
+ x[:lon] = xx[1]
92
+ g = @@GPS[k.to_s]
93
+ g[:lat] = xx[0]
94
+ g[:lon] = xx[1]
95
+ g[:map] = x[:map]
96
+ g[:google] = x[:google]
97
+ g[:edit] = x[:edit]
98
+ g[:url] = x[:url]
99
+ g[:text] = x[:text]
100
+ end
101
+ end
102
+ h[k] = x
103
+ end
104
+ end
105
+ def self.[] k
106
+ @@WIKI[k]
107
+ end
108
+ def self.keys
109
+ @@WIKI.keys
110
+ end
111
+ def self.to_h
112
+ @@WIKI
113
+ end
114
+ end
data/lib/meiou/word.rb ADDED
@@ -0,0 +1,35 @@
1
+ require 'rwordnet'
2
+
3
+ module WORD
4
+ @@WORD = Hash.new { |h,k| if !h.has_key?(k); w = WORD.term(k); if w != false; h[k] = w; end; end }
5
+ # find +word+.
6
+ def self.term word
7
+ ds, df = [], []
8
+ WordNet::Lemma.find_all(word).each { |e| ds << e.pos; e.synsets.each { |ee| df << ee.gloss.gsub('"', "").gsub("--", " ").split("; ")[0] } }
9
+ #if ds.include?('n') && !ds.include?('v')
10
+ if ds.length > 0
11
+ return { word: word, pos: ds, def: df }
12
+ else
13
+ return false
14
+ end
15
+ end
16
+
17
+ # +word+
18
+ def self.[] word
19
+ @@WORD[word]
20
+ end
21
+
22
+ # +words+
23
+ def self.keys
24
+ @@WORD.keys
25
+ end
26
+ end
27
+
28
+ module Meiou
29
+ def self.word
30
+ WORD
31
+ end
32
+ def self.words
33
+ WORD.keys
34
+ end
35
+ end
data/lib/meiou.rb ADDED
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pstore'
4
+
5
+ module Meiou
6
+ TRAMPSTAMP = '[MEIOU]'
7
+ class Error < StandardError; end
8
+ @@COMP = {}
9
+ @@INIT = {}
10
+ @@CONF = {}
11
+ def self.conf
12
+ @@CONF
13
+ end
14
+ def self.compile n, &b
15
+ @@COMP[n] = b
16
+ end
17
+ def self.compile!
18
+ @@COMP.each_pair { |n,b| Meiou.log(n,%[#{b.call(@@CONF[n])}]) }
19
+ end
20
+ def self.init n, &b
21
+ @@INIT[n] = b
22
+ end
23
+ def self.init!
24
+ @@INIT.each_pair { |n,b| Meiou.log(n,%[#{b.call(@@CONF[n])}]) }
25
+ end
26
+ def self.log n, s
27
+ puts %[#{TRAMPSTAMP}[#{n}] #{s}]
28
+ end
29
+ end
30
+
31
+ require_relative "meiou/version"
32
+
33
+ require_relative "meiou/wiki"
34
+
35
+ require_relative "meiou/dictionary"
36
+
37
+ require_relative "meiou/word"
38
+
39
+ require_relative "meiou/book"
40
+
41
+ require_relative "meiou/mood"
42
+
43
+ Meiou.init!
data/meiou.gemspec ADDED
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/meiou/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "meiou"
7
+ spec.version = Meiou::VERSION
8
+ spec.authors = ["Erik Olson"]
9
+ spec.email = ["xorgnak@gmail.com"]
10
+
11
+ spec.summary = "A way of gathering knowledge."
12
+ spec.description = "A wrapper for for wikipedia entries, curated txt files, and other sources of knowledge."
13
+ spec.homepage = "https://github.com/xorgnak/meiou"
14
+ spec.license = "MIT"
15
+ spec.required_ruby_version = ">= 2.6.0"
16
+
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = spec.homepage
19
+ spec.metadata["changelog_uri"] = spec.homepage
20
+
21
+ # Specify which files should be added to the gem when it is released.
22
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
+ spec.files = Dir.chdir(__dir__) do
24
+ `git ls-files -z`.split("\x0").reject do |f|
25
+ (File.expand_path(f) == __FILE__) ||
26
+ f.start_with?(*%w[bin/ test/ spec/ features/ .git appveyor Gemfile])
27
+ end
28
+ end
29
+ spec.bindir = "exe"
30
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
31
+ spec.require_paths = ["lib"]
32
+
33
+ # Uncomment to register a new dependency of your gem
34
+ spec.add_dependency "wikipedia-client"
35
+ spec.add_dependency "pstore"
36
+ spec.add_dependency "rwordnet"
37
+ spec.add_dependency "tokenizer"
38
+ spec.add_dependency "textmood"
39
+ # For more information and examples about making a new gem, check out our
40
+ # guide at: https://bundler.io/guides/creating_gem.html
41
+ end
data/sig/meiou.rbs ADDED
@@ -0,0 +1,4 @@
1
+ module Meiou
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
metadata ADDED
@@ -0,0 +1,165 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: meiou
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Erik Olson
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2024-03-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: wikipedia-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pstore
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rwordnet
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: tokenizer
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: textmood
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: A wrapper for for wikipedia entries, curated txt files, and other sources
84
+ of knowledge.
85
+ email:
86
+ - xorgnak@gmail.com
87
+ executables: []
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - CHANGELOG.md
92
+ - CODE_OF_CONDUCT.md
93
+ - LICENSE.txt
94
+ - README.md
95
+ - Rakefile
96
+ - _books/Anarchism.txt
97
+ - _books/Applied_Psychology_for_Nurses.txt
98
+ - _books/Common_Sense.txt
99
+ - _books/Considerations_on_Representative_Government.txt
100
+ - _books/Crystallizing_Public_Opinion.txt
101
+ - _books/Doctor_and_Patient.txt
102
+ - _books/Increasing_Human_Efficiency_in_Business.txt
103
+ - _books/Marriage_and_Love.txt
104
+ - _books/Mutual_Aid.txt
105
+ - _books/Natural_Faculties.txt
106
+ - _books/Other_People's_Money.txt
107
+ - _books/Philosophy_of_Misery.txt
108
+ - _books/Playwrights_on_Playmaking.txt
109
+ - _books/Principles_of_Scientific_Management.txt
110
+ - _books/Psychology_of_Management.txt
111
+ - _books/Psychopathology_of_Everyday_Life.txt
112
+ - _books/Roman_Farm_Management.txt
113
+ - _books/Sexual_Neuroses.txt
114
+ - _books/Social_Organization.txt
115
+ - _books/Three_Contributions_to_the_Theory_of_Sex.txt
116
+ - _books/interpretation_of_dreams.txt
117
+ - _books/principals_of_political_economy.txt
118
+ - _books/the_Social_Contract.txt
119
+ - _books/the_individual_in_society.txt
120
+ - _books/the_prince.txt
121
+ - books/Anarchism.txt
122
+ - books/Applied_Psychology_for_Nurses.txt
123
+ - books/Crystallizing_Public_Opinion.txt
124
+ - books/Doctor_and_Patient.txt
125
+ - books/Increasing_Human_Efficiency_in_Business.txt
126
+ - books/Roman_Farm_Management.txt
127
+ - books/Social_Organization.txt
128
+ - books/interpretation_of_dreams.txt
129
+ - books/the_prince.txt
130
+ - lib/meiou.rb
131
+ - lib/meiou/book.rb
132
+ - lib/meiou/dictionary.rb
133
+ - lib/meiou/mood.rb
134
+ - lib/meiou/version.rb
135
+ - lib/meiou/wiki.rb
136
+ - lib/meiou/word.rb
137
+ - meiou.gemspec
138
+ - sig/meiou.rbs
139
+ homepage: https://github.com/xorgnak/meiou
140
+ licenses:
141
+ - MIT
142
+ metadata:
143
+ homepage_uri: https://github.com/xorgnak/meiou
144
+ source_code_uri: https://github.com/xorgnak/meiou
145
+ changelog_uri: https://github.com/xorgnak/meiou
146
+ post_install_message:
147
+ rdoc_options: []
148
+ require_paths:
149
+ - lib
150
+ required_ruby_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: 2.6.0
155
+ required_rubygems_version: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ requirements: []
161
+ rubygems_version: 3.3.15
162
+ signing_key:
163
+ specification_version: 4
164
+ summary: A way of gathering knowledge.
165
+ test_files: []