docgenerator 2.1.0 → 2.1.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.
- checksums.yaml +7 -0
- data/examples/creole_example.rb +0 -1
- data/examples/creole_example_new_plugin.rb +51 -0
- data/examples/creole_example_tabular.rb +3 -1
- data/examples/wiki2docgenerator_example.rb +2 -2
- data/lib/creole/creole2doc.rb +697 -680
- data/lib/creole/creole_characters.rb +90 -26
- data/lib/creole/creole_inclusion_and_plugins.rb +25 -43
- data/lib/creole/creole_inclusions.rb +87 -75
- data/lib/creole/creole_placeholder.rb +87 -89
- data/lib/creole/creole_plugins.rb +149 -117
- data/lib/creole/creole_tabular.rb +247 -141
- data/lib/creole/plugins/todonotes.rb +48 -48
- data/lib/docgenerator/characters.rb +106 -8
- data/lib/docgenerator/compatibility_v1.rb +7 -1
- data/lib/docgenerator/document.rb +34 -19
- data/lib/docgenerator/element.rb +1 -0
- data/lib/docgenerator/element_meta.rb +1 -1
- data/lib/docgenerator/elements.rb +594 -535
- data/lib/docgenerator/environments.rb +131 -99
- data/lib/docgenerator/index.rb +110 -0
- data/lib/docgenerator/lists.rb +2 -1
- data/lib/docgenerator/packages/caption.rb +32 -34
- data/lib/docgenerator/packages/hyperref.rb +1 -0
- data/lib/docgenerator/packages/multicol.rb +3 -2
- data/lib/docgenerator/packages/pdfpages.rb +71 -20
- data/lib/docgenerator/packages/scrpage2.rb +99 -142
- data/lib/docgenerator/packages/url.rb +75 -81
- data/lib/docgenerator/sections.rb +98 -98
- data/lib/docgenerator/standard.rb +8 -1
- data/lib/docgenerator/tabular.rb +44 -25
- data/lib/docgenerator/templates/docgenerator_template.yaml +28 -0
- data/lib/docgenerator/version.rb +146 -0
- data/lib/docgenerator.rb +20 -15
- data/meta_test_and_doc/build_doc.rb +39 -10
- data/meta_test_and_doc/build_test.rb +34 -12
- data/meta_test_and_doc/manpages/characters.rb +452 -20
- data/meta_test_and_doc/manpages/elementlist.rb +304 -0
- data/meta_test_and_doc/manpages/elements.rb +305 -42
- data/meta_test_and_doc/manpages/others.rb +403 -0
- data/meta_test_and_doc/manpages/pdfpages.rb +117 -18
- data/meta_test_and_doc/manpages/readme.rdoc +3 -1
- data/meta_test_and_doc/manpages/scrpage2.rb +0 -80
- data/meta_test_and_doc/manpages/tables.rb +6 -6
- data/readme.rdoc +11 -120
- data/unittest/expected/test_comment.html +1 -0
- data/unittest/expected/test_comment.latex +5 -0
- data/unittest/expected/test_comment_complex.html +3 -0
- data/unittest/expected/test_comment_complex.latex +15 -0
- data/unittest/expected_creole/test_creole_characters_all.html +6 -5
- data/unittest/expected_creole/test_creole_characters_all.latex +10 -8
- data/unittest/expected_creole/test_creole_creole1.0test.latex +5 -5
- data/unittest/expected_creole/test_creole_input.normsource +11 -9
- data/unittest/expected_creole/test_creole_list_ul.normsource +57 -51
- data/unittest/expected_creole/test_creole_list_ulul_without_ul.html +6 -0
- data/unittest/expected_creole/test_creole_list_ulul_without_ul.latex +12 -0
- data/unittest/expected_creole/test_creole_paragraphs.normsource +12 -10
- data/unittest/expected_creole/test_creole_pictures.latex +2 -2
- data/unittest/expected_creole/test_creole_pictures_css.latex +2 -2
- data/unittest/expected_creole/test_creole_pictures_imgclass.latex +2 -2
- data/unittest/expected_creole/test_creole_pictures_width.latex +1 -1
- data/unittest/expected_creole/test_creole_tabular.latex +3 -3
- data/unittest/expected_creole/test_creole_tabular_creole.latex +2 -2
- data/unittest/expected_creole/test_creole_tabular_css.latex +3 -3
- data/unittest/expected_creole/test_creole_tabular_row_parameters.latex +22 -0
- data/unittest/expected_templates/test_standalone.tex +34 -0
- data/unittest/expected_wikimedia/test_wiki_picture.latex +12 -12
- data/unittest/unittest_creole.rb +22 -3
- data/unittest/unittest_creole_tabular.rb +34 -1
- data/unittest/unittest_docgenerator.rb +46 -3
- data/unittest/unittest_docgenerator_characters.rb +527 -82
- data/unittest/unittest_templates.rb +1 -1
- metadata +149 -108
@@ -6,6 +6,10 @@ This document is UTF-8-encoded.
|
|
6
6
|
A side effect: Hanna/Rdoc will not add this code to the documentation.
|
7
7
|
=end
|
8
8
|
|
9
|
+
#
|
10
|
+
# Fixme: Add unicode-codepoints
|
11
|
+
#
|
12
|
+
|
9
13
|
|
10
14
|
#
|
11
15
|
module Docgenerator
|
@@ -37,7 +41,65 @@ Attributes are not defined for this element.
|
|
37
41
|
add_text_output ''
|
38
42
|
add_creole_output '{{shy}}'
|
39
43
|
end #Shy
|
44
|
+
=begin rdoc
|
45
|
+
Define Element ZeroWidthSpace
|
46
|
+
|
47
|
+
Create an instance with
|
48
|
+
element( :zerowidthspace )
|
49
|
+
or
|
50
|
+
ZeroWidthSpace.new( )
|
51
|
+
Attributes are not defined for this element.
|
52
|
+
|
53
|
+
See http://stackoverflow.com/questions/5038920/html-soft-hypen-shy-without-dash
|
54
|
+
=end
|
55
|
+
class ZeroWidthSpace < Element
|
56
|
+
has_no_content false
|
57
|
+
add_html_output '​'
|
58
|
+
add_latex_output '""'
|
59
|
+
add_text_output ''
|
60
|
+
#~ add_creole_output '{{-}}'
|
61
|
+
end #ZeroWidthSpace
|
62
|
+
|
63
|
+
=begin rdoc
|
64
|
+
Define Element :thinsp
|
65
|
+
|
66
|
+
Small space in text
|
67
|
+
|
68
|
+
Create an instance with
|
69
|
+
element( :thinsp )
|
70
|
+
or
|
71
|
+
thinsp.new( )
|
72
|
+
Attributes are not defined for this element.
|
73
|
+
|
74
|
+
See http://stackoverflow.com/questions/5038920/html-soft-hypen-shy-without-dash
|
75
|
+
for usage as Soft hypen (­) without dash.
|
76
|
+
=end
|
77
|
+
class Thinsp < Element
|
78
|
+
has_no_content false
|
79
|
+
add_html_output ' '
|
80
|
+
add_latex_output '\,'
|
81
|
+
add_text_output ''
|
82
|
+
add_creole_output '{{thinsp}}'
|
83
|
+
end #thinsp
|
84
|
+
=begin rdoc
|
85
|
+
Define Element :wbr
|
86
|
+
|
87
|
+
optionalen line break, no separator.
|
40
88
|
|
89
|
+
Create an instance with
|
90
|
+
element( :wbr )
|
91
|
+
or
|
92
|
+
Wbr.new( )
|
93
|
+
Attributes are not defined for this element.
|
94
|
+
=end
|
95
|
+
class Wbr < Element
|
96
|
+
has_no_content false
|
97
|
+
add_html_output '&wbr;'
|
98
|
+
add_latex_output '""'
|
99
|
+
add_text_output '' #​
|
100
|
+
add_creole_output '{{wbr}}'
|
101
|
+
end #Wbr
|
102
|
+
|
41
103
|
=begin rdoc
|
42
104
|
Define Element :space, :ensp
|
43
105
|
|
@@ -382,7 +444,7 @@ Attributes are not defined for this element.
|
|
382
444
|
add_id :<=
|
383
445
|
has_no_content false
|
384
446
|
add_html_output '⇐'
|
385
|
-
add_latex_output '\ensuremath{\
|
447
|
+
add_latex_output '\ensuremath{\Leftarrow}'
|
386
448
|
add_text_output '<='
|
387
449
|
add_creole_output '<='
|
388
450
|
end #Larr
|
@@ -476,6 +538,23 @@ Attributes are not defined for this element.
|
|
476
538
|
end #Lt
|
477
539
|
|
478
540
|
=begin rdoc
|
541
|
+
Define Element :ll, :<<
|
542
|
+
|
543
|
+
Create an instance with
|
544
|
+
element( :l< )
|
545
|
+
element( :<< )
|
546
|
+
or
|
547
|
+
Ll.new( )
|
548
|
+
Attributes are not defined for this element.
|
549
|
+
=end
|
550
|
+
class Ll < Element
|
551
|
+
add_id :<<
|
552
|
+
has_no_content false
|
553
|
+
add_html_output '«'
|
554
|
+
add_latex_output '\ll '
|
555
|
+
add_text_output '<<'
|
556
|
+
end #Lt
|
557
|
+
=begin rdoc
|
479
558
|
Define Element :gt, :>
|
480
559
|
|
481
560
|
Create an instance with
|
@@ -493,6 +572,24 @@ Attributes are not defined for this element.
|
|
493
572
|
add_text_output '>'
|
494
573
|
end #Gt
|
495
574
|
|
575
|
+
=begin rdoc
|
576
|
+
Define Element :gg, :>>
|
577
|
+
|
578
|
+
Create an instance with
|
579
|
+
element( :gg )
|
580
|
+
element( :>> )
|
581
|
+
or
|
582
|
+
Gg.new( )
|
583
|
+
Attributes are not defined for this element.
|
584
|
+
=end
|
585
|
+
class Gg < Element
|
586
|
+
add_id :>>
|
587
|
+
has_no_content false
|
588
|
+
add_html_output '»'
|
589
|
+
add_latex_output '\gg '
|
590
|
+
add_text_output '>>'
|
591
|
+
end #Gt
|
592
|
+
|
496
593
|
=begin rdoc
|
497
594
|
Define Element :infin, :infty
|
498
595
|
|
@@ -755,6 +852,7 @@ Attributes are not defined for this element.
|
|
755
852
|
has_no_content false
|
756
853
|
add_html_output '„'
|
757
854
|
add_latex_output '\glqq '
|
855
|
+
add_text_output '„'
|
758
856
|
add_wiki_output '„'
|
759
857
|
add_creole_output '„'
|
760
858
|
end #Bdquo
|
@@ -770,11 +868,10 @@ Attributes are not defined for this element.
|
|
770
868
|
=end
|
771
869
|
class Leftdoublequotemark < Element
|
772
870
|
add_id :ldquo
|
773
|
-
add_id :grqq
|
774
871
|
has_no_content false
|
775
872
|
add_html_output '“'
|
776
|
-
add_latex_output '\
|
777
|
-
add_text_output '
|
873
|
+
add_latex_output '\lq\lq{}'
|
874
|
+
add_text_output '“'
|
778
875
|
add_wiki_output '“'
|
779
876
|
add_creole_output '“'
|
780
877
|
end #Ldquo
|
@@ -790,12 +887,13 @@ Attributes are not defined for this element.
|
|
790
887
|
=end
|
791
888
|
class Rightdoublequotemark < Element
|
792
889
|
add_id :rdquo
|
793
|
-
add_id :
|
890
|
+
add_id :grqq
|
794
891
|
has_no_content false
|
795
892
|
add_html_output '”'
|
796
|
-
add_latex_output '\
|
797
|
-
add_text_output ''
|
798
|
-
|
893
|
+
add_latex_output '\grqq '
|
894
|
+
add_text_output '”'
|
895
|
+
add_wiki_output '”'
|
896
|
+
add_creole_output '”'
|
799
897
|
end #Rdquo
|
800
898
|
|
801
899
|
=begin rdoc
|
@@ -102,12 +102,18 @@ This code is obsolete.
|
|
102
102
|
Please use Element.create_convert_to_code to get a template to replace your Element#create.
|
103
103
|
=end
|
104
104
|
def self.create( name, attr = {}, content = false, output = {} )
|
105
|
-
|
105
|
+
if @@ids[name]
|
106
|
+
DOCGENERATOR_LOGGER.error("Element.create for existing #{name.inspect} called -> ignored") if DOCGENERATOR_LOGGER.error?
|
107
|
+
return
|
108
|
+
else
|
109
|
+
DOCGENERATOR_LOGGER.warn("Element.create for #{name.inspect} called -> to be replaced") if DOCGENERATOR_LOGGER.warn?
|
110
|
+
end
|
106
111
|
create_convert_to_code( [name].flatten, attr, content, output ) if DOCGENERATOR_LOGGER.warn?
|
107
112
|
#First some checks
|
108
113
|
if ! attr.kind_of?( Hash )
|
109
114
|
raise "Type error Element.create: Expected Hash, get #{attr.class}"
|
110
115
|
end
|
116
|
+
|
111
117
|
#Generic class creation
|
112
118
|
elementclass = Class.new( Element )
|
113
119
|
#Add the id of the new class to central collection.
|
@@ -99,7 +99,7 @@ The templates refer to the corresponding TeX-classes.
|
|
99
99
|
|
100
100
|
settings.each{|key, value|
|
101
101
|
case key
|
102
|
-
when :title, :shorttitle, :author, :date, :keywords, :description, :creator, :language
|
102
|
+
when :title, :shorttitle, :subtitle, :author, :date, :location, :keywords, :description, :creator, :language
|
103
103
|
self.send("#{key}=".to_sym, value)
|
104
104
|
#~ when :odp, :pdf, :amazon #VALID_META_TAGS
|
105
105
|
when *VALID_META_TAGS.map{|mkey|mkey.to_sym}
|
@@ -136,13 +136,14 @@ The templates refer to the corresponding TeX-classes.
|
|
136
136
|
@body << element(:maketitle ).cr if settings[key]
|
137
137
|
when :latex_options
|
138
138
|
add_option(value)
|
139
|
-
when :log
|
139
|
+
when :log, :logname
|
140
140
|
else
|
141
141
|
@log.warn("Document.new: Unknown setting #{key.inspect} (=#{value.inspect})") if @log.warn?
|
142
142
|
end
|
143
143
|
} #settings
|
144
144
|
|
145
145
|
if @template[:html].encoding.name == 'UTF-8'
|
146
|
+
@log.debug("Document.new: set UTF-8 for html") if @log.debug?
|
146
147
|
@head << element(:htmlonly,{},'<meta http-equiv="Content-Type" content="text/html; charset=utf-8">').Cr
|
147
148
|
end
|
148
149
|
|
@@ -154,6 +155,8 @@ The templates refer to the corresponding TeX-classes.
|
|
154
155
|
attr_reader :log
|
155
156
|
#Document title
|
156
157
|
attr_accessor :title, :shorttitle
|
158
|
+
#For usage in ocument title
|
159
|
+
attr_accessor :subtitle
|
157
160
|
#Set document description
|
158
161
|
attr_writer :author, :date, :keywords, :description, :creator
|
159
162
|
attr_writer :language
|
@@ -207,6 +210,7 @@ Add a meta-tag-information for the HTML-Output.
|
|
207
210
|
#Build docinfo.
|
208
211
|
result = []
|
209
212
|
result << element( :title, {:short => shorttitle }, @title).CR if @title
|
213
|
+
result << element( :subtitle, {}, @subtitle).CR if @subtitle
|
210
214
|
result << element( :author, {}, @author).cr if @author
|
211
215
|
result << element( :date, {}, @date).cr if @date
|
212
216
|
result << element( :keywords, {}, @keywords).cr if @keywords
|
@@ -369,17 +373,6 @@ Valid options:
|
|
369
373
|
return false
|
370
374
|
end
|
371
375
|
|
372
|
-
|
373
|
-
prefix = [ nil,
|
374
|
-
"Build by\t#{__FILE__}",
|
375
|
-
"Dir:\t\t#{Dir.pwd}",
|
376
|
-
"Creator:\tDocgenerator #{Docgenerator::VERSION} - http://rubygems.org/gems/docgenerator",
|
377
|
-
"Target:\t\t#{filename}",
|
378
|
-
"#{Time.now.strftime('%Y/%m/%d %H:%M:%S')}",
|
379
|
-
nil,
|
380
|
-
"#{PREFIX_ENDFLAG}"
|
381
|
-
].join("\n\t")
|
382
|
-
|
383
376
|
#Determine the target document type, depending on extension.
|
384
377
|
extension = File.basename( filename ).split( /\./).last
|
385
378
|
case extension
|
@@ -419,6 +412,20 @@ Valid options:
|
|
419
412
|
:replacements => options[:replacements],
|
420
413
|
:log => @log
|
421
414
|
})
|
415
|
+
|
416
|
+
#Define a file prefix.
|
417
|
+
prefix = [ nil,
|
418
|
+
( target == :latex ? "!TEX encoding= %s" : 'encoding: %s' ) % new.encoding,
|
419
|
+
#~ "!TEX TS-program = lualatex",
|
420
|
+
"Build by\t#{__FILE__}",
|
421
|
+
"Dir:\t\t#{Dir.pwd}",
|
422
|
+
"Creator:\tDocgenerator #{Docgenerator::VERSION} - http://rubygems.org/gems/docgenerator",
|
423
|
+
"Target:\t\t#{filename}",
|
424
|
+
"#{Time.now.strftime('%Y/%m/%d %H:%M:%S')}",
|
425
|
+
nil,
|
426
|
+
"#{PREFIX_ENDFLAG}"
|
427
|
+
].join("\n\t")
|
428
|
+
|
422
429
|
#Get previous content if available
|
423
430
|
old = nil
|
424
431
|
if File.exist?( filename )
|
@@ -559,7 +566,10 @@ If the method is called directly to prepare document snipplets, you can use:
|
|
559
566
|
new.sub!( '<<head>>', @head.to_doc(target, options ).encode(encoding))
|
560
567
|
|
561
568
|
options[:log].debug( "Build body") if options[:log].debug?
|
562
|
-
|
569
|
+
#The block version is needed.
|
570
|
+
#Else there is a problem with \&
|
571
|
+
#Example: puts 'xx<<body>>xx'.sub('<<body>>', 'a\&b')
|
572
|
+
new.sub!( '<<body>>'){ @body.to_doc(target, options).encode(encoding) }
|
563
573
|
|
564
574
|
new.sub!( '<<classoptions>>', @options.uniq.join(',').encode(encoding))
|
565
575
|
|
@@ -571,6 +581,10 @@ If the method is called directly to prepare document snipplets, you can use:
|
|
571
581
|
return new
|
572
582
|
end #Document#to_doc
|
573
583
|
|
584
|
+
def inspect()
|
585
|
+
return "#<Document '#{self.title}'>"
|
586
|
+
end
|
587
|
+
|
574
588
|
#
|
575
589
|
#Eigenclass Document
|
576
590
|
class << self
|
@@ -643,6 +657,10 @@ Better solution:
|
|
643
657
|
* use elements from Docgenerator::Characters
|
644
658
|
* Use unicode in TeX-Document.
|
645
659
|
* Put string into \path, \verb or similar.
|
660
|
+
|
661
|
+
Usage:
|
662
|
+
Docgenerator::Document.texify('text_with_underscore')
|
663
|
+
|
646
664
|
=end
|
647
665
|
def texify( input )
|
648
666
|
out = input.strip
|
@@ -657,9 +675,6 @@ Better solution:
|
|
657
675
|
#~ out.gsub!( /€/, '\euro ') #regexp is in utf-8 -- may make problems.
|
658
676
|
return out
|
659
677
|
end
|
660
|
-
|
661
|
-
return "#<Document '#{@title}'>"
|
662
|
-
end
|
663
|
-
end #Eigenclass Document
|
678
|
+
end #Eigenclass Document
|
664
679
|
end #Document
|
665
|
-
end #module Docgenerator
|
680
|
+
end #module Docgenerator
|
data/lib/docgenerator/element.rb
CHANGED
@@ -419,6 +419,7 @@ false-values are ignored.
|
|
419
419
|
If you need a "value=true", then add 'true' as a string.
|
420
420
|
|
421
421
|
Example (Packages::IncludePDF):
|
422
|
+
|
422
423
|
class IncludePDF < Element
|
423
424
|
add_attribute :pages, Attribute.create( [ :texkeyval], [ String ] )
|
424
425
|
add_attribute :nup, Attribute.create( [ :texkeyval], [ /\d+x\d+/ ] ) #multiple logical pages onto each sheet of paper.
|
@@ -225,7 +225,7 @@ Define the output routine, based on a string.
|
|
225
225
|
cmd = <<-code
|
226
226
|
def to_#{target}(options = {})
|
227
227
|
o = set_option_defaults(options)
|
228
|
-
o[:log].debug("enter
|
228
|
+
o[:log].debug("enter to_#{target} for #{self.inspect}, options: \#{options.keys.inspect}") if o[:log].debug?
|
229
229
|
code
|
230
230
|
template = string.gsub(/\\/, '\\\\\\')
|
231
231
|
template.gsub!(/"/, '\"')
|