research_topicgen 0.1.5 → 0.1.6
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 +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
         |