research_topicgen 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/data/{crypto_data.yml → crypto.yml} +0 -0
- data/lib/data/{cs_data.yml → cs.yml} +0 -0
- data/lib/data/{system_data.yml → system.yml} +0 -0
- data/lib/research_topicgen.rb +124 -98
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 654292e2322811e50513736473f49eaf74006d21
|
4
|
+
data.tar.gz: 51f2a4ea238e8c94f71ebd8b9d0724bce7b8ff16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74c779957016325da464929f22b149fa3eb14fe87a4ae6e5ab03fedfa1bd1bbccdfc39aa4d7004373231dba8cf9a1e416e8f40a9991bb18dafd77e5c5cebc9a4
|
7
|
+
data.tar.gz: c2176872c561085c96fc37c6a9b165e47bcc4d356be4ebb78aaf02e4b9d34c62ec500603d31996690c99e32d0383c4da126236f7c9b506573246fda6b6b57a2d
|
File without changes
|
File without changes
|
File without changes
|
data/lib/research_topicgen.rb
CHANGED
@@ -1,123 +1,149 @@
|
|
1
1
|
require 'psych'
|
2
2
|
|
3
3
|
module ResearchTopicGen
|
4
|
-
VERSION = '0.1.
|
4
|
+
VERSION = '0.1.6'.freeze
|
5
|
+
BZS = %i[buzz1 buzz2 buzz3]
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
when 'cs'
|
13
|
-
[load_yml_data('connectives'), load_yml_data('cs_data')]
|
14
|
-
when 'system'
|
15
|
-
[load_yml_data('connectives'), load_yml_data('system_data')]
|
16
|
-
when 'crypto'
|
17
|
-
load_yml_data('crypto_data')
|
7
|
+
# Crypto Research Topic Generator
|
8
|
+
def self.crypto
|
9
|
+
cf = self.load_yml_data( 'crypto' )
|
10
|
+
word1, word2, word3 = self.samples( BZS, cf )
|
11
|
+
until word1 != word2
|
12
|
+
word2 = cf[:buzz2].sample
|
18
13
|
end
|
14
|
+
pre_connective = self.add_article(word1, caps=true)
|
15
|
+
"#{pre_connective} #{word1}, #{word2} #{word3}."
|
19
16
|
end
|
20
|
-
|
17
|
+
|
21
18
|
# CS Research Topic Generator
|
22
19
|
def self.cs
|
23
20
|
connectives_file, cs_file = self.load_file('cs')
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
21
|
+
com_connective = [
|
22
|
+
connectives_file[:common_connectives].sample,
|
23
|
+
connectives_file[:extra_connectives][1]
|
24
|
+
].sample
|
25
|
+
|
26
|
+
pre_wrds = self.samples( %i[buzz1 buzz2 buzz3], cs_file )
|
27
|
+
pst_wrds = self.samples( %i[buzz1 buzz2 buzz3], cs_file )
|
28
|
+
pre_connective = self.add_article(pre_wrds.first, caps=true)
|
29
|
+
mid_connective = self.add_article(pst_wrds.first)
|
30
|
+
|
31
|
+
sentence = [
|
32
|
+
pre_connective,
|
33
|
+
*pre_wrds,
|
34
|
+
com_connective,
|
35
|
+
mid_connective,
|
36
|
+
*pst_wrds
|
37
|
+
]
|
38
|
+
"#{sentence.join ' '}."
|
39
39
|
end
|
40
40
|
|
41
41
|
# System Research Topic Generatorg
|
42
42
|
def self.system
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
word1, word2, word3, word4 = system_file[:buzz1].sample, system_file[:buzz2].sample, system_file[:buzz3].sample, system_file[:buzz2].sample
|
47
|
-
name, ingword = system_file[:names].sample, system_file[:ings].sample
|
48
|
-
|
49
|
-
word2, word3, word4 =
|
50
|
-
case
|
51
|
-
when word2 == word1
|
52
|
-
self.random_word(system_file, 1, word1, word2)
|
53
|
-
when word3 == word1 || word3 == word2
|
54
|
-
self.random_word(system_file, 2, word1, word2, word3)
|
55
|
-
when word4 == word2 || word4 == word3 || word4 == word1
|
56
|
-
self.random_word(system_file, 3, word1, word2, word3, word4)
|
57
|
-
else
|
58
|
-
[word2, word3, word4]
|
59
|
-
end
|
60
|
-
|
61
|
-
# generic: [name]: [word1], [word2] [word3]
|
62
|
-
pre_connective = self.add_article(word1, true)
|
63
|
-
result1 = "#{name}: #{pre_connective} #{word1}, #{word2} #{word3}"
|
64
|
-
|
65
|
-
# approach-based: [generic] - [a/an] [buzz2] approach
|
66
|
-
mid_connective = self.add_article(word4, false)
|
67
|
-
result2 = "#{name}:#{word1}, #{word2} #{word3}s-- #{mid_connective} #{word4} approach"
|
68
|
-
|
69
|
-
# on...: on[foo]s
|
70
|
-
result3 = "On #{word1}, #{word2} #{word3}s"
|
71
|
-
word5, word6, word7 = system_file[:buzz1].sample, system_file[:buzz2].sample, system_file[:buzz3].sample
|
72
|
-
mid_connective = self.add_article(word5, false)
|
73
|
-
word6 = self.random_word(system_file, 4, word1, word2, word3, word5, word6) if word5 == word6 || word5 == word3 || word5 == word2 || word5 == word1
|
74
|
-
word7 = self.random_word(system_file, 5, word1, word2, word3, word5, word6, word7) if word7 == word5 || word7 == word6 || word7 == word3 || word7 == word2 || word7 == word1
|
75
|
-
result4 = "#{result1} #{mid_connective} #{word5} #{word6} #{word7}s"
|
76
|
-
result5 = "#{ingword} #{word1}, #{word2} #{word3}s"
|
77
|
-
results = [result1, result2, result3, result4, result5]
|
78
|
-
"#{results.sample}."
|
79
|
-
end
|
80
|
-
|
81
|
-
# Crypto Research Topic Generator
|
82
|
-
def self.crypto
|
83
|
-
crypto_file = self.load_file('crypto')
|
84
|
-
word1, word2, word3 = crypto_file[:buzz1].sample, crypto_file[:buzz2].sample, crypto_file[:buzz3].sample
|
85
|
-
word2 = word2.match(word1) ? ResearchTopicGen.random_word(crypto_file, 1, word1, word2) : word2 #If word1 and word2 are same, replace word2 with a different word.
|
86
|
-
pre_connective = ResearchTopicGen.add_article(word1, true)
|
87
|
-
sentence = "#{pre_connective} #{word1}, #{word2} #{word3}."
|
43
|
+
mtds = [:generic, :approach_based, :onfoo, :looong, :ings]
|
44
|
+
gen = SystemTopicGenerator.new
|
45
|
+
gen.send( mtds.sample )
|
88
46
|
end
|
89
47
|
|
90
48
|
# Generate Random Topic
|
91
49
|
def self.random
|
92
|
-
|
50
|
+
topic = %w[ cs system crypto ].sample
|
51
|
+
self.send( topic )
|
93
52
|
end
|
94
53
|
|
95
|
-
#
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
54
|
+
# System Research Topic Generatorg
|
55
|
+
class SystemTopicGenerator
|
56
|
+
def initialize
|
57
|
+
@connectives_file, @system_file = ResearchTopicGen.load_file('system')
|
58
|
+
@added = {}
|
59
|
+
@words = []
|
60
|
+
end
|
61
|
+
|
62
|
+
# generic: [name]: [word1], [word2] [word3]
|
63
|
+
def generic
|
64
|
+
w1_3 = format_words( 0, caps = true )
|
65
|
+
"#{gen_word( :names )}: #{w1_3}"
|
66
|
+
end
|
67
|
+
|
68
|
+
# approach-based: [generic] - [a/an] [buzz2] approach
|
69
|
+
def approach_based
|
70
|
+
buzz2 = gen_word :buzz2
|
71
|
+
article = ResearchTopicGen.add_article( buzz2 )
|
72
|
+
"#{generic} - #{article} #{buzz2} approach"
|
73
|
+
end
|
74
|
+
|
75
|
+
# on...: on[foo]s
|
76
|
+
def onfoo
|
77
|
+
foo = format_words( 0, article=false )
|
78
|
+
"on #{foo}s"
|
79
|
+
end
|
80
|
+
|
81
|
+
# [generic] [a/an] [buzz1], [buzz2] [buzz3]s
|
82
|
+
def looong
|
83
|
+
rest = format_words( 4 )
|
84
|
+
"#{generic} #{rest}s"
|
85
|
+
end
|
86
|
+
|
87
|
+
# [ing] [buzz1] [buzz2] [buzz3]s
|
88
|
+
def ings
|
89
|
+
ing = gen_word( :ings )
|
90
|
+
rest = format_words(0, article=false)
|
91
|
+
"#{ing} #{rest}s"
|
92
|
+
end
|
93
|
+
|
94
|
+
private
|
95
|
+
|
96
|
+
def format_words( offset, caps = false, article = true )
|
97
|
+
gen_words # (re-)generate a fresh set of words
|
98
|
+
ws = @words[offset, 3]
|
99
|
+
bz1 = ws.first
|
100
|
+
bz2_3 = ws[1, 2].join( ' ' )
|
101
|
+
article = article ? ResearchTopicGen.add_article( bz1, caps ) : ''
|
102
|
+
"#{article} #{bz1}, #{bz2_3}"
|
103
|
+
end
|
104
|
+
|
105
|
+
def gen_word( bz )
|
106
|
+
loop do
|
107
|
+
word = @system_file[bz].sample
|
108
|
+
unless @added[word]
|
109
|
+
@added[word] = true
|
110
|
+
return word
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
def gen_words
|
116
|
+
# flush stored results
|
117
|
+
@added = {}
|
118
|
+
@words = []
|
119
|
+
BZS.cycle(2).map do |bz|
|
120
|
+
@words.push gen_word( bz )
|
121
|
+
end
|
122
|
+
@words.insert(3, gen_word(:buzz2))
|
110
123
|
end
|
111
124
|
end
|
112
125
|
|
113
|
-
|
114
|
-
def self.add_article(word, caps)
|
115
|
-
if word.
|
116
|
-
|
126
|
+
|
127
|
+
def self.add_article(word, caps=false)
|
128
|
+
if word.downcase.start_with?('a', 'e', 'i', 'o', 'u')
|
129
|
+
article = "an"
|
117
130
|
else
|
118
|
-
|
119
|
-
end
|
120
|
-
caps ? article.capitalize : article
|
131
|
+
article = 'a'
|
121
132
|
end
|
122
|
-
|
133
|
+
caps ? article.capitalize : article
|
134
|
+
end
|
135
|
+
|
136
|
+
def self.samples( keys , table )
|
137
|
+
keys.map { |key| table[key].sample }
|
138
|
+
end
|
123
139
|
|
140
|
+
def self.load_yml_data(topic)
|
141
|
+
data = File.join( File.dirname(__FILE__), "data", "#{topic}.yml" )
|
142
|
+
Psych.load_file( data )
|
143
|
+
end
|
144
|
+
|
145
|
+
def self.load_file(topic)
|
146
|
+
conf = load_yml_data('connectives')
|
147
|
+
[ conf, load_yml_data(topic) ]
|
148
|
+
end
|
149
|
+
end
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: research_topicgen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- rmNULL
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-08-01 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: A simple gem to generate worthy
|
14
|
-
email:
|
13
|
+
description: A simple gem to generate worthy research Topics.
|
14
|
+
email: none
|
15
15
|
executables:
|
16
16
|
- research_topicgen
|
17
17
|
extensions: []
|
@@ -19,9 +19,9 @@ extra_rdoc_files: []
|
|
19
19
|
files:
|
20
20
|
- bin/research_topicgen
|
21
21
|
- lib/data/connectives.yml
|
22
|
-
- lib/data/
|
23
|
-
- lib/data/
|
24
|
-
- lib/data/
|
22
|
+
- lib/data/crypto.yml
|
23
|
+
- lib/data/cs.yml
|
24
|
+
- lib/data/system.yml
|
25
25
|
- lib/research_topicgen.rb
|
26
26
|
homepage: https://github.com/and-the-rest/research_topicgen
|
27
27
|
licenses:
|
@@ -43,7 +43,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
43
43
|
version: '0'
|
44
44
|
requirements: []
|
45
45
|
rubyforge_project:
|
46
|
-
rubygems_version: 2.
|
46
|
+
rubygems_version: 2.6.11
|
47
47
|
signing_key:
|
48
48
|
specification_version: 4
|
49
49
|
summary: research_topicgen - A Research Topic Generator
|