notroff 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,7 +16,8 @@ class DocbookRenderer < Processor
16
16
  format( paragraph )
17
17
  end
18
18
  @book = Element.new('book')
19
- @book.add_namespace('http://docbook.org/ns/docbook')
19
+ @book.add_namespace( 'http://docbook.org/ns/docbook')
20
+ @book.add_namespace('xl', 'http://www.w3.org/1999/xlink')
20
21
  @book.add_attribute('version', '5.0')
21
22
  @book.add_element element_for('title', @title)
22
23
  @book.add_element element_for('author', @author)
@@ -135,11 +136,22 @@ class DocbookRenderer < Processor
135
136
  element.add_text( token.string )
136
137
  when :footnote
137
138
  element.add(footnote_for(token.string))
139
+ when :link
140
+ element.add(link_element_for(token.string))
138
141
  else
139
142
  raise "Dont know what to do with #{token}"
140
143
  end
141
144
  end
142
145
 
146
+ def link_element_for(link_token)
147
+ text, url = parse_link(link_token)
148
+ link = Element.new('link')
149
+ add_body_text(link, text)
150
+ link.add_attribute('xl:href', url)
151
+ link
152
+ end
153
+
154
+
143
155
  def footnote_for( text )
144
156
  fn = Element.new('footnote')
145
157
  fn.add_element(element_for('para', text))
@@ -71,11 +71,21 @@ class HtmlRenderer < Processor
71
71
  element.add_text(token.string)
72
72
  when :footnote
73
73
  add_body_text(" [#{token.string}] ", element)
74
+ when :link
75
+ element.add(anchor_element_for(token))
74
76
  else
75
77
  raise "Dont know what to do with type #{token[:type]} - #{token}"
76
78
  end
77
79
  end
78
80
 
81
+ def anchor_element_for(link_token)
82
+ text, url = parse_link(link_token)
83
+ anchor = Element.new('a')
84
+ add_body_text(text, anchor)
85
+ anchor.add_attribute('href', url)
86
+ anchor
87
+ end
88
+
79
89
  def code_element(type, text)
80
90
  element = Element.new('code')
81
91
  pre_element = Element.new('pre')
@@ -99,6 +99,10 @@ class OdtRenderer < Processor
99
99
  element.add_text( token.string )
100
100
  when :footnote
101
101
  element.add( footnote_for( token.string ) )
102
+ when :link
103
+ text, url = parse_link(token)
104
+ add_body_text(text, element)
105
+ element.add_text( " (#{url}) " )
102
106
  else
103
107
  raise "Dont know what to do with #{token}"
104
108
  end
@@ -3,7 +3,7 @@ require 'rexml/document'
3
3
  module Tokenize
4
4
  def tokenize_body_text( text )
5
5
  text = text.dup
6
- re = /\~\~.*?\~\~|\@\@.*?\@\@+|\{\{.*?\}\}|!!.*?!!/
6
+ re = /\~\~.*?\~\~|\@\@.*?\@\@+|\{\{.*?\}\}|!!.*?!!|\^\^.+\^\^/
7
7
  results = []
8
8
  until text.empty?
9
9
  match = re.match( text )
@@ -32,7 +32,13 @@ module Tokenize
32
32
  :footnote
33
33
  when /^!/
34
34
  :bold
35
- end
35
+ when /^\^/
36
+ :link
37
+ end
38
+ end
39
+
40
+ def parse_link(link_token)
41
+ link_token.split('->').map {|s| s.strip}
36
42
  end
37
43
 
38
44
  def token_text( token )
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notroff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: