dingo 1.0.1 → 1.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 138af0bccfe5408b5cb7250b3baf3428436eb700
4
- data.tar.gz: 1767c1d81f744208dc971bbdf4b37111188570bd
3
+ metadata.gz: 791e347a5215563bf184acb17e3665d94eb345ea
4
+ data.tar.gz: 58ab9254421822c6cf8d361b140061b1fc647262
5
5
  SHA512:
6
- metadata.gz: 3d7f7f7bd721af4b7f67fde0732ae756ee194b0930f640093c824b7876ac8a427456ba78331274d372f1a8bc54c5e72d55695ae97b9892fe667128b49c413430
7
- data.tar.gz: 93acd2a5748c2e6cfba5b68441815f430fef9f45fcc508a1fa8cef77013b84de455d9c7c76e7969768ec70fa1dbabe65cc7cf3df91d943488181962c0baee35d
6
+ metadata.gz: 6f3a6ae956dfd3b256b5a6a3d4a010be61093f19639b0658ea64ead3315f7f369390896918bc38c776131e992214fe223226d17ccad1d38c656153b8c24b5be2
7
+ data.tar.gz: 9dbea39d999cef2b1b64483bd42b518c690144b81b73b0e5f0e9f232d8a397b70577a084ee119badeee578e1c26ad5b180d1194264656dfafd50a0ba6017c92f
data/README.md CHANGED
@@ -1,21 +1,52 @@
1
- Dingo
2
- --
1
+ # Dingo
3
2
 
4
3
  Dingo generates copy. Because you're a real aussie and are too lazy to write
5
4
  your own.
6
5
 
6
+ It works by generating an infinite sequences of Australian flavoured copy.
7
+
8
+ ## API
9
+
7
10
  ```
8
- Dingo.words.take(4)
11
+ dingo = Dingo.new
12
+
13
+ dingo.words.take(4)
9
14
  => ["mateship", "Woolies", "marbo", "sicky"]
10
15
 
11
- Dingo.sentences.take(1)
16
+ dingo.sentences.take(1)
12
17
  => ["Acca dacca wranga red hot go herald sun mullet qantas."]
13
18
 
19
+ dingo.paragraphs.take(1)
20
+ => ["Underdog roy & hg sam newman slow internet sunburn 52 beers in one flight.
21
+ Little people riding horses richie benaud true blue battered sav doll bludger qantas.
22
+ Grand final the 7 30 report liking soccer when we're in the world cup shaun micaleff bruce mcavaney cobber.
23
+ Don burke's beard one hand one bounce woolies burke & wills reversing the ute one handed roy & hg."]
24
+
25
+ dingo.people.take(4)
26
+ => ["eddie mcguire", "bruce mcavaney", "thorpey", "shaun micaleff", "tony"]
27
+
28
+ dingo.emails.take(2)
29
+ => ["adam.hills@sunburn.com.au", "gough.whitlam@pavlova.com.au"]
30
+ ```
31
+
32
+ all of the above can also be called as class methods.
33
+
34
+ ```
35
+ Dingo.words.take(1)
36
+ Dingo.sentences.take(1)
14
37
  Dingo.paragraphs.take(1)
15
- => [
16
- "Underdog roy & hg sam newman slow internet sunburn 52 beers in one flight.
17
- Little people riding horses richie benaud true blue battered sav doll bludger qantas.
18
- Grand final the 7 30 report liking soccer when we're in the world cup shaun micaleff bruce mcavaney cobber.
19
- Don burke's beard one hand one bounce woolies burke & wills reversing the ute one handed roy & hg."
20
- ]
38
+ Dingo.people.take(1)
39
+ Dingo.emails.take(1)
40
+ ```
41
+
42
+ ## Configurables
43
+
44
+ ```
45
+ Dingo.new(
46
+ random: 12,
47
+ source_words: ["Bush fires", "Resenting the monarchy"],
48
+ source_people: ["Matey Cobber-Sheep", "Ragey McSportsdad"],
49
+ sentence_length: 7,
50
+ paragraph_length: 3
51
+ )
21
52
  ```
data/lib/dingo.rb CHANGED
@@ -1,54 +1,80 @@
1
1
  require 'enumerator'
2
+ require 'forwardable'
2
3
 
3
4
  class Dingo
4
- DEFAULT_WORD_PATH = File.expand_path("../../dingo.txt", __FILE__)
5
- SENTENCE_LENGTH = 6
5
+ extend SingleForwardable
6
6
 
7
- class << self
8
- def words(random: Random.new, source_words: aussie_copy)
9
- infinite_sequence { aussie_word(source_words, random) }
10
- end
7
+ dir = "../../word_lists/"
8
+ DEFAULT_WORD_PATH = File.expand_path(dir + "dingo.txt", __FILE__)
9
+ DEFAULT_PEOPLE_PATH = File.expand_path(dir + "people.txt", __FILE__)
11
10
 
12
- def sentences(random: Random.new, source_words: aussie_copy)
13
- infinite_sequence { aussie_sentence(source_words, random) }
14
- end
11
+ def_delegators :dingo, :words, :sentences, :paragraphs, :people, :emails
15
12
 
16
- def paragraphs(random: Random.new, source_words: aussie_copy)
17
- infinite_sequence { aussie_paragraph(source_words, random) }
18
- end
13
+ def initialize(
14
+ random: Random.new,
15
+ source_words: read_file(DEFAULT_WORD_PATH),
16
+ source_people: read_file(DEFAULT_PEOPLE_PATH),
17
+ sentence_length: 6,
18
+ paragraph_length: 4
19
+ )
19
20
 
20
- def reset
21
- @aussie_copy = nil
22
- @source_words = nil
23
- end
21
+ @random = random
22
+ @source_words = source_words.select { |w| !w.include?(" ") }
23
+ @source_people = source_people
24
+ @all_words = source_words + source_people
25
+ @sentence_length = sentence_length
26
+ @paragraph_length = paragraph_length
27
+ end
24
28
 
25
- private
29
+ def words; infinite_sequence { word } end
30
+ def sentences; infinite_sequence { sentence } end
31
+ def paragraphs; infinite_sequence { paragraph } end
32
+ def people; infinite_sequence { person } end
33
+ def emails; infinite_sequence { email } end
34
+
35
+ private
36
+
37
+ def read_file(file_path)
38
+ File.read(file_path).lines.map(&:chomp)
39
+ end
26
40
 
27
- def infinite_sequence(&block)
28
- Enumerator.new do |y|
29
- loop do
30
- y.yield block.call
31
- end
41
+ def infinite_sequence(&block)
42
+ Enumerator.new do |y|
43
+ loop do
44
+ y.yield block.call
32
45
  end
33
46
  end
47
+ end
34
48
 
35
- def aussie_copy
36
- @aussie_copy ||= File.read(DEFAULT_WORD_PATH).lines.map(&:chomp)
37
- end
49
+ def word
50
+ @source_words.sample(random: @random)
51
+ end
38
52
 
39
- def aussie_word(source_words, random)
40
- @source_words ||= source_words.select { |w| !w.include?(" ") }
41
- @source_words.sample(random: random)
42
- end
53
+ def sentence
54
+ sentence = @all_words.
55
+ sample(@sentence_length, random: @random).
56
+ join(" ") + "."
57
+ sentence.capitalize!
58
+ sentence
59
+ end
43
60
 
44
- def aussie_sentence(source_words, random)
45
- sentence = source_words.sample(SENTENCE_LENGTH, random: random).join(" ") + "."
46
- sentence.capitalize!
47
- sentence
48
- end
61
+ def paragraph
62
+ sentences.take(@paragraph_length).join(" ")
63
+ end
64
+
65
+ def person
66
+ @source_people.sample(random: @random)
67
+ end
68
+
69
+ def email
70
+ people.take(1)[0].gsub(" ", ".") + "@" + words.take(1)[0] + ".com.au"
71
+ end
72
+
73
+ class << self
74
+ private
49
75
 
50
- def aussie_paragraph(source_words, random)
51
- sentences.take(4).join(" ")
76
+ def dingo(random: Random.new)
77
+ @@dingo ||= Dingo.new(random: random)
52
78
  end
53
79
  end
54
80
  end
data/test/dingo_test.rb CHANGED
@@ -1,33 +1,67 @@
1
1
  require 'minitest/autorun'
2
-
3
2
  require 'dingo'
4
3
 
5
4
  class DingoTest < MiniTest::Unit::TestCase
6
5
  def test_skeleton
7
- assert_equal 4, Dingo.words.take(4).length
6
+ assert_equal 4, dingo.words.take(4).length
8
7
  end
9
8
 
10
9
  def test_makes_a_lot_of_words
11
- assert_equal 40, Dingo.words.take(40).length
12
- end
13
-
14
- def test_makes_only_words
15
- assert_equal [nil], Dingo.words(source_words: ["more than one word"]).take(1)
10
+ assert_equal 40, dingo.words.take(40).length
16
11
  end
17
12
 
18
13
  def test_makes_sentences_with_full_stops
19
- assert_equal ".", Dingo.sentences.take(1).first[-1]
14
+ assert_equal ".", dingo.sentences.take(1).first[-1]
20
15
  end
21
16
 
22
17
  def test_makes_sentences_with_capital_letters
23
- assert_equal "A", Dingo.sentences(source_words: ["abcdef"]).take(1).first[0]
18
+ dingo = dingo(source_words: ["abcdef"], source_people: [])
19
+ assert_equal "A", dingo.sentences.take(1).first[0]
24
20
  end
25
21
 
26
22
  def test_makes_paragraphs
27
- assert_equal true, !Dingo.paragraphs.take(1)[0].match(/(.*\..*){4}/)[0].empty?
23
+ assert_equal true, !!(dingo.paragraphs.take(1)[0].match(/(.*\..*){4}/)[0])
24
+ end
25
+
26
+ def test_makes_people
27
+ dingo = dingo(source_people: ["naul pewman"])
28
+ assert_equal ["naul pewman"], dingo.people.take(1)
29
+ end
30
+
31
+ def test_makes_email_addresses
32
+ assert_equal true, !!(dingo.emails.take(1)[0].match(/.*@.*/)[0])
33
+ end
34
+
35
+ def test_removes_spaces_from_email_addresses
36
+ dingo = dingo(source_words: ["domain"], source_people: ["san holo"])
37
+ assert_equal ["san.holo@domain.com.au"], dingo.emails.take(1)
38
+ end
39
+
40
+ def test_configurable_sentence_length
41
+ dingo = dingo(
42
+ sentence_length: 2,
43
+ source_words: ["a", "b", "c"],
44
+ source_people: []
45
+ )
46
+
47
+ # length 4 to account for a space and fullstop
48
+ assert_equal 4, dingo.sentences.take(1)[0].length
49
+ end
50
+
51
+ def test_configurable_paragraph_length
52
+ dingo = dingo(paragraph_length: 2)
53
+ assert_equal true, !!(dingo.paragraphs.take(1)[0].match(/(.*\..*){2}/)[0])
54
+ end
55
+
56
+ def test_class_api
57
+ assert Dingo.words.take(1)
58
+ assert Dingo.sentences.take(1)
59
+ assert Dingo.paragraphs.take(1)
60
+ assert Dingo.people.take(1)
61
+ assert Dingo.emails.take(1)
28
62
  end
29
63
 
30
- def setup
31
- Dingo.reset
64
+ def dingo(opts = {})
65
+ Dingo.new(opts)
32
66
  end
33
67
  end
@@ -1,29 +1,16 @@
1
- daryl somers
2
1
  herald sun
3
2
  sausage roll
4
3
  footy
5
4
  speccy
6
- Ernie Dingo
7
- bruce mcavaney
8
- cathy freeman
9
5
  mate
10
6
  cobber
11
7
  4 and 20
12
8
  true blue
13
9
  mateship
14
10
  quintessentially australian
15
- julia gillard
16
- mad monk
17
- bob hawke
18
- warney
19
- gillie
20
- merv hughes
21
- richie benaud
22
11
  australian gold
23
12
  canary yellow
24
13
  green and gold
25
- dawn fraser
26
- thorpey
27
14
  vb
28
15
  xxxx
29
16
  holding the ball!
@@ -35,8 +22,6 @@ southern cross
35
22
  bondi beach
36
23
  great southern land
37
24
  land down under
38
- ned kelly
39
- paul kelly
40
25
  dog on the tucker box
41
26
  'burbs
42
27
  holden
@@ -45,19 +30,13 @@ bogan
45
30
  ACDC
46
31
  un-australian
47
32
  swing the willow at it
48
- lleyton hewitt
49
- pat rafter
50
33
  bonds
51
34
  vegemite
52
35
  sicky
53
- pharlap
54
- sam newman
55
- eddie mcguire
56
36
  great australian hero
57
37
  too right
58
38
  strewth!
59
39
  crikey!
60
- agro
61
40
  nullarbor
62
41
  uluru
63
42
  woolies
@@ -66,10 +45,6 @@ wranga
66
45
  tomato sauce
67
46
  heinz
68
47
  mullet
69
- kath & kim
70
- glen robbins
71
- rove
72
- adam hills
73
48
  harsh but fair
74
49
  yeah nah
75
50
  reversing the ute one handed
@@ -106,31 +81,20 @@ don burke's beard
106
81
  tin shed
107
82
  bundy
108
83
  taking the kids to sea world
109
- steve irwin
110
84
  battered sav
111
- nikki webster
112
85
  liking soccer when we're in the world cup
113
86
  fish and chips
114
- roy & hG
115
87
  little people riding horses
116
88
  having a punt
117
89
  sportsbet
118
90
  slow internet
119
- tony
120
91
  you're terrible muriel
121
92
  scooped it outta the punnet
122
93
  marbo
123
- Shaun Micaleff
124
94
  52 beers in one flight
125
- boonie
126
95
  smuggling budgies
127
96
  stealing land
128
97
  getting inappropriately drunk in Bali
129
- tony Lockett
130
- wayne carey
131
- gary ablett
132
- shane crawford
133
- burke & wills
134
98
  blue-ringed octopus
135
99
  sting ray
136
100
  grand final
@@ -144,25 +108,16 @@ scones
144
108
  v8
145
109
  cashed up bogans buying fluoro work cars
146
110
  vomitting your kebab into a taxi
147
- skippy
148
- paul hogan
149
- crocodile dundee
150
111
  charlie the wonder dog
151
112
  brendan fevola
113
+ crocodile dundee
152
114
  sizzler
153
- harold holt
154
115
  undeserved gold at the winter olympics
155
- gough whitlam
156
116
  today tonight
157
117
  a current affair
158
118
  the 7 30 report
159
- ray martin
160
- humphrey b bear
161
119
  great white shark
162
120
  greg norman
163
- schapelle corby
164
- john horward
165
- jeff kennet
166
121
  qantas
167
122
  ansett
168
123
  royal flying doctor service
@@ -170,5 +125,4 @@ one hand one bounce
170
125
  cricket
171
126
  waltzing matilda
172
127
  advance australia fair
173
- jimmy barnes
174
128
  eating our national animal
@@ -0,0 +1,46 @@
1
+ daryl somers
2
+ ernie dingo
3
+ bruce mcavaney
4
+ cathy freeman
5
+ julia gillard
6
+ mad monk
7
+ bob hawke
8
+ warney
9
+ gillie
10
+ merv hughes
11
+ richie benaud
12
+ dawn fraser
13
+ ned kelly
14
+ paul kelly
15
+ thorpey
16
+ lleyton hewitt
17
+ pat rafter
18
+ pharlap
19
+ sam newman
20
+ eddie mcguire
21
+ agro
22
+ glen robbins
23
+ kath and kim
24
+ steve irwin
25
+ nikki webster
26
+ roy and hg
27
+ tony
28
+ shaun micaleff
29
+ boonie
30
+ tony Lockett
31
+ burke and wills
32
+ wayne carey
33
+ skippy
34
+ paul hogan
35
+ gary ablett
36
+ harold holt
37
+ gough whitlam
38
+ ray martin
39
+ humphrey b bear
40
+ schapelle corby
41
+ jimmy barnes
42
+ john horward
43
+ jeff kennet
44
+ shane crawford
45
+ rove
46
+ adam hills
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dingo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - JaredShay
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-26 00:00:00.000000000 Z
11
+ date: 2014-01-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Generate true blue copy
14
14
  email:
@@ -19,8 +19,9 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - lib/dingo.rb
21
21
  - test/dingo_test.rb
22
+ - word_lists/dingo.txt
23
+ - word_lists/people.txt
22
24
  - README.md
23
- - dingo.txt
24
25
  homepage: https://github.com/jaredshay/dingo
25
26
  licenses: []
26
27
  metadata: {}