xmlconv 1.0.8 → 1.0.9

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 27ef4826f4fd76c4a54f711ca88fb0fe069351f6
4
- data.tar.gz: 80a90b6ee5f8c2e6c95c9e6a8a29d6113d9c775c
3
+ metadata.gz: 853b6b5baf72454d6fdf78f7377a6d94e4129a31
4
+ data.tar.gz: 05873a7b6ff4476bbf1c9564d8c9a06a4c5c3ab3
5
5
  SHA512:
6
- metadata.gz: e00f9c46f17998846bf4f94b1e99576791a68620488aa286df16974d4005880c451c799ab91732265b4ea92ba2c835ac991988024d9d543220b69243902cad72
7
- data.tar.gz: 03e599d19d269f249c8f09a41361b306ba04cf80ea532921af3f7b819c15f9114d029b4a60da764f23b10b03204aa495d6d43ce78ecd07154d1cae20ba218a2b
6
+ metadata.gz: c9c8addf5d4a2efbd5660b0b15b8d68278e3fa22d588a4317059a089f2a8d68afc6c9a6bae14a6b9d1289de22d99e19889fbb54d0be0ad2a727cffc3edba40ab
7
+ data.tar.gz: bacc37b66f1ae54143cdf0dc6f3aff102013c8fd823bccb50ac486d8cb5d1f8c82d172c768dfc342cc8e6637ea4908cb3177eea857fd6961177d56903cd8ea19
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ Gemfile.lock
2
+
3
+ /.bundle
4
+ /pkg
data/History.txt CHANGED
@@ -1,3 +1,13 @@
1
+ === 1.0.9 / 25.07.2016
2
+
3
+ * Fix encoding issue for incoming request
4
+ * Fix encoding issue on preformatted view
5
+ * Add charset in http response header and meta tag (UI)
6
+
7
+ === 1.0.8 / 13.07.2016
8
+
9
+ * Fix base_url as non-flavoerd url
10
+
1
11
  === 1.0.7 / 21.06.2016
2
12
 
3
13
  * Made it work running via mod_ruby with Ruby 1.8.6
File without changes
data/bin/xmlconv_admin CHANGED
File without changes
@@ -26,7 +26,9 @@ module XmlConv
26
26
  reader_instance = Conversion.const_get(@reader)
27
27
  writer_instance = Conversion.const_get(@writer)
28
28
  @start_time = Time.now
29
- input_model = reader_instance.parse(@input)
29
+ @input = encode(@input)
30
+ @input.gsub!(/\t+|\s+/, ' ')
31
+ input_model = reader_instance.parse(@input)
30
32
  @arguments ||= []
31
33
  @model = reader_instance.convert(input_model, *@arguments)
32
34
  output_model = writer_instance.convert(@model, *@arguments)
@@ -37,6 +39,24 @@ module XmlConv
37
39
  ensure
38
40
  @destination.forget_credentials!
39
41
  end
42
+
43
+ # Assumes its encoding once as ISO-8859-1 (latin1) at here,
44
+ # Because input_body is passed from ruby 1.8.6
45
+ def encode(input_body)
46
+ src = input_body.to_s
47
+ begin
48
+ # ISO-8859-1 (latin1) and WINDOWS-1252
49
+ src.encode('ISO-8859-1').force_encoding('UTF-8')
50
+ rescue Encoding::InvalidByteSequenceError,
51
+ Encoding::UndefinedConversionError
52
+ begin
53
+ src.force_encoding('ISO-8859-1').encode('UTF-8')
54
+ rescue
55
+ src
56
+ end
57
+ end
58
+ end
59
+
40
60
  def invoice_ids
41
61
  @model.invoices.collect do |inv|
42
62
  inv.invoice_id.last.to_s.gsub /^0+/, ''
@@ -1,3 +1,3 @@
1
1
  module XmlConv
2
- VERSION = '1.0.8'
2
+ VERSION = '1.0.9'
3
3
  end
@@ -4,51 +4,74 @@
4
4
  require 'htmlgrid/value'
5
5
 
6
6
  module XmlConv
7
- module View
8
- BREAK_WIDTH = 65
9
- class Preformatted < HtmlGrid::Value
7
+ module View
8
+ class Preformatted < HtmlGrid::Value
9
+ BREAK_WIDTH = 65
10
+
10
11
  def init
11
12
  super
12
- pretty = ''
13
- if(@value)
14
- raw = @value.gsub(/>\s+</, "><").gsub(/\r\n?/, "\n")
15
- begin
16
- pretty = CGI.pretty(raw)
17
- rescue
18
- pretty = raw
13
+ if @value
14
+ raw = @value.gsub(/>\s+</, '><').gsub(/\t|\r\n?/, '')
15
+ # fix encoding
16
+ if raw =~ /ISO\-8859\-1|WINDOWS\-1252/i
17
+ raw.force_encoding(Encoding::ISO_8859_1)
19
18
  end
20
- wrap = ''
21
- pretty.each_line { |line|
22
- if(line.length < BREAK_WIDTH)
23
- wrap << line
24
- else
25
- indent = line[/^ +/].to_s
26
- indent = indent[0,indent.length % (BREAK_WIDTH / 3)]
27
- tmpparts = line.split(/(?<=") +(?=")/)
28
- parts = []
29
- tmpparts.each { |part|
30
- if(part.length > BREAK_WIDTH)
31
- parts.concat(part.split(/ /))
32
- else
33
- parts.push(part)
34
- end
19
+ raw.encode!(Encoding::UTF_8).force_encoding(Encoding::UTF_8)
20
+ @value = <<~PRE
21
+ <pre>#{
22
+ cgi_with_utf8 {
23
+ # prettify (indent)
24
+ pretty = begin CGI.pretty(raw); rescue raw; end
25
+ # omit tags
26
+ CGI.escapeHTML(wrap(pretty))
35
27
  }
36
- wrapline = parts.shift
37
- while(part = parts.shift)
38
- if((wrapline.length + part.length) >= BREAK_WIDTH)
39
- wrap << wrapline
40
- wrap << "\n"
41
- wrapline = indent.dup << (' ' * 5) << part
42
- else
43
- wrapline << ' ' << part
44
- end
28
+ }</pre>
29
+ PRE
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def wrap(pretty)
36
+ wrapped = ''
37
+ pretty.each_line { |line|
38
+ if line.length < BREAK_WIDTH
39
+ wrapped << line
40
+ else
41
+ indent = line[/^ +/].to_s
42
+ indent = indent[0,indent.length % (BREAK_WIDTH / 3)]
43
+ tmpparts = line.split(/(?<=") +(?=")/)
44
+ parts = []
45
+ tmpparts.each { |part|
46
+ if part.length > BREAK_WIDTH
47
+ parts.concat(part.split(/ /))
48
+ else
49
+ parts.push(part)
50
+ end
51
+ }
52
+ wrapline = parts.shift
53
+ while part = parts.shift
54
+ if (wrapline.length + part.length) >= BREAK_WIDTH
55
+ wrapped << wrapline
56
+ wrapped << "\n"
57
+ wrapline = indent.dup << (' ' * 5) << part
58
+ else
59
+ wrapline << ' ' << part
45
60
  end
46
- wrap << wrapline
47
61
  end
48
- }
49
- @value = CGI.escapeHTML(wrap)
50
- end
62
+ wrapped << wrapline
63
+ end
64
+ }
65
+ wrapped
66
+ end
67
+
68
+ def cgi_with_utf8
69
+ orig_verbose = $VERBOSE
70
+ $VERBOSE = nil
71
+ result = yield
72
+ $VERBOSE = orig_verbose
73
+ result
51
74
  end
52
- end
53
- end
75
+ end
76
+ end
54
77
  end
@@ -5,13 +5,20 @@ require 'htmlgrid/divtemplate'
5
5
  require 'xmlconv/view/foot'
6
6
 
7
7
  module XmlConv
8
- module View
9
- class Template < HtmlGrid::DivTemplate
10
- COMPONENTS = {
11
- [0,0] => :content,
12
- [0,1] => :foot,
13
- }
14
- FOOT = Foot
15
- end
16
- end
8
+ module View
9
+ class Template < HtmlGrid::DivTemplate
10
+ HTTP_HEADERS = {
11
+ 'Content-Type' => 'text/html;charset=UTF-8'
12
+ }
13
+ META_TAGS = [{
14
+ 'http-equiv' => 'content-type',
15
+ 'content' => 'tex/html;charset=UTF-8'
16
+ }]
17
+ COMPONENTS = {
18
+ [0, 0] => :content,
19
+ [0, 1] => :foot,
20
+ }
21
+ FOOT = Foot
22
+ end
23
+ end
17
24
  end
@@ -23,7 +23,8 @@ module XmlConv
23
23
  def test_base_url_does_not_include_flavor
24
24
  lookandfeel = Lookandfeel.new(@session)
25
25
  assert_equal('sbsm', lookandfeel.flavor)
26
- refute_match(lookandfeel.base_url, @session.flavor)
26
+ assert_equal('sbsm', @session.flavor)
27
+ refute_match(@session.flavor, lookandfeel.base_url)
27
28
  end
28
29
  end
29
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xmlconv
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masaomi Hatakeyama, Zeno R.R. Davatz, Niklaus Giger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-13 00:00:00.000000000 Z
11
+ date: 2016-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: odba
@@ -313,6 +313,7 @@ executables:
313
313
  extensions: []
314
314
  extra_rdoc_files: []
315
315
  files:
316
+ - ".gitignore"
316
317
  - Gemfile
317
318
  - History.txt
318
319
  - LICENSE