markov-polo 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c3f443637eb2e563f9aef1b0fe05603b482ef441
4
+ data.tar.gz: c036afedfca371df36e79e266419de1d4dba22cc
5
+ SHA512:
6
+ metadata.gz: 192564478ae477137a6e36d21dda580f7e65e832f3faf07c0d63b75175cb74ba543ba6f81bec2511514a907cbade4ebf02ccbd5e7856f81b5d4af61f26c9abab
7
+ data.tar.gz: 40b93ddfff448b3c6e0b75b606a1db714c9ed6441f0de80abe342d30ff941b49774e475c08544490f1fcec54f97945f807b37a871aa67ef415fe5a65e1ec29dd
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in markov-polo.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,61 @@
1
+ module MarkovPolo
2
+ VERSION = "0.1.0"
3
+
4
+ class Chain
5
+ START_TOKEN = "__start__"
6
+ END_TOKEN = "__end__"
7
+
8
+ def initialize hash={}
9
+ @data = hash
10
+ end
11
+
12
+ def << content
13
+ push content
14
+ end
15
+
16
+ def push content
17
+ last = START_TOKEN
18
+ sentence.split.each do |word|
19
+ add_member last, word
20
+ last = word
21
+ end
22
+ add_member last, END_TOKEN
23
+ end
24
+
25
+ def add_member last, word
26
+ @data[last] = {} unless @data.include? last
27
+ @data[last][word] = 0 unless @data[last].include? word
28
+ @data[last][word] += 1
29
+ end
30
+
31
+ def to_h
32
+ @data
33
+ end
34
+
35
+ def to_hash
36
+ to_h
37
+ end
38
+
39
+ def load hash
40
+ @data = hash
41
+ end
42
+
43
+ def generate
44
+ last = START_TOKEN
45
+ total = []
46
+ while last != END_TOKEN
47
+ choices = []
48
+ @data[last].each do |key, val|
49
+ val.times { choices << key }
50
+ end
51
+ chosen = choices.sample
52
+
53
+ total << chosen unless chosen == END_TOKEN
54
+ last = chosen
55
+ end
56
+ total.join " "
57
+ end
58
+
59
+ private :add_member
60
+ end
61
+ end
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'markov-polo'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "markov-polo"
8
+ spec.version = MarkovPolo::VERSION
9
+ spec.authors = ["JacisNonsense"]
10
+ spec.email = ["jaci.brunning@gmail.com"]
11
+
12
+ spec.summary = %q{A No Bullshit Markov Chain Generator in Pure Ruby}
13
+ spec.homepage = "http://github.com/JacisNonsense/MarkovPolo"
14
+ spec.license = "MIT"
15
+
16
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
17
+ # delete this section to allow pushing this gem 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 public gem pushes."
22
+ # end
23
+
24
+ spec.bindir = "bin"
25
+ spec.files = Dir.glob("lib/**/*") + ['Rakefile', 'markov-polo.gemspec', 'Gemfile', 'Rakefile']
26
+ spec.executables = []
27
+ spec.require_paths = ["lib"]
28
+
29
+ spec.add_development_dependency "bundler", "~> 1.9"
30
+ spec.add_development_dependency "rake", "~> 10.0"
31
+ end
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: markov-polo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - JacisNonsense
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-10 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.9'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.9'
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:
42
+ email:
43
+ - jaci.brunning@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - Gemfile
49
+ - Rakefile
50
+ - lib/markov-polo.rb
51
+ - markov-polo.gemspec
52
+ homepage: http://github.com/JacisNonsense/MarkovPolo
53
+ licenses:
54
+ - MIT
55
+ metadata: {}
56
+ post_install_message:
57
+ rdoc_options: []
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ requirements: []
71
+ rubyforge_project:
72
+ rubygems_version: 2.4.5
73
+ signing_key:
74
+ specification_version: 4
75
+ summary: A No Bullshit Markov Chain Generator in Pure Ruby
76
+ test_files: []