ydocx 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,11 @@
1
+ === 1.0.2 / 01.05.2012
2
+
3
+ * Improved tab handling at line head
4
+
5
+ === 1.0.1 / 01.05.2012
6
+
7
+ * Updated title chapter for frame
8
+
1
9
  === 1.0.0 / 01.05.2012
2
10
 
3
11
  * 1 major enhancement
data/README.txt CHANGED
@@ -16,6 +16,6 @@
16
16
  * nokogiri
17
17
  * htmlentities
18
18
 
19
- == License GPLv2.1
19
+ == License GPLv3.0
20
20
 
21
- * http://www.gnu.org/licenses/lgpl-2.1.html
21
+ * http://www.gnu.org/licenses/gpl.html
@@ -8,12 +8,13 @@ require 'docx2html/lib/docx2html/html_methods'
8
8
  module Docx2html
9
9
  class Parser
10
10
  include HtmlMethods
11
- attr_accessor :indecies, :result
11
+ attr_accessor :indecies, :result, :space
12
12
  def initialize(stream)
13
13
  @xml = Nokogiri::XML.parse(stream)
14
14
  @coder = HTMLEntities.new
15
15
  @indecies = []
16
16
  @result = []
17
+ @space = ' '
17
18
  init
18
19
  if block_given?
19
20
  yield self
@@ -73,7 +74,7 @@ module Docx2html
73
74
  nil # default no block element
74
75
  end
75
76
  def optional_escape(text)
76
- return text = ' ' if text.empty?
77
+ return text = @space if text.empty?
77
78
  text.force_encoding('utf-8')
78
79
  # NOTE
79
80
  # :named only for escape at Builder
@@ -146,18 +147,23 @@ module Docx2html
146
147
  end
147
148
  def parse_paragraph(node)
148
149
  paragraph = tag :p
150
+ line_head = true
151
+ pos = 0
149
152
  node.xpath('w:r').each do |r|
150
153
  unless r.xpath('w:t').empty?
151
154
  paragraph[:content] << parse_text(r)
155
+ pos += 1
152
156
  else
153
157
  unless r.xpath('w:tab').empty?
154
- if paragraph[:content].last != '&nbsp;' # as a space
158
+ if paragraph[:content].last != @space and pos != 0 # ignore tab at line head
155
159
  paragraph[:content] << optional_escape('')
160
+ pos += 1
156
161
  end
157
162
  end
158
163
  unless r.xpath('w:sym').empty?
159
164
  code = r.xpath('w:sym').first['char'].downcase # w:char
160
165
  paragraph[:content] << optional_replace(code)
166
+ pos += 1
161
167
  end
162
168
  end
163
169
  end
@@ -193,6 +199,7 @@ module Docx2html
193
199
  block
194
200
  else
195
201
  # inline tag
202
+ text = text.strip
196
203
  text = apply_align(rpr, text)
197
204
  unless rpr.xpath('w:u').empty?
198
205
  text = tag(:span, text, {:style => "text-decoration:underline;"})
data/lib/fachinfo.rb CHANGED
@@ -6,21 +6,24 @@ require 'cgi'
6
6
  module Docx2html
7
7
  class Parser
8
8
  private
9
+ def escape(text)
10
+ CGI.escape(text.gsub(/&(.)uml;/, '\1').gsub(/\s*\/\s*|\/|\s+/, '_').downcase)
11
+ end
9
12
  def parse_as_block(r, text)
10
- if r.parent.previous.nil?
13
+ if r.parent.previous.nil? and @indecies.empty?
11
14
  # The first line as package name
12
- link = tag(:a, text, {:href => ''})
13
- @indecies << tag(:h2, link)
14
- return tag(:h2, text)
15
+ id = escape('titel')
16
+ @indecies << {:text => 'Titel', :id => id}
17
+ return tag(:h2, text, {:id => id})
15
18
  end
16
19
  text = text.strip
17
20
  # TODO
18
21
  # Franzoesisch
19
22
  chapters = {
20
- 'Dos./Anw.' => /^Dosierung\s*\/\s*Anwendung/u, # 5
23
+ 'Dos./Anw.' => /^Dosierung\s*(\/|und)\s*Anwendung/u, # 5
21
24
  'Eigensch.' => /^Eigenschaften\s*\/\s*Wirkungen($|\s*\(\s*(ATC\-Code|Wirkungsmechanismus|Pharmakodyamik|Klinische\s+Wirksamkeit)\s*\)\s*$)|^Propri.t.s/iu, # 13
22
- 'Galen.Form' => /^Galenische\s+Form\s+und\s+Wirkstoffmenge\s+pro\s+Einheit$|^Forme\s*gal.nique/iu, # 3
23
- 'Ind./Anw.mögl.' => /^Indikationen(\s+|\s*\/\s*)Anwendungsm&ouml;glichkeiten$|^Indications/u, # 4
25
+ 'Galen.Form' => /^Galenische\s+Form\s*(und|\/)\s*Wirkstoffmenge\s+pro\s+Einheit$|^Forme\s*gal.nique/iu, # 3
26
+ 'Ind./Anw.mögl.' => /^Indikationen(\s+|\s*(\/|und)\s*)Anwendungsm&ouml;glichkeiten$|^Indications/u, # 4
24
27
  'Interakt.' => /^Interaktionen$|^Interactions/u, # 8
25
28
  'Kontraind.' => /^Kontraindikationen($|\s*\(\s*absolute\s+Kontraindikationen\s*\)$)/u, # 6
26
29
  'Name' => /^Name\s+des\s+Pr&auml;parates$/, # 1
@@ -28,7 +31,7 @@ module Docx2html
28
31
  'Präklin.' => /^Pr&auml;klinische\s+Daten$/u, # 15
29
32
  'Pharm.kinetik' => /^Pharmakokinetik($|\s*\((Absorption,\s*Distribution,\s*Metabolisms,\s*Elimination\s|Kinetik\s+spezieller\s+Patientengruppen)*\)$)|^Pharmacocin.tique?/iu, # 14
30
33
  'Sonstige H.' => /^Sonstige\s*Hinweise($|\s*\(\s*(Inkompatibilit&auml;ten|Beeinflussung\s*diagnostischer\s*Methoden|Haltbarkeit|Besondere\s*Lagerungshinweise|Hinweise\s+f&uuml;r\s+die\s+Handhabung)\s*\)$)|^Remarques/u, # 16
31
- 'Schwangerschaft' => /^Schwangerschaft(,\s*|\s*\/\s*)Stillzeit$/u, # 9
34
+ 'Schwangerschaft' => /^Schwangerschaft(,\s*|\s*\/\s*|\s+und\s+)Stillzeit$/u, # 9
32
35
  'Stand d. Info.' => /^Stand\s+der\s+Information$|^Mise\s+.\s+jour$/iu, # 20
33
36
  'Unerw.Wirkungen' => /^Unerw&uuml;nschte\s+Wirkungen$/u, # 11
34
37
  'Überdos.' => /^&Uuml;berdosierung$|^Surdosage$/u, # 12
@@ -40,7 +43,7 @@ module Docx2html
40
43
  }.each_pair do |chapter, regexp|
41
44
  if text =~ regexp
42
45
  next unless r.next.nil? # without line break
43
- id = CGI.escape(text.gsub(/&(.)uml;/, '\1').gsub(/\s*\/\s*|\/|\s+/, '_').downcase)
46
+ id = escape(text)
44
47
  @indecies << {:text => chapter, :id => id}
45
48
  return tag(:h3, text, {:id => id})
46
49
  end
@@ -53,19 +56,13 @@ module Docx2html
53
56
  @container = tag(:div, [], {:id => 'container'})
54
57
  end
55
58
  private
56
- def build_after_content
57
- link = tag(:a, 'Top', {:href => ''})
58
- tag(:div, link, {:id => 'footer'})
59
- end
60
59
  def build_before_content
61
60
  if @indecies
62
61
  indices = []
63
- if @indecies.first.has_key?(:tag) and @indecies.first[:tag] == :h2
64
- indices << @indecies.shift
65
- end
66
62
  @indecies.each do |index|
67
63
  if index.has_key?(:id)
68
- indices << tag(:li, tag(:a, index[:text], {:href => "#" + index[:id]}))
64
+ link = tag(:a, index[:text], {:href => "#" + index[:id]})
65
+ indices << tag(:li, link)
69
66
  end
70
67
  end
71
68
  tag(:div, tag(:ul, indices), {:id => 'indecies'})
@@ -99,19 +96,13 @@ div#indecies {
99
96
  }
100
97
  div#indecies ul {
101
98
  margin: 0;
102
- padding: 5px 0 0 25px;
99
+ padding: 25px 0 0 25px;
103
100
  }
104
101
  div#container {
105
102
  position: relative;
106
103
  padding: 5px 0 0 0;
107
104
  float: top left;
108
105
  margin: 0 0 0 200px;
109
- }
110
- div#footer {
111
- position: relative;
112
- float: bottom right;
113
- text-align: right;
114
- padding: 0 25px 0 0;
115
106
  }
116
107
  CSS
117
108
  if @style == :frame
@@ -130,7 +121,7 @@ body{
130
121
  }
131
122
  div#indecies {
132
123
  position: absolute;
133
- osition: fixed;
124
+ padding: 0;
134
125
  height: 100%;
135
126
  left: 0;
136
127
  top: 0;
@@ -140,9 +131,6 @@ div#container {
140
131
  padding: 0;
141
132
  height: 100%;
142
133
  overflow: auto;
143
- }
144
- div#footer {
145
- padding: 10px 30px 0 0;
146
134
  }
147
135
  FRAME
148
136
  end
data/lib/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # encoding: utf-8
3
3
 
4
4
  module Docx2html
5
- VERSION = "1.0.1"
5
+ VERSION = "1.0.2"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ydocx
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-05-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc
16
- requirement: &23006340 !ruby/object:Gem::Requirement
16
+ requirement: &16773920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.10'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *23006340
24
+ version_requirements: *16773920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: hoe
27
- requirement: &23005920 !ruby/object:Gem::Requirement
27
+ requirement: &16773500 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '2.13'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *23005920
35
+ version_requirements: *16773500
36
36
  description: ''
37
37
  email:
38
38
  - yasaka@ywesee.com, zdavatz@ywesee.com