angular_gettext 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []