meiou 0.1.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.
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: []