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.
@@ -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