ydocx 1.2.0 → 1.2.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.
@@ -1,4 +1,8 @@
1
- === 1.2.0 / 07..2012
1
+ === 1.2.1 / 11.07.2012
2
+
3
+ * Updated template, option handling for extension
4
+
5
+ === 1.2.0 / 07.07.2012
2
6
 
3
7
  * Added support for stand alone image parsing
4
8
  * Improved swissmedic number handling of fi format
@@ -4,5 +4,5 @@
4
4
  require 'ydocx/document'
5
5
 
6
6
  module YDocx
7
- VERSION = '1.2.0'
7
+ VERSION = '1.2.1'
8
8
  end
@@ -16,6 +16,7 @@ module YDocx
16
16
  @indecies = []
17
17
  @references = []
18
18
  @block = :div
19
+ @block_class = nil
19
20
  @files = Pathname.new('.')
20
21
  @style = false
21
22
  @title = ''
@@ -63,18 +64,20 @@ module YDocx
63
64
  def compile(contents, mode)
64
65
  result = ''
65
66
  headings = 0
67
+ block_start = (@block_class ? "<#{@block} class='#{@block_class}'>" : "<#{@block}>")
68
+ block_close = "</#{@block}>"
66
69
  contents.each do |element|
67
70
  if element[:tag].to_s =~ /^h[1-9]$/ # block
68
71
  if headings == 0
69
- result << "<#{@block}>"
72
+ result << block_start
70
73
  else
71
- result << "</#{@block}><#{@block}>"
74
+ result << "#{block_close}#{block_start}"
72
75
  end
73
76
  headings += 1
74
77
  end
75
78
  result << build_tag(element[:tag], element[:content], element[:attributes], mode)
76
79
  end
77
- result << "</#{@block}>"
80
+ result << block_close
78
81
  end
79
82
  def build_after_content
80
83
  nil
@@ -40,7 +40,7 @@ module YDocx
40
40
  def output_file(ext)
41
41
  @path.sub_ext(".#{ext.to_s}")
42
42
  end
43
- def to_html(file='', options={})
43
+ def to_html(output=false, options={})
44
44
  html = ''
45
45
  options = @options.merge(options)
46
46
  files = output_directory
@@ -54,32 +54,30 @@ module YDocx
54
54
 
55
55
  html = builder.build_html
56
56
  end
57
- unless file.empty?
57
+ if output
58
58
  create_files if has_image?
59
59
  html_file = output_file(:html)
60
60
  File.open(html_file, 'w:utf-8') do |f|
61
61
  f.puts html
62
62
  end
63
- else
64
- html
65
63
  end
64
+ html
66
65
  end
67
- def to_xml(file='', options={})
66
+ def to_xml(output=false, options={})
68
67
  xml = ''
69
68
  options = @options.merge(options)
70
69
  Builder.new(@contents) do |builder|
71
70
  builder.block = options.has_key?(:block) ? options[:block] : :chapter
72
71
  xml = builder.build_xml
73
72
  end
74
- unless file.empty?
73
+ if output
75
74
  xml_file = output_file(:xml)
76
75
  mkdir xml_file.parent
77
76
  File.open(xml_file, 'w:utf-8') do |f|
78
77
  f.puts xml
79
78
  end
80
- else
81
- xml
82
79
  end
80
+ xml
83
81
  end
84
82
  private
85
83
  def create_files
@@ -188,13 +188,7 @@ module YDocx
188
188
  rel.children.each do |r|
189
189
  if r['Id'] == id and r['Target']
190
190
  target = r['Target']
191
- source = @image_path + '/'
192
- if defined? Magick::Image and
193
- ext = File.extname(target).match(/\.wmf$/).to_a[0]
194
- source << File.basename(target, ext) + '.png'
195
- else
196
- source << File.basename(target)
197
- end
191
+ source = source_path(target)
198
192
  @images << {
199
193
  :origin => target,
200
194
  :source => source
@@ -208,6 +202,15 @@ module YDocx
208
202
  end
209
203
  nil
210
204
  end
205
+ def source_path(target)
206
+ source = @image_path + '/'
207
+ if defined? Magick::Image and
208
+ ext = File.extname(target).match(/\.wmf$/).to_a[0]
209
+ source << File.basename(target, ext) + '.png'
210
+ else
211
+ source << File.basename(target)
212
+ end
213
+ end
211
214
  def parse_paragraph(node)
212
215
  content = []
213
216
  if block = parse_block(node)
@@ -5,10 +5,11 @@ require 'cgi'
5
5
 
6
6
  module YDocx
7
7
  class Parser
8
- attr_reader :code
8
+ attr_accessor :code, :lang
9
9
  def init
10
10
  @image_path = 'image'
11
11
  @code = nil
12
+ @lang = 'DE'
12
13
  end
13
14
  private
14
15
  def chapters
@@ -31,7 +32,7 @@ module YDocx
31
32
  'Pharm.kinetik' => /^Pharmakokinetik($|\s*\((Absorption,\s*Distribution,\s*Metabolisms,\s*Elimination\s|Kinetik\s+spezieller\s+Patientengruppen)*\)$)|^Pharmacocin.tique?/iu, # 14
32
33
  'Pr&auml;klin.' => /^Pr&auml;klinische\s+Daten$/u, # 15
33
34
  '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
34
- 'Swissmedic-Nr.' => /^Zulassungsnummer(:|$|\s*\(\s*Swissmedic\s*\)$)/u, # 17
35
+ 'Swissmedic-Nr.' => /^Zulassungsnummer(n|:|$|\s*\(\s*Swissmedic\s*\)$)/u, # 17
35
36
  'Packungen' => /^Packungen($|\s*\(\s*mit\s+Angabe\s+der\s+Abgabekategorie\s*\)$)/u, # 18
36
37
  'Reg.Inhaber' => /^Zulassungsinhaberin($|\s*\(\s*Firma\s+und\s+Sitz\s+gem&auml;ss\s*Handelsregisterauszug\s*\))/u, # 19
37
38
  'Stand d. Info.' => /^Stand\s+der\s+Information$|^Mise\s+.\s+jour$/iu, # 20
@@ -49,6 +50,19 @@ module YDocx
49
50
  nil
50
51
  end
51
52
  end
53
+ def parse_heading(text, id)
54
+ return markup(:h2, text, {:id => id})
55
+ end
56
+ def parse_title(node, text)
57
+ if @indecies.empty? and !text.empty? and
58
+ (node.previous.inner_text.strip.empty? or node.parent.previous.nil?)
59
+ # The first line as package name
60
+ @indecies << {:text => 'Titel', :id => 'titel'}
61
+ return markup(:h1, text, {:id => 'titel'})
62
+ else
63
+ return nil
64
+ end
65
+ end
52
66
  def parse_block(node)
53
67
  text = node.inner_text.strip
54
68
  text = optional_escape text
@@ -58,15 +72,13 @@ module YDocx
58
72
  # next if !node.previous.inner_text.empty? and !node.next.inner_text.empty?
59
73
  id = escape_id(chapter)
60
74
  @indecies << {:text => chapter, :id => id}
61
- return markup(:h3, text, {:id => id})
75
+ return parse_heading(text, id)
62
76
  elsif parse_code(text)
63
77
  return nil
64
78
  end
65
79
  end
66
- if @indecies.empty? and !text.empty? and node.parent.previous.nil?
67
- # The first line as package name
68
- @indecies << {:text => 'Titel', :id => 'titel'}
69
- return markup(:h2, text, {:id => 'titel'})
80
+ if title = parse_title(node, text)
81
+ return title
70
82
  end
71
83
  return nil
72
84
  end
@@ -205,6 +217,8 @@ div#container {
205
217
  # now returns just true
206
218
  true
207
219
  end
220
+ def optional_copy(source_path)
221
+ end
208
222
  # NOTE
209
223
  # Image reference option
210
224
  # Currently, this supports only all images or first one reference.
@@ -220,6 +234,7 @@ div#container {
220
234
  else
221
235
  copy_or_convert(origin_path, source_path)
222
236
  end
237
+ optional_copy(source_path)
223
238
  end
224
239
  def prepare_reference
225
240
  ARGV.reverse.each do |arg|
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.2.0
4
+ version: 1.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-06 00:00:00.000000000 Z
12
+ date: 2012-07-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc
16
- requirement: &12401440 !ruby/object:Gem::Requirement
16
+ requirement: &6667440 !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: *12401440
24
+ version_requirements: *6667440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: hoe
27
- requirement: &12400980 !ruby/object:Gem::Requirement
27
+ requirement: &6667000 !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: *12400980
35
+ version_requirements: *6667000
36
36
  description: ''
37
37
  email:
38
38
  - yasaka@ywesee.com, zdavatz@ywesee.com