linguara 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.0.7
data/lib/linguara.rb CHANGED
@@ -18,16 +18,26 @@ module Linguara
18
18
  yield(configuration)
19
19
  end
20
20
 
21
- # Use this method in your controller to accepr and save incoming translations
22
- def accept_translation(translation)
23
- target_language = translation[:target_language]
24
- translation[:paragraphs].each do |key,value|
25
- class_name,id,order,field_name = key.split('_')
21
+ # Use this method in your controller to accept and save incoming translations
22
+ def accept_translation(body, params)
23
+ #raise ActiveRecord::StatementInvalid, 'Authorization data is missing or invalid' #TODO
24
+ raise 'Malformed request body' if params[:translation].blank?
25
+ target_language = params[:translation][:target_language]
26
+
27
+ doc = Nokogiri::XML(body)
28
+
29
+ paragraphs = doc.xpath('/translation/completed_translation/content/paragraph')
30
+ paragraphs.each do |p|
31
+ log("DOC: #{p.attribute('id')} --- #{p.inner_html}")
32
+ key = p.attribute('id').to_s
33
+ value = p.inner_html.to_s
34
+
35
+ linguara_name, class_name,id,order,field_name = key.split('_')
26
36
  original_locale = I18n.locale
27
37
  element = class_name.constantize.find(id)
28
38
 
29
39
  I18n.locale = target_language
30
- element.send("#{field_name}=", value.gsub(/<p>(.*?)<\/p>/, "\\1\n") )
40
+ element.send("#{field_name}=", value.gsub(/<p>(.*?)<\/p>/, "\\1\n") ).gsub(/<br {0,1}\/{0,1}>/, "\n")
31
41
  element.save(false)
32
42
  I18n.locale = original_locale
33
43
  end
@@ -49,19 +59,19 @@ module Linguara
49
59
  # Sends languages request
50
60
  def send_languages_request(options={})
51
61
  url= URI.parse("#{Linguara.configuration.server_path}api/languages.xml")
52
- send_linguara_request(url, :get)
62
+ send_linguara_request(url, :get, options_to_xml(options))
53
63
  end
54
64
 
55
65
  # Sends specializations request
56
66
  def send_specializations_request(options = {})
57
67
  url= URI.parse("#{Linguara.configuration.server_path}api/specializations.xml")
58
- send_linguara_request(url, :get)
68
+ send_linguara_request(url, :get, options_to_xml(options))
59
69
  end
60
70
 
61
71
  # Sends translators request
62
72
  def send_translators_request(options = {})
63
73
  url= URI.parse("#{Linguara.configuration.server_path}api/translators.xml")
64
- send_linguara_request(url, :get)
74
+ send_linguara_request(url, :get, options_to_xml(options))
65
75
  end
66
76
 
67
77
  def available_languages
@@ -3,10 +3,9 @@ class Translation
3
3
  attr_accessor :translation_hash, :element
4
4
 
5
5
  def initialize(element,options = {})
6
- unless options[:due_date]
7
- options[:due_date] ||= Date.today + Linguara.configuration.request_valid_for.to_i.days unless Linguara.configuration.request_valid_for.blank?
8
- options[:due_date] ||= Date.today + 1.month
9
- end
6
+ options[:translation] ||= {}
7
+ options[:translation][:due_date] ||= Date.today + Linguara.configuration.request_valid_for.to_i.days unless Linguara.configuration.request_valid_for.blank?
8
+ options[:translation][:due_date] ||= Date.today + 1.month
10
9
  options[:return_url] ||= Linguara.configuration.return_url
11
10
  options[:source_language] ||= I18n.locale.to_s
12
11
  self.element = element#.fields_to_send
@@ -15,7 +14,7 @@ class Translation
15
14
 
16
15
  def to_hash
17
16
  ret = {}
18
- ret[:translation] = self.translation_hash
17
+ ret[:request] = self.translation_hash
19
18
  ret
20
19
  end
21
20
 
@@ -23,14 +22,14 @@ class Translation
23
22
  builder_options[:indent] ||= 2
24
23
  xml = builder_options[:builder] ||= Builder::XmlMarkup.new(:indent => builder_options[:indent])
25
24
  xml.instruct! unless builder_options[:skip_instruct]
26
- xml.translation do
25
+ xml.request do
27
26
  self.translation_hash.merge(options).each_pair do |k, v|
28
27
  next if k.blank? or v.blank?
29
28
  tag_element(xml, k, v)
30
29
  end
31
- xml.content :type => 'xml' do
30
+ xml.content :type => 'html' do
32
31
  self.element.fields_to_send.each_pair do |k, v|
33
- xml.paragraph v, :id => k
32
+ xml.paragraph(:id => k) {|x| x << v}
34
33
  end
35
34
  end
36
35
  end
@@ -40,6 +39,7 @@ class Translation
40
39
 
41
40
  def to_xml_recursive(xml, object)
42
41
  object.each_pair do |k, v|
42
+ next if k.blank? or v.blank?
43
43
  tag_element(xml, k, v)
44
44
  end
45
45
  end
@@ -5,5 +5,37 @@ module Linguara
5
5
  data = data.each_pair { |k,v| v.is_a?(Hash) ? (strip_blank_attributes(v)) : (v) }
6
6
  data.delete_if { |k,v| v.blank?}
7
7
  end
8
+
9
+ def options_to_xml(options)
10
+ return '' if options.blank?
11
+ xml = Builder::XmlMarkup.new
12
+ xml.request do
13
+ options.each_pair do |k, v|
14
+ next if k.blank? or v.blank?
15
+ tag_element(xml, k, v)
16
+ end
17
+ end
18
+ return xml.target!
19
+ end
20
+
21
+ private
22
+
23
+ def options_to_xml_recursive(xml, object)
24
+ object.each_pair do |k, v|
25
+ next if k.blank? or v.blank?
26
+ tag_element(xml, k, v)
27
+ end
28
+ end
29
+
30
+ def tag_element(builder, k, v)
31
+ if v.kind_of?(Hash)
32
+ builder.tag!(k) do
33
+ options_to_xml_recursive(builder, v)
34
+ end
35
+ else
36
+ builder.tag!(k, v)
37
+ end
38
+ end
39
+
8
40
  end
9
41
  end
data/linguara.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{linguara}
8
- s.version = "0.0.6"
8
+ s.version = "0.0.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Aleksander Dabrowski", "Piotr Barczuk"]
12
- s.date = %q{2010-08-11}
12
+ s.date = %q{2010-08-24}
13
13
  s.description = %q{Gem to integrate with linguara api}
14
14
  s.email = %q{aleks@kumulator.pl}
15
15
  s.extra_rdoc_files = [
@@ -18,13 +18,7 @@ describe "Linguara" do
18
18
  blog_post.save
19
19
  id = blog_post.id
20
20
  lambda {
21
- Linguara.accept_translation(
22
- :paragraphs => {
23
- "BlogPost_#{id}_0_title" => "Hello World!",
24
- "BlogPost_#{id}_1_body" => "Today is great weather, and I am going to EuRuKo."
25
- },
26
- :source_language =>"pl",
27
- :target_language =>"en"
21
+ Linguara.accept_translation("<translation><completed_translation><content><paragraph id='linguara_BlogPost_#{id}_0_body'>Today is great weather, and I am going to EuRuKo.</paragraph><paragraph id='linguara_BlogPost_#{id}_0_title'>Hello World!</paragraph></content></completed_translation></translation>", {:translation => { :source_language =>"pl", :target_language =>"en"}}
28
22
  )
29
23
  }.should change(BlogPost, :count).by(0)
30
24
  translation = BlogPost.last
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linguara
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 6
10
- version: 0.0.6
9
+ - 7
10
+ version: 0.0.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - Aleksander Dabrowski
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-08-11 00:00:00 +02:00
19
+ date: 2010-08-24 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency