braille_ueb 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,6 @@
1
1
  require 'braille_ueb/constants'
2
2
  require 'braille_ueb/char'
3
+ require 'braille_ueb/token'
3
4
  require 'braille_ueb/word'
4
5
 
5
6
  module BrailleUEB
@@ -2,7 +2,7 @@ module BrailleUEB
2
2
  class Char < String
3
3
 
4
4
  def upper?
5
- c == c.upcase
5
+ c == c.upcase && !number?
6
6
  end
7
7
 
8
8
  def number?
@@ -17,6 +17,10 @@ module BrailleUEB
17
17
  ALPHA.has_key?(c.downcase)
18
18
  end
19
19
 
20
+ def alphanumeric?
21
+ letter? || number?
22
+ end
23
+
20
24
  private
21
25
 
22
26
  def c
@@ -53,17 +53,38 @@ module BrailleUEB
53
53
  ',' => '⠂'
54
54
  }
55
55
 
56
+ GROUPS = {
57
+ 'and' => '⠯',
58
+ 'for' => '⠿',
59
+ 'of' => '⠷',
60
+ 'the' => '⠮',
61
+ 'with' => '⠾',
62
+ }
63
+
56
64
  CONTRACTIONS = {
57
- 'like' => '',
58
- 'but' => '',
59
- 'you' => '',
60
- 'will' => '',
61
- 'just' => '',
62
- 'do' => '',
63
- 'that' => '',
64
- 'so' => '',
65
- 'can' => '',
66
- 'go' => ''
65
+ 'but' => '',
66
+ 'can' => '',
67
+ 'do' => '',
68
+ 'every' => '',
69
+ 'from' => '',
70
+ 'go' => '',
71
+ 'have' => '',
72
+ 'just' => '',
73
+ 'knowledge' => '',
74
+ 'like' => '',
75
+ 'more' => '⠍',
76
+ 'not' => '⠝',
77
+ 'people' => '⠏',
78
+ 'quite' => '⠟',
79
+ 'rather' => '⠗',
80
+ 'so' => '⠎',
81
+ 'that' => '⠞',
82
+ 'us' => '⠥',
83
+ 'very' => '⠧',
84
+ 'will' => '⠺',
85
+ 'it' => '⠭',
86
+ 'you' => '⠽',
87
+ 'as' => '⠵'
67
88
  }
68
89
 
69
90
  end
@@ -0,0 +1,23 @@
1
+ module BrailleUEB
2
+ class Token
3
+ def initialize(token)
4
+ @word, @punc = split(token)
5
+ end
6
+
7
+ def translate
8
+ braille = @word.translate
9
+ braille << PUNCTUATION[@punc] if @punc
10
+ braille
11
+ end
12
+
13
+ private
14
+
15
+ def split(token)
16
+ punctuation = PUNCTUATION.keys.join("")
17
+ word = token.tr(punctuation, "")
18
+ punc = token.match("[#{punctuation}]")
19
+ punc = punc[0] if punc
20
+ [ Word.new(word), punc ]
21
+ end
22
+ end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module BrailleUEB
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -1,85 +1,47 @@
1
1
  module BrailleUEB
2
- class Token
3
- def initialize(token)
4
- @word, @punc = split(token)
5
- end
6
-
7
- def translate
8
- braille = @word.translate
9
- braille << PUNCTUATION[@punc] if @punc
10
- braille
11
- end
12
-
13
- private
14
-
15
- def split(token)
16
- punctuation = PUNCTUATION.keys.join("")
17
- word = token.tr(punctuation, "")
18
- punc = token.match("[#{punctuation}]")
19
- punc = punc[0] if punc
20
- [ Word.new(word), punc ]
21
- end
22
- end
23
-
24
2
  class Word
25
3
  def initialize(word)
26
4
  @word = word
27
5
  end
28
6
 
29
7
  def translate
30
- if contraction?
31
- contracted
32
- else
33
- letter_by_letter
34
- end
35
- end
8
+ return "" if @word.empty?
36
9
 
37
- private
38
-
39
- def contraction?
40
- CONTRACTIONS.has_key?(@word.downcase)
41
- end
42
-
43
- def contracted
44
10
  braille = ""
45
11
  braille << SPECIAL[:capital] if starts_with_upper?
46
- braille << CONTRACTIONS[@word.downcase]
47
- braille
48
- end
12
+ braille << SPECIAL[:number] if starts_with_number?
13
+ braille << @word.downcase
49
14
 
50
- def starts_with_upper?
51
- Char.new(@word[0]).upper?
52
- end
15
+ CONTRACTIONS.each { |key, val|
16
+ braille = braille.gsub(key, val)
17
+ }
53
18
 
54
- def letter_by_letter
55
- braille = ""
56
- previous = Char.new("")
19
+ GROUPS.each { |key, val|
20
+ braille = braille.gsub(key, val)
21
+ }
57
22
 
58
- @word.each_char do |c|
59
- c = Char.new(c)
60
- braille << translate_char(previous, c)
61
- previous = c
62
- end
23
+ ALPHA.each { |key, val|
24
+ braille = braille.gsub(key, val)
25
+ }
26
+
27
+ NUMBER.each { |key, val|
28
+ braille = braille.gsub(key, val)
29
+ }
63
30
 
64
31
  braille
65
- end
66
32
 
67
- def translate_char(previous, c)
68
- result = ""
33
+ end
69
34
 
70
- if c.letter?
71
- result << SPECIAL[:capital] if c.upper?
72
- result << ALPHA[c.downcase]
73
- elsif c.number?
74
- result << SPECIAL[:number] unless previous.number?
75
- result << NUMBER[c]
76
- else
77
- result << c
78
- end
35
+ private
79
36
 
80
- result
37
+ def starts_with_upper?
38
+ Char.new(@word[0]).upper?
81
39
  end
82
40
 
41
+ def starts_with_number?
42
+ Char.new(@word[0]).number?
43
+ end
44
+
83
45
  end
84
46
  end
85
47
 
@@ -9,6 +9,10 @@ describe BrailleUEB do
9
9
  verify 'c', '⠉'
10
10
  end
11
11
 
12
+ it 'should convert the same letter in a row' do
13
+ verify 'zz', '⠵⠵'
14
+ end
15
+
12
16
  it 'should convert capital letters' do
13
17
  verify 'Z', '⠠⠵'
14
18
  end
@@ -35,6 +39,14 @@ describe BrailleUEB do
35
39
  verify 'like', '⠇'
36
40
  end
37
41
 
42
+ it 'should handle special wordsigns' do
43
+ verify 'and', '⠯'
44
+ end
45
+
46
+ it 'should handle group signs' do
47
+ verify 'band', '⠃⠯'
48
+ end
49
+
38
50
  it 'should perform contractions that end with punctuation' do
39
51
  verify 'like.', '⠇⠲'
40
52
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: braille_ueb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-04 00:00:00.000000000 Z
12
+ date: 2013-01-05 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A translator for Unified English Braille (UEB)
15
15
  email: chris@geihsler.net
@@ -20,6 +20,7 @@ files:
20
20
  - Rakefile
21
21
  - lib/braille_ueb/char.rb
22
22
  - lib/braille_ueb/constants.rb
23
+ - lib/braille_ueb/token.rb
23
24
  - lib/braille_ueb/version.rb
24
25
  - lib/braille_ueb/word.rb
25
26
  - lib/braille_ueb.rb
@@ -33,17 +34,17 @@ rdoc_options: []
33
34
  require_paths:
34
35
  - lib
35
36
  required_ruby_version: !ruby/object:Gem::Requirement
36
- none: false
37
37
  requirements:
38
38
  - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- required_rubygems_version: !ruby/object:Gem::Requirement
42
41
  none: false
42
+ required_rubygems_version: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ! '>='
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0'
47
+ none: false
47
48
  requirements: []
48
49
  rubyforge_project:
49
50
  rubygems_version: 1.8.24