angular_gettext 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/angular_gettext.rb +81 -87
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4e5235555613328cec5209e1a6cbb5e03db07e9
|
4
|
+
data.tar.gz: de4e1e498d5d6c4e9d5e2fc8aa9f7c57598d0bf3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2b14f6eb60c7bac623afc61b7b7d3b10df3bdff10fdbf61e15f99b2ad7c99e71861c0886618cc061191df22d98fed6c5c66178c3d4ad6ed16d38cd82d9e2921
|
7
|
+
data.tar.gz: aec31b6a203924e6fbd9378ea5cae1301109a9c8c28720595a293c4424c22b7afec2b7c3ec629cf6f72f16d3be71f9ace19b23b5587d9ae4001cb4cade4c64b6
|
data/angular_gettext.rb
CHANGED
@@ -1,111 +1,105 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
|
3
|
+
class AngularGettext < Twine::Formatters::Abstract
|
4
|
+
def format_name
|
5
|
+
'angular-gettext'
|
6
|
+
end
|
4
7
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
def format_name
|
9
|
-
'angular-gettext'
|
10
|
-
end
|
8
|
+
def extension
|
9
|
+
'.po'
|
10
|
+
end
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
def can_handle_directory?(path)
|
13
|
+
Dir.entries(path).any? { |item| /^.+\.po$/.match(item) }
|
14
|
+
end
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
def default_file_name
|
17
|
+
return 'strings.po'
|
18
|
+
end
|
19
19
|
|
20
|
-
|
21
|
-
|
20
|
+
def determine_language_given_path(path)
|
21
|
+
path_arr = path.split(File::SEPARATOR)
|
22
|
+
path_arr.each do |segment|
|
23
|
+
match = /(..)\.po$/.match(segment)
|
24
|
+
if match
|
25
|
+
return match[1]
|
22
26
|
end
|
27
|
+
end
|
23
28
|
|
24
|
-
|
25
|
-
|
26
|
-
path_arr.each do |segment|
|
27
|
-
match = /(..)\.po$/.match(segment)
|
28
|
-
if match
|
29
|
-
return match[1]
|
30
|
-
end
|
31
|
-
end
|
29
|
+
return
|
30
|
+
end
|
32
31
|
|
33
|
-
|
34
|
-
|
32
|
+
def read(io, lang)
|
33
|
+
comment_regex = /#.? *"(.*)"$/
|
34
|
+
key_regex = /msgctxt *"(.*)"$/
|
35
|
+
value_regex = /msgstr *"(.*)"$/m
|
36
|
+
|
37
|
+
while item = io.gets("\n\n")
|
38
|
+
key = nil
|
39
|
+
value = nil
|
40
|
+
comment = nil
|
35
41
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
key = key_match[1].gsub('\\"', '"')
|
53
|
-
end
|
54
|
-
value_match = value_regex.match(item)
|
55
|
-
if value_match
|
56
|
-
value = value_match[1].gsub(/"\n"/, '').gsub('\\"', '"')
|
57
|
-
end
|
58
|
-
if key and key.length > 0 and value and value.length > 0
|
59
|
-
set_translation_for_key(key, lang, value)
|
60
|
-
if comment and comment.length > 0 and !comment.start_with?("SECTION:")
|
61
|
-
set_comment_for_key(key, comment)
|
62
|
-
end
|
63
|
-
comment = nil
|
64
|
-
end
|
42
|
+
comment_match = comment_regex.match(item)
|
43
|
+
if comment_match
|
44
|
+
comment = comment_match[1]
|
45
|
+
end
|
46
|
+
key_match = key_regex.match(item)
|
47
|
+
if key_match
|
48
|
+
key = key_match[1].gsub('\\"', '"')
|
49
|
+
end
|
50
|
+
value_match = value_regex.match(item)
|
51
|
+
if value_match
|
52
|
+
value = value_match[1].gsub(/"\n"/, '').gsub('\\"', '"')
|
53
|
+
end
|
54
|
+
if key and key.length > 0 and value and value.length > 0
|
55
|
+
set_translation_for_key(key, lang, value)
|
56
|
+
if comment and comment.length > 0 and !comment.start_with?("SECTION:")
|
57
|
+
set_comment_for_key(key, comment)
|
65
58
|
end
|
59
|
+
comment = nil
|
66
60
|
end
|
61
|
+
end
|
62
|
+
end
|
67
63
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
64
|
+
def format_file(lang)
|
65
|
+
@default_lang = twine_file.language_codes[0]
|
66
|
+
result = super
|
67
|
+
@default_lang = nil
|
68
|
+
result
|
69
|
+
end
|
74
70
|
|
75
|
-
|
76
|
-
|
77
|
-
|
71
|
+
def format_header(lang)
|
72
|
+
"msgid \"\"\nmsgstr \"\"\n\"Language: #{lang}\\n\"\n\"X-Generator: Twine #{Twine::VERSION}\\n\"\n"
|
73
|
+
end
|
78
74
|
|
79
|
-
|
80
|
-
|
81
|
-
|
75
|
+
def format_section_header(section)
|
76
|
+
"# SECTION: #{section.name}"
|
77
|
+
end
|
82
78
|
|
83
|
-
|
84
|
-
|
85
|
-
|
79
|
+
def should_include_definition(definition, lang)
|
80
|
+
super and !definition.translation_for_lang(@default_lang).nil?
|
81
|
+
end
|
86
82
|
|
87
|
-
|
88
|
-
|
89
|
-
|
83
|
+
def format_comment(definition, lang)
|
84
|
+
"#. \"#{escape_quotes(definition.comment)}\"\n" if definition.comment
|
85
|
+
end
|
90
86
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
87
|
+
def format_key_value(definition, lang)
|
88
|
+
value = definition.translation_for_lang(lang)
|
89
|
+
[format_key(definition.key.dup), format_base_translation(definition), format_value(value.dup)].compact.join
|
90
|
+
end
|
95
91
|
|
96
|
-
|
97
|
-
|
98
|
-
|
92
|
+
def format_key(key)
|
93
|
+
"msgctxt \"#{key}\"\n"
|
94
|
+
end
|
99
95
|
|
100
|
-
|
101
|
-
|
102
|
-
|
96
|
+
def format_base_translation(definition)
|
97
|
+
"msgid \"#{definition.translations[@default_lang]}\"\n"
|
98
|
+
end
|
103
99
|
|
104
|
-
|
105
|
-
|
106
|
-
end
|
107
|
-
end
|
100
|
+
def format_value(value)
|
101
|
+
"msgstr \"#{value}\"\n"
|
108
102
|
end
|
109
103
|
end
|
110
104
|
|
111
|
-
Twine::Formatters.formatters <<
|
105
|
+
Twine::Formatters.formatters << AngularGettext.new
|