phrase_assembler 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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 to_csv(file_name, options = {})
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},\"#{s.gsub('"', '""').gsub(/\r/, '').gsub(/\n/, '')}\"\n"
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(/\{\*[^\{\}\*\?]+\?[^\{\}\*:]+(:[^\{\}\*:]+)+\*\}/){|token|
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
- hash: 7
5
- prerelease:
4
+ prerelease: false
6
5
  segments:
7
6
  - 1
8
7
  - 4
9
- - 0
10
- version: 1.4.0
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-07-15 00:00:00 +02:00
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.4.2
90
+ rubygems_version: 1.3.7
95
91
  signing_key:
96
92
  specification_version: 3
97
93
  summary: Gem for building phrases