leet 0.0.1 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b42d3cef35eec387ecfe6c3b9ee085fcc6717a1e
4
- data.tar.gz: 79cd0f0af257b1569b9696040254f672438cd570
3
+ metadata.gz: 19ac0dee85cd357d1cbf39313550ac8255aa39a3
4
+ data.tar.gz: 416352991110d5b80b0c56d09762d15b43308d9f
5
5
  SHA512:
6
- metadata.gz: 86f02019a27dfa86f5bdf2e05a0d03fef2ab514c1d9d619a0b5b1bf868b9746c694ac451716957cac800344867ac0162e21eb0b569628092de47825635c662d5
7
- data.tar.gz: 0b61c8ec72fba6b09b9891a60aed2cf36d7b51d2c5598db8550b6b59f16d6f66f9f8164b7e76ca355c8fdee3fcf48f99a16ccc2c6980a58487e84b55a19087e4
6
+ metadata.gz: 6de0366999bad392bdca634c5a9c0a6f57aa59a5ae62a4e87e7be9842cd4b3bf64b01517974f60ed4f7afc00f91f0f062133e5c2cdfcc800557201c2ecf57f59
7
+ data.tar.gz: f45931d0e4930b5debdf5b11c96ee97d3a51dca2526e2086396007d7102ca0af5c5199d3f66d0a1e17d966289b71319ff64d581c1a178d6a6b2ee58f5dde0d70
data/README.md CHANGED
@@ -18,6 +18,9 @@ gem install leet
18
18
  ```sh
19
19
  $ leet "I Love Ruby!"
20
20
  $ 3y3 [_<>\|& /2(_)13\|/!
21
+
22
+ $ leet -u '3y3 [_<>\|& /2(_)13\|/!'
23
+ $ i lovg rubwi
21
24
  ```
22
25
  ## code
23
26
 
@@ -26,9 +29,13 @@ require 'leet'
26
29
 
27
30
  puts "I Love Ruby!".leet
28
31
  #=> j 1_p\/|=- .-L|/3`/!
32
+
33
+ puts "j 1_p\/|=- .-L|/3`/!".unleet
34
+ #=> i lo rubyi
35
+
29
36
  ```
30
37
 
31
38
  # TODO
32
39
 
33
- * unleet
40
+ * unleet 100% (Maybe it cannot be 100% for it like hash reverse.)
34
41
  * han pinyin
data/bin/leet CHANGED
@@ -1,11 +1,16 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative '../lib/leet'
3
+ $:.unshift(File.expand_path("../../lib", __FILE__))
4
4
 
5
- if ARGV.count != 1
6
- puts "With the given string to leet."
7
- puts 'usage: leet "I Love Ruby!"'
5
+ require 'leet'
6
+
7
+ if ARGV.count == 1
8
+ puts ARGV[0].leet
9
+ elsif ARGV.count == 2 && ARGV[0] == "-u"
10
+ puts ARGV[1].unleet
11
+ else
12
+ puts "With the given string to leet or ."
13
+ puts 'leet usage: leet "I Love Ruby!"'
14
+ puts 'unleet usage: leet -u "| []_[]\|£ /2(_)P>Ч!"'
8
15
  exit
9
16
  end
10
-
11
- puts ARGV[0].leet
data/lib/leet/leet.rb CHANGED
@@ -1,7 +1,14 @@
1
1
  require 'yaml'
2
2
 
3
3
  module Leet
4
+ DEBUG = false
4
5
  LEETS = YAML.load_file File.join(__dir__, 'leets.yml')
6
+ LEETS_TO_CHAR = {}
7
+ LEETS.each do |key, values|
8
+ values.each do |value|
9
+ LEETS_TO_CHAR[value] = key
10
+ end
11
+ end
5
12
 
6
13
  def str2leet(str)
7
14
  result = ""
@@ -15,8 +22,61 @@ module Leet
15
22
  end
16
23
  module_function :str2leet
17
24
 
18
- def leet2str(leet)
19
- "TODO..."
25
+ def leet2char(chars)
26
+ LEETS_TO_CHAR.keys.each do |leet|
27
+ if chars == leet
28
+ puts "match #{leet} to #{LEETS_TO_CHAR[leet]}" if DEBUG
29
+ return LEETS_TO_CHAR[leet]
30
+ end
31
+ end
32
+ nil
33
+ end
34
+ module_function :leet2char
35
+
36
+ def leet2word(chars)
37
+ return "" if chars.nil? or chars.length == 0
38
+
39
+ result = ""
40
+ i = 5 # leet's max length is 5
41
+
42
+ while(i>0) do
43
+ tmp_string = chars[0,i]
44
+ c = leet2char tmp_string
45
+ if c
46
+ result << c
47
+ result << leet2word(chars[i..-1])
48
+ break
49
+ else
50
+ i -= 1
51
+ end
52
+ end
53
+
54
+ result
55
+ end
56
+ module_function :leet2word
57
+
58
+ def leet2str(str)
59
+ result = ""
60
+ str.to_s.split(" ").each do |word|
61
+ result << leet2word(word)
62
+ result << " "
63
+ end
64
+ # result = ""
65
+ # tmp_string = ""
66
+ # str.to_s.split("").each_with_index do |char, index|
67
+ # if char == ' '
68
+ # result << ' '
69
+ # tmp_string = ""
70
+ # else
71
+ # tmp_string << char
72
+ # c = leet2char tmp_string
73
+ # if c
74
+ # result << c
75
+ # tmp_string = ''
76
+ # end
77
+ # end
78
+ # end
79
+ result.strip
20
80
  end
21
81
  module_function :leet2str
22
82
  end
data/lib/leet/leets.yml CHANGED
@@ -33,18 +33,14 @@ d:
33
33
  - ')'
34
34
  - '|)'
35
35
  - '(|'
36
- - '|o'
37
36
  - '[)'
38
37
  - 'I>'
39
- - '|>'
40
- - ' ?'
41
38
  - 'T)'
42
39
  - 'I7'
43
40
  - 'cl'
44
41
 
45
42
  e:
46
43
  - '3'
47
- - '&'
48
44
  - '£'
49
45
  - '€'
50
46
  - 'ë'
@@ -57,7 +53,6 @@ f:
57
53
  - '|#'
58
54
  - 'ph'
59
55
  - '/='
60
- - 'v'
61
56
 
62
57
  g:
63
58
  - '6'
@@ -83,12 +78,10 @@ h:
83
78
  - '|~|'
84
79
  - '|-|'
85
80
  - ']~['
86
- - '}{'
87
- - ' !-!'
81
+ - '!-!'
88
82
  - '1-1'
89
83
  - '\-/'
90
84
  - 'I+I'
91
- - ' ?'
92
85
  - '}-{'
93
86
 
94
87
  i:
@@ -99,7 +92,6 @@ i:
99
92
  - '|'
100
93
  - 'eye'
101
94
  - '3y3'
102
- - ']['
103
95
  - ']'
104
96
  - '/me'
105
97
 
@@ -119,7 +111,6 @@ k:
119
111
  - '|X'
120
112
 
121
113
  l:
122
- - '£'
123
114
  - '1_'
124
115
  - '|_'
125
116
  - 'el'
@@ -156,7 +147,6 @@ n:
156
147
  - '//[]'
157
148
  - '/V'
158
149
  - 'И'
159
- - '^'
160
150
 
161
151
  o:
162
152
  - '0'
@@ -170,11 +160,9 @@ p:
170
160
  - '|*'
171
161
  - '|o'
172
162
  - '|º'
173
- - ' ?'
174
163
  - '|^(o)'
175
164
  - '|>'
176
165
  - '|"'
177
- - '9'
178
166
  - '[]D'
179
167
  - '|°'
180
168
  - '|7'
@@ -243,7 +231,6 @@ w:
243
231
  - '\|/'
244
232
  - '\_|_/'
245
233
  - '\_:_/'
246
- - '?'
247
234
  - 'uu'
248
235
  - '2u'
249
236
 
@@ -253,15 +240,12 @@ x:
253
240
  - '}{'
254
241
  - 'ecks'
255
242
  - '×'
256
- - '?'
257
243
  - ')('
258
244
  - ']['
259
- - '}{'
260
245
 
261
246
  y:
262
247
  - '`/'
263
248
  - 'Ч'
264
- - '\|/'
265
249
  - '¥'
266
250
 
267
251
  z:
data/lib/leet/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Leet
2
- VERSION = '0.0.1'
2
+ VERSION = '0.1.0'
3
3
  end
data/spec/leet_spec.rb CHANGED
@@ -2,13 +2,38 @@ require_relative '../lib/leet'
2
2
  require_relative './spec_helper'
3
3
 
4
4
  describe Leet do
5
- describe 'a..z' do
6
- ('a'..'z').to_a.each do |c|
7
- leet = c.leet
8
- puts "#{c}: #{leet}"
9
- it "char should not be it self" do
5
+ describe 'leet' do
6
+ it 'leet a..z' do
7
+ ('a'..'z').to_a.each do |c|
8
+ leet = c.leet
9
+ puts "#{c}: #{leet}"
10
10
  expect(c).not_to eq(leet)
11
11
  end
12
12
  end
13
13
  end
14
+
15
+ describe 'unleet' do
16
+ it 'unleet sample' do
17
+ expect("| []_[]\|£ /2(_)P>Ч!".unleet).to eq("i love ruby!")
18
+ end
19
+ end
20
+
21
+ describe 'leets.yml' do
22
+ it 'LEETS values count should equal to LEETS_TO_CHAR keys count' do
23
+ expect(Leet::LEETS.values.flatten.count).to eq(Leet::LEETS_TO_CHAR.keys.count)
24
+ end
25
+
26
+ it 'one leet to one char' do
27
+ leets_to_char = {}
28
+ Leet::LEETS.each do |key, values|
29
+ values.each do |value|
30
+ if leets_to_char.has_key? value
31
+ raise "!!! #{value} duplicate on #{key} and #{leets_to_char[value]}"
32
+ else
33
+ leets_to_char[value] = key
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
14
39
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aston Fu