phrase_assembler 1.4.0 → 1.4.1
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.
- data/lib/pa_proxies/pa_csv_proxy.rb +18 -13
- data/lib/tasks/phrase_assembler.rake +79 -0
- metadata +5 -9
@@ -7,32 +7,37 @@ module PACsvProxy
|
|
7
7
|
self.current_replace_token = "AAA" if self.current_replace_token == "ZZZ"
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
10
|
+
def csv_string(delimiter, options = {})
|
11
11
|
self.current_replace_token = "AAA"
|
12
|
-
substituted_values = substitute_default_tokens(data, options, " ")
|
13
|
-
File.open(file_name, 'w') {|f| f.write(substituted_values) }
|
12
|
+
substituted_values = substitute_default_tokens(data, options, " ", delimiter)
|
14
13
|
return substituted_values
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_csv(file_name, delimiter = "|", options = {})
|
17
|
+
string_data = self.csv_string(delimiter, options)
|
18
|
+
File.open(file_name, 'w') {|f| f.write(string_data) }
|
19
|
+
return string_data
|
15
20
|
end
|
16
21
|
|
17
|
-
def get_csv_safe_string_line(backtrace_string, s)
|
18
|
-
return "#{backtrace_string}
|
22
|
+
def get_csv_safe_string_line(backtrace_string, s, delimiter)
|
23
|
+
return "#{backtrace_string}#{delimiter}#{s.gsub('"', '""').gsub(/\r/, '').gsub(/\n/, '')}\n"
|
19
24
|
end
|
20
25
|
|
21
|
-
def substitute_default_tokens(p_data, p_options, backtrace_string)
|
26
|
+
def substitute_default_tokens(p_data, p_options, backtrace_string, delimiter)
|
22
27
|
if p_data.is_a? Hash
|
23
28
|
t_text = ""
|
24
|
-
p_data.keys.sort{|a, b| a.to_s <=> b.to_s}.each{|k| t_text << substitute_default_tokens(p_data[k], p_options, "#{backtrace_string}:#{k.to_s}")}
|
29
|
+
p_data.keys.sort{|a, b| a.to_s <=> b.to_s}.each{|k| t_text << substitute_default_tokens(p_data[k], p_options, "#{backtrace_string}:#{k.to_s}", delimiter)}
|
25
30
|
return t_text
|
26
31
|
elsif p_data.is_a? Array
|
27
32
|
t_text = ""
|
28
|
-
p_data.each_index{|index| v=p_data[index];t_text << substitute_default_tokens(v, p_options, "#{backtrace_string}[#{index}]")}
|
33
|
+
p_data.each_index{|index| v=p_data[index];t_text << substitute_default_tokens(v, p_options, "#{backtrace_string}[#{index}]", delimiter)}
|
29
34
|
return t_text
|
30
35
|
elsif p_data.is_a? String
|
31
|
-
return substitute_default_token(String.new(p_data), p_options, backtrace_string)
|
36
|
+
return substitute_default_token(String.new(p_data), p_options, backtrace_string, delimiter)
|
32
37
|
end
|
33
38
|
end
|
34
39
|
|
35
|
-
def substitute_default_token(p_data, p_options, backtrace_string)
|
40
|
+
def substitute_default_token(p_data, p_options, backtrace_string, delimiter)
|
36
41
|
add_options = {}
|
37
42
|
result = ""
|
38
43
|
|
@@ -62,7 +67,7 @@ module PACsvProxy
|
|
62
67
|
|
63
68
|
add_lang_options = {}
|
64
69
|
#Odi po svim vrijednostim za jezik
|
65
|
-
p_data.gsub(/\{\*[^\{\}\*\?]+\?[^\{\}\*:]
|
70
|
+
p_data.gsub(/\{\*[^\{\}\*\?]+\?[^\{\}\*:]*(:[^\{\}\*:]*)+\*\}/){|token|
|
66
71
|
clear_token = token[2...-2]
|
67
72
|
key = clear_token[/[^\?]+/]
|
68
73
|
|
@@ -98,10 +103,10 @@ module PACsvProxy
|
|
98
103
|
for i in 0...max_length
|
99
104
|
temp_lang_options = {}
|
100
105
|
add_lang_options.keys.each{|k| v=add_lang_options[k]; temp_lang_options[k] = v[((i > v.length - 1) ? (v.length - 1) : i)]}
|
101
|
-
result << get_csv_safe_string_line(backtrace_string, substitute_token(String.new(p_data), p_options, PATokenProxyOptions.new_if_needed(temp_lang_options.merge(add_options))))
|
106
|
+
result << get_csv_safe_string_line("#{backtrace_string} - #{temp_lang_options}", substitute_token(String.new(p_data), p_options, PATokenProxyOptions.new_if_needed(temp_lang_options.merge(add_options))), delimiter)
|
102
107
|
end
|
103
108
|
else
|
104
|
-
result << get_csv_safe_string_line(backtrace_string, substitute_token(p_data, p_options, PATokenProxyOptions.new_if_needed(add_options)))
|
109
|
+
result << get_csv_safe_string_line(backtrace_string, substitute_token(p_data, p_options, PATokenProxyOptions.new_if_needed(add_options)), delimiter)
|
105
110
|
end
|
106
111
|
|
107
112
|
return result
|
@@ -27,4 +27,83 @@ namespace :phrase_assembler do
|
|
27
27
|
proxy.load_grammar(File.join(default_dir, grammar_file_name))
|
28
28
|
proxy.to_csv(ENV['out'])
|
29
29
|
end
|
30
|
+
|
31
|
+
desc "Outputs whole yml with multiple languages to csv file"
|
32
|
+
task(:get_multi_csv_file) do
|
33
|
+
if ENV['out'].nil?
|
34
|
+
raise 'Must specify output file: out='
|
35
|
+
end
|
36
|
+
if ENV['languages'].nil?
|
37
|
+
raise 'Must specify languages: languages=croatian,serbian,...'
|
38
|
+
end
|
39
|
+
if ENV['default_language'].nil?
|
40
|
+
raise 'Must specify default language: default_language=croatian'
|
41
|
+
end
|
42
|
+
if ENV['default_dir'].nil?
|
43
|
+
default_dir = File.join(::Rails.root.to_s, 'app', 'yaml', 'languages')
|
44
|
+
else
|
45
|
+
default_dir = ENV['default_dir']
|
46
|
+
end
|
47
|
+
if ENV['delimiter'].nil?
|
48
|
+
delimiter = "|"
|
49
|
+
else
|
50
|
+
delimiter = ENV['delimiter']
|
51
|
+
end
|
52
|
+
|
53
|
+
multi_csv_string = ""
|
54
|
+
first = true
|
55
|
+
languages = ENV['languages'].split(",")
|
56
|
+
languages.insert(0, languages.delete(ENV['default_language']))
|
57
|
+
|
58
|
+
multi_csv_string << delimiter
|
59
|
+
for language in languages
|
60
|
+
multi_csv_string << "#{language}#{delimiter}"
|
61
|
+
end
|
62
|
+
multi_csv_string << "\n"
|
63
|
+
|
64
|
+
for language in languages
|
65
|
+
puts '----------------------------------------------'
|
66
|
+
puts language
|
67
|
+
puts '----------------------------------------------'
|
68
|
+
cache = {}
|
69
|
+
proxy = PACompositeProxy.new(cache)
|
70
|
+
proxy.load(File.join(default_dir, "#{language}.yml"))
|
71
|
+
proxy.load_grammar(File.join(default_dir, "#{language}_grammar.yml"))
|
72
|
+
csv_string = proxy.csv_string(delimiter)
|
73
|
+
csv_string.split("\n").each{|csv_string_line|
|
74
|
+
puts csv_string_line
|
75
|
+
csv_string_split = csv_string_line.split(delimiter)
|
76
|
+
if csv_string_split.length > 2
|
77
|
+
merged_csv_string_split = ""
|
78
|
+
for i in 1..csv_string_split.length - 1
|
79
|
+
merged_csv_string_split << csv_string_split[i]
|
80
|
+
end
|
81
|
+
csv_string_split[1] = merged_csv_string_split
|
82
|
+
end
|
83
|
+
|
84
|
+
if multi_csv_string.include?("#{csv_string_split[0]}#{delimiter}")
|
85
|
+
multi_csv_string = multi_csv_string.insert(multi_csv_string.index("#{csv_string_split[0]}#{delimiter}") +
|
86
|
+
(csv_string_split[0]).length + 1, "#{csv_string_split[1]}#{delimiter} ")
|
87
|
+
elsif multi_csv_string.include?("#{csv_string_split[0]}")
|
88
|
+
multi_csv_string = multi_csv_string.gsub(/#{Regexp.escape(csv_string_split[0])}[^#{Regexp.escape(delimiter)}]*#{Regexp.escape(delimiter)}/){|match|
|
89
|
+
"#{match}#{csv_string_split[1]}#{delimiter}"
|
90
|
+
}
|
91
|
+
else
|
92
|
+
unless first
|
93
|
+
puts "ERROR - Differences in yaml: ADDED new definition for language: #{language} definition: #{csv_string_split[0]}"
|
94
|
+
multi_csv_string << "Additional for: #{language}"
|
95
|
+
end
|
96
|
+
multi_csv_string << "#{csv_string_line}\n"
|
97
|
+
end
|
98
|
+
}
|
99
|
+
puts "DONE for #{language}"
|
100
|
+
puts '----------------------------------------------'
|
101
|
+
puts ''
|
102
|
+
puts ''
|
103
|
+
first = false
|
104
|
+
end
|
105
|
+
|
106
|
+
File.open(ENV['out'], 'w') {|f| f.write(multi_csv_string) }
|
107
|
+
|
108
|
+
end
|
30
109
|
end
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phrase_assembler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
4
|
+
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 1
|
8
7
|
- 4
|
9
|
-
-
|
10
|
-
version: 1.4.
|
8
|
+
- 1
|
9
|
+
version: 1.4.1
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- "Lovro \xC5\xBDmak, Radan Skori\xC4\x87, Drap"
|
@@ -15,7 +14,7 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2011-
|
17
|
+
date: 2011-09-22 00:00:00 +02:00
|
19
18
|
default_executable:
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
@@ -26,7 +25,6 @@ dependencies:
|
|
26
25
|
requirements:
|
27
26
|
- - ">="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
28
|
segments:
|
31
29
|
- 0
|
32
30
|
version: "0"
|
@@ -75,7 +73,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
75
73
|
requirements:
|
76
74
|
- - ">="
|
77
75
|
- !ruby/object:Gem::Version
|
78
|
-
hash: 3
|
79
76
|
segments:
|
80
77
|
- 0
|
81
78
|
version: "0"
|
@@ -84,14 +81,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
81
|
requirements:
|
85
82
|
- - ">="
|
86
83
|
- !ruby/object:Gem::Version
|
87
|
-
hash: 3
|
88
84
|
segments:
|
89
85
|
- 0
|
90
86
|
version: "0"
|
91
87
|
requirements: []
|
92
88
|
|
93
89
|
rubyforge_project: nowarning
|
94
|
-
rubygems_version: 1.
|
90
|
+
rubygems_version: 1.3.7
|
95
91
|
signing_key:
|
96
92
|
specification_version: 3
|
97
93
|
summary: Gem for building phrases
|