Module Generators::MarkUp
In: generators/html_generator.rb
generators/xhtml_generator.rb

Handle common markup tasks for the various Html classes

Methods

cvs_url   markup   markup   style_url  

Public Instance methods

Build a webcvs URL with the given ‘url’ argument. URLs with a ’%s’ in them get the file‘s path sprintfed into them; otherwise they‘re just catenated together.

[Source]

     # File generators/html_generator.rb, line 306
306:     def cvs_url(url, full_path)
307:       if /%s/ =~ url
308:         return sprintf( url, full_path )
309:       else
310:         return url + full_path
311:       end
312:     end

Convert a string in markup format into HTML. We keep a cached SimpleMarkup object lying around after the first time we‘re called per object.

[Source]

     # File generators/html_generator.rb, line 236
236:     def markup(str, remove_para=false)
237:       return '' unless str
238:       unless defined? @markup
239:         @markup = SM::SimpleMarkup.new
240: 
241:         # class names, variable names, or instance variables
242:         @markup.add_special(/(
243:                                \b\w+(::\w+)*[\.\#]\w+(\([\.\w+\*\/\+\-\=\<\>]+\))?  # A::B.meth(**) (for operator and assignment in Fortran 90 or 95)
244:                              | \#\w+(\([.\w\*\/\+\-\=\<\>]+\))?  #  meth(**) (for operator and assignment in Fortran 90 or 95)
245:                              | \b([A-Z]\w*(::\w+)*[.\#]\w+)  #    A::B.meth
246:                              | \b([A-Z]\w+(::\w+)*)       #    A::B..
247:                              | \#\w+[!?=]?                #    #meth_name 
248:                              | \b\w+([_\/\.]+\w+)*[!?=]?  #    meth_name
249:                              )/x, 
250:                             :CROSSREF)
251: 
252:         # file names
253:         @markup.add_special(/(
254:                                ((\/|\.\.\/|\.\/|\w)[\w\#\/\.\-\~\:]*[!?=]?) # file_name
255:                              | ((\/|\.\.\/|\.\/|\w)[\w\#\/\.\-\~\:]*(\([\.\w+\*\/\+\-\=\<\>]+\))?)
256:                              )/x, 
257:                             :CROSSREFFILE)
258: 
259:         # external hyperlinks
260:         @markup.add_special(/((link:|https?:|mailto:|ftp:|www\.)\S+\w)/, :HYPERLINK)
261: 
262:         # and links of the form  <text>[<url>]
263:         @markup.add_special(/(((\{.*?\})|\b\S+?)\[\S+?\.\S+?\])/, :TIDYLINK)
264: #        @markup.add_special(/\b(\S+?\[\S+?\.\S+?\])/, :TIDYLINK)
265: 
266:       end
267:       unless defined? @html_formatter
268:         @html_formatter = HyperlinkHtml.new(self.path, self)
269:       end
270: 
271:       # Convert leading comment markers to spaces, but only
272:       # if all non-blank lines have them
273: 
274:       if str =~ /^(?>\s*)[^\#]/
275:         content = str
276:       else
277:         content = str.gsub(/^\s*(#+)/)  { $1.tr('#',' ') }
278:       end
279: 
280:       res = @markup.convert(content, @html_formatter)
281:       if remove_para
282:         res.sub!(/^<p>/, '')
283:         res.sub!(/<\/p>$/, '')
284:       end
285:       res
286:     end

This is almost a copy of the markup method in html_generator. This method markup $ .… $ and \[ … \] as tex format.

[Source]

     # File generators/xhtml_generator.rb, line 217
217:     def markup(str, remove_para=false)
218:       return '' unless str
219:       unless defined? @markup
220:         @markup = SM::SimpleMarkup.new
221: 
222:         # class names, variable names, or instance variables
223:         @markup.add_special(/(
224:                                \b\w+(::\w+)*[\.\#]\w+(\([\.\w+\*\/\+\-\=\<\>]+\))?  # A::B.meth(**) (for operator in Fortran95)
225:                              | \#\w+(\([.\w\*\/\+\-\=\<\>]+\))?  #  meth(**) (for operator in Fortran95)
226:                              | \b([A-Z]\w*(::\w+)*[.\#]\w+)  #    A::B.meth
227:                              | \b([A-Z]\w+(::\w+)*)       #    A::B..
228:                              | \#\w+[!?=]?                #    #meth_name 
229:                              | \b\w+([_\/\.]+\w+)*[!?=]?  #    meth_name
230:                              )/x, 
231:                             :CROSSREF)
232: 
233:         # file names
234:         @markup.add_special(/(
235:                                \b(\w[\w\#\/\.\-\~\:]*[!?=]?) # file_name
236:                              | \b(\w[\w\#\/\.\-\~\:]*(\([\.\w+\*\/\+\-\=\<\>]+\))?)
237:                              )/x, 
238:                             :CROSSREFFILE)
239: 
240:         # external hyperlinks
241:         @markup.add_special(/((link:|https?:|mailto:|ftp:|www\.)\S+\w)/, :HYPERLINK)
242: 
243:         # and links of the form  <text>[<url>]
244:         @markup.add_special(/(((\{.*?\})|\b\S+?)\[\S+?\.\S+?\])/, :TIDYLINK)
245: #        @markup.add_special(/\b(\S+?\[\S+?\.\S+?\])/, :TIDYLINK)
246: 
247:         if Options.instance.mathml
248:           # TeX inline form
249:           @markup.add_special(/(\$(.*?)[^\\]\$)/im, :TEXINLINE)
250: 
251:           # TeX inline delimiter
252:           @markup.add_special(/(\\\$)/im, :TEXINLINEDELIMITER)
253: 
254:           # TeX block form
255:           @markup.add_special(/(\\\[(.+?)\\\])/im, :TEXBLOCK)
256:         end
257: 
258:       end
259:       unless defined? @html_formatter
260:         @html_formatter = TexParser.new(self.path, self)
261:       end
262: 
263:       # Convert leading comment markers to spaces, but only
264:       # if all non-blank lines have them
265: 
266:       if str =~ /^(?>\s*)[^\#]/
267:         content = str
268:       else
269:         content = str.gsub(/^\s*(#+)/)  { $1.tr('#',' ') }
270:       end
271: 
272:       block_exceptions = []
273:       if Options.instance.mathml
274:         block_exceptions << {
275:           'name'     => :texblockform,
276:           'start'    => Regexp.new("^\\\\\\["),
277:           'end'      => Regexp.new("\\\\\\]$"),
278:           'replaces' => []
279:         }
280:         block_exceptions[0]['replaces'] << {
281:           'from' => Regexp.new("\\\\\\\\"),
282:           'to'   => "\\\\\\\\\\\\\\\\",
283:         }
284:       end
285: 
286:       res = @markup.convert(content, @html_formatter, block_exceptions)
287:       if remove_para
288:         res.sub!(/^<p>/, '')
289:         res.sub!(/<\/p>$/, '')
290:       end
291:       res
292:     end

Qualify a stylesheet URL; if if css_name does not begin with ‘/’ or ‘http[s]://’, prepend a prefix relative to path. Otherwise, return it unmodified.

[Source]

     # File generators/html_generator.rb, line 292
292:     def style_url(path, css_name=nil)
293: #      $stderr.puts "style_url( #{path.inspect}, #{css_name.inspect} )"
294:       css_name ||= CSS_NAME
295:       if %r{^(https?:/)?/} =~ css_name
296:         return css_name
297:       else
298:         return HTMLGenerator.gen_url(path, css_name)
299:       end
300:     end

[Validate]