daud_coder 0.0.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/bin/parse_daud CHANGED
File without changes
data/bin/to_daud CHANGED
File without changes
@@ -0,0 +1,31 @@
1
+ #
2
+ # Converts a string with Da'ud notation into a unicode string
3
+ #
4
+ require 'daud_coder/encodings'
5
+ class DaudCoder::DaudDecoder
6
+
7
+ def daud_map
8
+ @@daud_map ||= DaudCoder::Encodings.daud_to_unicode_map
9
+ end
10
+
11
+ def target_encoding
12
+ @@encoding ||= Encoding.default_internal || Encoding.find("UTF-8")
13
+ end
14
+
15
+ def decode(s)
16
+ result = ""
17
+ until s.empty? do
18
+ m = /\{(..)\}/.match(s)
19
+ if (m)
20
+ result << s[0..m.begin(0) - 1] unless m.begin(0) == 0
21
+ result << (daud_map[m[1]] || m[0])
22
+ s = s[m.end(0)..-1]
23
+ else
24
+ result << s
25
+ s = ""
26
+ end
27
+ end
28
+ return result
29
+ end
30
+
31
+ end
@@ -0,0 +1,16 @@
1
+ #
2
+ # Converts a regular unicode string to Da'ud notation ASCII.
3
+ #
4
+ class DaudCoder::DaudEncoder
5
+
6
+ def daud_map
7
+ @@daud_map ||= DaudCoder::Encodings.unicode_to_daud_map
8
+ end
9
+ def encode(s)
10
+ result = ""
11
+ s.chars do |c|
12
+ result << (daud_map.has_key?(c) ? "\{#{daud_map[c]}\}" : c)
13
+ end
14
+ return result
15
+ end
16
+ end
@@ -0,0 +1,75 @@
1
+ # encoding: UTF-8
2
+
3
+ class DaudCoder::Encodings
4
+
5
+ PAIRS = [["a'", 'á'],
6
+ ["'a", 'à'],
7
+ ['a^', 'â'],
8
+ ['a"', 'ä'],
9
+ ['ao', 'å'],
10
+ ['a~', 'ã'],
11
+ ['ae', 'æ'],
12
+ ["A'", 'Á'],
13
+ ["'A", 'À'],
14
+ ['A^', 'Â'],
15
+ ['A"', 'Ä'],
16
+ ['Ao', 'Å'],
17
+ ['A~', 'Ã'],
18
+ ['AE', 'Æ'],
19
+ ['c,', 'ç'],
20
+ ['C,', 'Ç'],
21
+ ["e'", 'é'],
22
+ ["'e", 'è'],
23
+ ['e^', 'ê'],
24
+ ['e"', 'ë'],
25
+ ["E'", 'É'],
26
+ ["'E", 'È'],
27
+ ['E^', 'Ê'],
28
+ ['E"', 'Ë'],
29
+ ["i'", 'í'],
30
+ ["'i", 'ì'],
31
+ ['i^', 'î'],
32
+ ['i"', 'ï'],
33
+ ["I'", 'Í'],
34
+ ["'I", 'Ì'],
35
+ ['I^', 'Î'],
36
+ ['I"', 'Ï'],
37
+ ['n~', 'ñ'],
38
+ ['N~', 'Ñ'],
39
+ ["o'", 'ó'],
40
+ ["'o", 'ò'],
41
+ ['o^', 'ô'],
42
+ ['o"', 'ö'],
43
+ ['o/', 'ø'],
44
+ ['o~', 'õ'],
45
+ ["O'", 'Ó'],
46
+ ["'O", 'Ò'],
47
+ ['O^', 'Ô'],
48
+ ['O"', 'Ö'],
49
+ ['O/', 'Ø'],
50
+ ['O~', 'Õ'],
51
+ ['sz', 'ß'],
52
+ ["u'", 'ú'],
53
+ ["'u", 'ù'],
54
+ ['u^', 'û'],
55
+ ['u"', 'ü'],
56
+ ["U'", 'Ú'],
57
+ ["'U", 'Ù'],
58
+ ['U^', 'Û'],
59
+ ['U"', 'Ü'],
60
+ ["y'", 'ý'],
61
+ ['y"', 'ÿ'],
62
+ ["Y'", 'Ý'],
63
+ ['dh', 'ð'],
64
+ ['DH', 'Ð'],
65
+ ['th', 'þ'],
66
+ ['TH', 'Þ']]
67
+
68
+ def self.daud_to_unicode_map
69
+ Hash[PAIRS]
70
+ end
71
+
72
+ def self.unicode_to_daud_map
73
+ Hash[PAIRS.map {|d, u| [u, d]}]
74
+ end
75
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daud_coder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
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-06-21 00:00:00.000000000 Z
12
+ date: 2012-07-16 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Encodes and decodes between standard text encoders and Da'ud notation.
15
15
  email: elsbeth@pobox.com
@@ -20,6 +20,9 @@ extensions: []
20
20
  extra_rdoc_files: []
21
21
  files:
22
22
  - lib/daud_coder.rb
23
+ - lib/daud_coder/encodings.rb
24
+ - lib/daud_coder/daud_encoder.rb
25
+ - lib/daud_coder/daud_decoder.rb
23
26
  - bin/parse_daud
24
27
  - bin/to_daud
25
28
  homepage: http://github.com/kathyvs/DaudEncoder