wordsoup 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.
@@ -0,0 +1,3 @@
1
+ module Wordsoup
2
+ VERSION = "0.1.0"
3
+ end
data/lib/wordsoup.rb ADDED
@@ -0,0 +1,108 @@
1
+ require "wordsoup/version"
2
+
3
+ module Wordsoup
4
+ class Author
5
+
6
+ attr_accessor :sentences, :word_hash, :first_words, :last_words
7
+
8
+ def initialize(file)
9
+ @sentences = make_sentence_array(file)
10
+ @word_hash = Hash.new { |h, k| h[k] = [] }
11
+ @first_words = []
12
+ @last_words = []
13
+ make_word_hash
14
+ end
15
+
16
+ def make_sentence_array(file)
17
+ text = ""
18
+ File.open(file).each do |line|
19
+ text << line
20
+ end
21
+ text = text.gsub(/\n/, " ")
22
+ text = text.gsub(/"/, "")
23
+ sentences = text.split(" ")
24
+ end
25
+
26
+
27
+ def make_word_hash()
28
+ @sentences.each do |sentence|
29
+ sentence_array = sentence.split(" ")
30
+ sentence_array.each_with_index do |word, i|
31
+ @first_words << word if i == 0
32
+ @last_words << word if i == sentence_array.length - 1
33
+ unless i == sentence_array.length - 1
34
+ @word_hash[word] << sentence_array[i+1]
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ def sentence
41
+ sentence = [@first_words.sample.capitalize]
42
+ word = ""
43
+ until (sentence.length == 30)
44
+ word = @word_hash[sentence.last].sample
45
+ break if word.nil?
46
+ word = fix_word(word)
47
+ sentence << word
48
+ break if ["!","?","."].include?(word[word.length-1])
49
+ end
50
+ sentence = sentence.join(" ")
51
+ sentence[sentence.length-1] = "" if [",", ":", ";"].include?(sentence[sentence.length-1])
52
+ unless ["!","?","."].include?(sentence[sentence.length-1])
53
+ sentence << "?"
54
+ end
55
+ sentence
56
+ end
57
+
58
+ def paragraph
59
+ paragraph = ""
60
+ until paragraph.length > 250
61
+ paragraph << " "
62
+ paragraph << self.sentence
63
+ end
64
+ paragraph
65
+ end
66
+
67
+ def fix_word(word)
68
+ word = word.downcase
69
+ capitalized_words = ["i'll", "i", "god", "i."]
70
+ if capitalized_words.include?(word)
71
+ word = word.capitalize
72
+ end
73
+ word
74
+ end
75
+
76
+ end
77
+
78
+ class Shakespeare < Author
79
+
80
+ def initialize(file = "hamlet.txt")
81
+ super(file)
82
+ end
83
+
84
+ end
85
+
86
+ class Hemingway < Author
87
+
88
+ def initialize(file = "omats.txt")
89
+ super(file)
90
+ end
91
+
92
+ end
93
+
94
+ class Hemingway < Author
95
+
96
+ def initialize(file = "omats.txt")
97
+ super(file)
98
+ end
99
+
100
+ end
101
+ class Bible < Author
102
+
103
+ def initialize(file = "bible.txt")
104
+ super(file)
105
+ end
106
+
107
+ end
108
+ end
data/wordsoup.gemspec ADDED
@@ -0,0 +1,34 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'wordsoup/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "wordsoup"
8
+ spec.version = Wordsoup::VERSION
9
+ spec.authors = ["DouglasTGordon"]
10
+ spec.email = ["douglastgordon@gmail.com"]
11
+
12
+ spec.summary = %q{A jibberish generator in the style of popular authors.}
13
+ spec.description = %q{Generates sentences and paragraphs in the style of popular authors that have the syntax of English, but are totally jibberish. A better Lorem Ipsum! }
14
+ spec.homepage = "https://github.com/douglastgordon/WordSoup"
15
+
16
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
18
+ # if spec.respond_to?(:metadata)
19
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
20
+ # else
21
+ # raise "RubyGems 2.0 or newer is required to protect against " \
22
+ # "public gem pushes."
23
+ # end
24
+
25
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
26
+ f.match(%r{^(test|spec|features)/})
27
+ end
28
+ spec.bindir = "exe"
29
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
+ spec.require_paths = ["lib"]
31
+
32
+ spec.add_development_dependency "bundler", "~> 1.13"
33
+ spec.add_development_dependency "rake", "~> 10.0"
34
+ end
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wordsoup
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - DouglasTGordon
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-10-26 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.13'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.13'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: 'Generates sentences and paragraphs in the style of popular authors that
42
+ have the syntax of English, but are totally jibberish. A better Lorem Ipsum! '
43
+ email:
44
+ - douglastgordon@gmail.com
45
+ executables: []
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - ".byebug_history"
50
+ - ".gitignore"
51
+ - Gemfile
52
+ - README.md
53
+ - Rakefile
54
+ - author.rb
55
+ - bin/console
56
+ - bin/setup
57
+ - lib/bible.txt
58
+ - lib/hamlet.txt
59
+ - lib/omats.txt
60
+ - lib/wordsoup.rb
61
+ - lib/wordsoup/version.rb
62
+ - wordsoup.gemspec
63
+ homepage: https://github.com/douglastgordon/WordSoup
64
+ licenses: []
65
+ metadata: {}
66
+ post_install_message:
67
+ rdoc_options: []
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ requirements: []
81
+ rubyforge_project:
82
+ rubygems_version: 2.5.1
83
+ signing_key:
84
+ specification_version: 4
85
+ summary: A jibberish generator in the style of popular authors.
86
+ test_files: []