borkalyzer 1.0.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.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +60 -0
  3. data/lib/borkalyzer.rb +160 -0
  4. metadata +88 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ad6c2ba799b45fd4c207a6b0ed8c50c94d847ebc
4
+ data.tar.gz: '058d168167cb2a4e1de30dd8bd790b538cdc80f7'
5
+ SHA512:
6
+ metadata.gz: 68b555f9ec0d6eca4ec811112999941a81056b8c6250781c39a2c8c92fae3cb62989ca1a5253e517810b9811696757c48ad54bcbc6137acb22a74ffae086d9ad
7
+ data.tar.gz: 9ee27ffeae8d7681aea0bc3ce7a49ea33f25d007c14f524d4f82b89b712c5e0d7d99cc3e507095d23f3c53d2b82b6339e3272d7ee9676c8e4acc52572071da90
@@ -0,0 +1,60 @@
1
+ # Borkalyzer
2
+
3
+ [![Code Climate](https://codeclimate.com/github/brundage/borkalyzer/badges/gpa.svg)](https://codeclimate.com/github/brundage/borkalyzer)
4
+
5
+ ## Enstelleshun
6
+
7
+ Edd thes lene-a tu yuoor eppleceshun's Gemffele-a:
8
+
9
+ ```ruby
10
+ gem 'borkalyzer'
11
+ ```
12
+
13
+ Und then ixecoote-a:
14
+
15
+ $ bundle
16
+
17
+ Oor enstell et yuoorselff es:
18
+
19
+ $ gem install borkalyzer
20
+
21
+ ## Usege-a
22
+
23
+ ```ruby
24
+ Borkalyzer.bork 'some string'
25
+ => "sume-a streng"
26
+ ```
27
+
28
+ # En Reels
29
+
30
+ Borkalyzer munkey-petches zee Streng cless... coose-a thet's zee Reels Vey ... und edds String#bork
31
+
32
+ Noo yuoo cun du cuul stooffff leke-a
33
+
34
+ ```ruby
35
+ # app/views/users/show.html.erb
36
+
37
+ <%= "#{@user.name} updated his status".bork %>
38
+ ```
39
+ Prudooces
40
+
41
+ ```
42
+ Deun updeted hes stetoos
43
+ ```
44
+
45
+ ## Defelupment
46
+
47
+ Effter checkeng oooot zee repu, roon `ben/setoop` tu enstell dependencees. Then, roon `reke-a spec` tu roon zee tests. Yuoo cun elsu roon `ben/cunsule-a` fur un enterectefe-a prumpt thet vell elloo yuoo tu ixperement.
48
+
49
+ Tu enstell thes gem oontu yuoor lucel mechene-a, roon `boondle-a ixec reke-a enstell`. Tu releese-a e noo ferseun, updete-a zee ferseun noomber en `ferseun.rb`, und then roon `boondle-a ixec reke-a releese-a`, vhech vell creete-a e get teg fur zee ferseun, poosh get cummets und tegs, und poosh zee `.gem` fele-a tu [roobygems.oorg](https://rubygems.org).
50
+
51
+ ## Cuntrebooteng
52
+
53
+ Boog repurts und pooll reqooests ere-a velcume-a oon [GetHoob](https://github.com/brundage/borkalyzer).
54
+
55
+
56
+ ## Lecense-a
57
+
58
+ Zee gem es efeeleble-a es oopen suoorce-a under zee terms ooff zee [MIT Lecense-a](http://opensource.org/licenses/MIT).
59
+
60
+ Bork Bork Bork!
@@ -0,0 +1,160 @@
1
+ # encoding: utf-8
2
+ require 'strscan'
3
+
4
+ module Borkalyzer
5
+ extend self
6
+
7
+ VERSION = '1.0.0'
8
+
9
+ BEGINNING_REGEXP = /^an|^a|^en|^e|^f|^o|^u|^the$|^bork$/.freeze
10
+ ENDING_REGEXP = /tion$|a$|e$|ow$|ow$|o$|u$/.freeze
11
+
12
+ module StringMethods
13
+ def bork; Borkalyzer.bork(self); end
14
+ end
15
+
16
+
17
+ def bork(string)
18
+ result = ''
19
+ s = StringScanner.new(string)
20
+ until s.eos? do
21
+ word = s.scan(/\w+|\W+/)
22
+ result << if( word =~ /^\W+$/ )
23
+ tr_nonword word
24
+ else
25
+ tr_word word
26
+ end
27
+ end
28
+ result
29
+ end
30
+
31
+
32
+ def monkey_patch(mod)
33
+ mod.send :include, self.const_get(:StringMethods)
34
+ end
35
+
36
+ private
37
+
38
+ def tr_nonword(nonword)
39
+ if nonword =~ /\n/
40
+ nonword + "Bork Bork Bork!\n"
41
+ else
42
+ nonword
43
+ end
44
+ end
45
+
46
+ def tr_word(word)
47
+ return if word.nil?
48
+ capitalized = (word == word.capitalize)
49
+ upcased = (word == word.upcase)
50
+ array = split(word.downcase)
51
+ borked = tr_beginning(array[0]) + tr_middle(array[1]) + tr_end(array[2])
52
+ borked = borked.capitalize if capitalized
53
+ borked = borked.upcase if upcased
54
+ return borked
55
+ end
56
+
57
+
58
+ def split(word)
59
+ b = beginning(word)
60
+ [b[0]] + ending(b[1])
61
+ end
62
+
63
+
64
+ def beginning(word)
65
+ result = word.partition BEGINNING_REGEXP
66
+ result[0] == "" ? result[1..2] : ["", word]
67
+ end
68
+
69
+
70
+ def ending(word)
71
+ result = word.rpartition ENDING_REGEXP
72
+ result[1] == "" ? [word, ""] : result[0..1]
73
+ end
74
+
75
+
76
+
77
+ def matches(regexp:, word:)
78
+ m = regexp.match(word)
79
+ m.nil? ? m : m.captures.join
80
+ end
81
+
82
+
83
+ def beginning_transforms
84
+ @beginning_transforms ||= { 'a' => 'e',
85
+ 'an' => 'un',
86
+ 'au' => 'oo',
87
+ 'e' => 'i',
88
+ 'en' => 'ee',
89
+ 'i' => 'e',
90
+ 'o' => 'oo',
91
+ 'the' => 'zee'
92
+ }
93
+ end
94
+
95
+
96
+ def ending_transforms
97
+ @ending_transforms ||= { 'au' => 'oo',
98
+ 'e' => 'e-a',
99
+ 'o' => 'u',
100
+ 'ow' => 'oo',
101
+ 'tion' => 'shun',
102
+ 'u' => 'oo'
103
+ }
104
+ end
105
+
106
+
107
+ def tr_part(lookup:, part:)
108
+ lookup.has_key?(part) ? lookup[part] : part
109
+ end
110
+
111
+
112
+ def tr_beginning(part)
113
+ tr_part part: part, lookup: beginning_transforms
114
+ end
115
+
116
+
117
+ def tr_end(part)
118
+ tr_part part: part, lookup: ending_transforms
119
+ end
120
+
121
+
122
+ def middle_transforms
123
+ @middle_transforms ||= { 'a' => 'e',
124
+ 'an' => 'un',
125
+ 'au' => 'oo',
126
+ 'ew' => 'oo',
127
+ 'f' => 'ff',
128
+ 'i' => 'e',
129
+ 'ii' => 'eei',
130
+ 'ir' => 'ur',
131
+ 'o' => 'u',
132
+ 'ow' => 'oo',
133
+ 'u' => 'oo',
134
+ 'v' => 'f',
135
+ 'w' => 'v'
136
+ }
137
+ end
138
+
139
+
140
+ def tr_middle(middle)
141
+ result = ''
142
+ s = StringScanner.new middle
143
+ until s.eos? do
144
+ ch = s.scan(/./)
145
+ peek = ch + s.peek(1)
146
+ result << if( middle_transforms.has_key?(peek) )
147
+ s.pos += 1 unless s.eos?
148
+ middle_transforms[peek]
149
+ else
150
+ tr_part part: ch, lookup: middle_transforms
151
+ end
152
+ end
153
+ result
154
+ end
155
+
156
+ end
157
+
158
+ if defined?(Rails)
159
+ Borkalyzer.monkey_patch(String)
160
+ end
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: borkalyzer
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Dean Brundage
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-12-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
+ - !ruby/object:Gem::Dependency
42
+ name: guard-rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: E rooby gem tu borkelyze-a strengs
56
+ email:
57
+ - dean@deanandadie.net
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - README.md
63
+ - lib/borkalyzer.rb
64
+ homepage: https://github.com/brundage/borkalyzer
65
+ licenses:
66
+ - MIT
67
+ metadata: {}
68
+ post_install_message:
69
+ rdoc_options: []
70
+ require_paths:
71
+ - lib
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ requirements: []
83
+ rubyforge_project:
84
+ rubygems_version: 2.5.2
85
+ signing_key:
86
+ specification_version: 4
87
+ summary: Borkalyzes strings
88
+ test_files: []