angular_gettext 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/angular_gettext.rb +111 -0
- metadata +44 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 473151136c8383ee28de60e22bc0df5ce253ff37
|
4
|
+
data.tar.gz: 010dd1988993b35645f3ac05b6dcfe9b6bfeee87
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 65043fefe6597978bd2d02686328ada9c191c588aecda73164b2b5ba8edc418f11df0c9b379dcac3d44f142cf63576c7055eac66d784d64d76d2d94a1e4c2125
|
7
|
+
data.tar.gz: 451bc9d0bf87ab34516e02775e416cda5be62dd7c14809c6eaada60c91e6a460f1c83d006bd0819ab145ea6001b282290acc8bb73b7e4b8630f82ff2586d08e3
|
data/angular_gettext.rb
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'Twine'
|
4
|
+
|
5
|
+
module Twine
|
6
|
+
module Formatters
|
7
|
+
class AngularGettext < Abstract
|
8
|
+
def format_name
|
9
|
+
'angular-gettext'
|
10
|
+
end
|
11
|
+
|
12
|
+
def extension
|
13
|
+
'.po'
|
14
|
+
end
|
15
|
+
|
16
|
+
def can_handle_directory?(path)
|
17
|
+
Dir.entries(path).any? { |item| /^.+\.po$/.match(item) }
|
18
|
+
end
|
19
|
+
|
20
|
+
def default_file_name
|
21
|
+
return 'strings.po'
|
22
|
+
end
|
23
|
+
|
24
|
+
def determine_language_given_path(path)
|
25
|
+
path_arr = path.split(File::SEPARATOR)
|
26
|
+
path_arr.each do |segment|
|
27
|
+
match = /(..)\.po$/.match(segment)
|
28
|
+
if match
|
29
|
+
return match[1]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
return
|
34
|
+
end
|
35
|
+
|
36
|
+
def read(io, lang)
|
37
|
+
comment_regex = /#.? *"(.*)"$/
|
38
|
+
key_regex = /msgctxt *"(.*)"$/
|
39
|
+
value_regex = /msgstr *"(.*)"$/m
|
40
|
+
|
41
|
+
while item = io.gets("\n\n")
|
42
|
+
key = nil
|
43
|
+
value = nil
|
44
|
+
comment = nil
|
45
|
+
|
46
|
+
comment_match = comment_regex.match(item)
|
47
|
+
if comment_match
|
48
|
+
comment = comment_match[1]
|
49
|
+
end
|
50
|
+
key_match = key_regex.match(item)
|
51
|
+
if key_match
|
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
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def format_file(lang)
|
69
|
+
@default_lang = twine_file.language_codes[0]
|
70
|
+
result = super
|
71
|
+
@default_lang = nil
|
72
|
+
result
|
73
|
+
end
|
74
|
+
|
75
|
+
def format_header(lang)
|
76
|
+
"msgid \"\"\nmsgstr \"\"\n\"Language: #{lang}\\n\"\n\"X-Generator: Twine #{Twine::VERSION}\\n\"\n"
|
77
|
+
end
|
78
|
+
|
79
|
+
def format_section_header(section)
|
80
|
+
"# SECTION: #{section.name}"
|
81
|
+
end
|
82
|
+
|
83
|
+
def should_include_definition(definition, lang)
|
84
|
+
super and !definition.translation_for_lang(@default_lang).nil?
|
85
|
+
end
|
86
|
+
|
87
|
+
def format_comment(definition, lang)
|
88
|
+
"#. \"#{escape_quotes(definition.comment)}\"\n" if definition.comment
|
89
|
+
end
|
90
|
+
|
91
|
+
def format_key_value(definition, lang)
|
92
|
+
value = definition.translation_for_lang(lang)
|
93
|
+
[format_key(definition.key.dup), format_base_translation(definition), format_value(value.dup)].compact.join
|
94
|
+
end
|
95
|
+
|
96
|
+
def format_key(key)
|
97
|
+
"msgctxt \"#{key}\"\n"
|
98
|
+
end
|
99
|
+
|
100
|
+
def format_base_translation(definition)
|
101
|
+
"msgid \"#{definition.translations[@default_lang]}\"\n"
|
102
|
+
end
|
103
|
+
|
104
|
+
def format_value(value)
|
105
|
+
"msgstr \"#{value}\"\n"
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
Twine::Formatters.formatters << Twine::Formatters::AngularGettext.new
|
metadata
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: angular_gettext
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ali BARIN
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-08-19 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A twine formatter for angular gettext's .POs
|
14
|
+
email: ali.barin53@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- angular_gettext.rb
|
20
|
+
homepage: http://rubygems.org/gems/angular_gettext
|
21
|
+
licenses:
|
22
|
+
- MIT
|
23
|
+
metadata: {}
|
24
|
+
post_install_message:
|
25
|
+
rdoc_options: []
|
26
|
+
require_paths:
|
27
|
+
- lib
|
28
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
requirements: []
|
39
|
+
rubyforge_project:
|
40
|
+
rubygems_version: 2.4.2
|
41
|
+
signing_key:
|
42
|
+
specification_version: 4
|
43
|
+
summary: Angular Gettext
|
44
|
+
test_files: []
|