angular_gettext 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/angular_gettext.rb +111 -0
  3. 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
@@ -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: []