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 in Fortran95)
244:                              | \#\w+(\([.\w\*\/\+\-\=\<\>]+\))?  #  meth(**) (for operator in Fortran95)
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 188
188:     def markup(str, remove_para=false)
189:       return '' unless str
190:       unless defined? @markup
191:         @markup = SM::SimpleMarkup.new
192: 
193:         # class names, variable names, or instance variables
194:         @markup.add_special(/(
195:                                \b\w+(::\w+)*[\.\#]\w+(\([\.\w+\*\/\+\-\=\<\>]+\))?  # A::B.meth(**) (for operator in Fortran95)
196:                              | \#\w+(\([.\w\*\/\+\-\=\<\>]+\))?  #  meth(**) (for operator in Fortran95)
197:                              | \b([A-Z]\w*(::\w+)*[.\#]\w+)  #    A::B.meth
198:                              | \b([A-Z]\w+(::\w+)*)       #    A::B..
199:                              | \#\w+[!?=]?                #    #meth_name 
200:                              | \b\w+([_\/\.]+\w+)*[!?=]?  #    meth_name
201:                              )/x, 
202:                             :CROSSREF)
203: 
204:         # file names
205:         @markup.add_special(/(
206:                                \b(\w[\w\#\/\.\-\~\:]*[!?=]?) # file_name
207:                              | \b(\w[\w\#\/\.\-\~\:]*(\([\.\w+\*\/\+\-\=\<\>]+\))?)
208:                              )/x, 
209:                             :CROSSREFFILE)
210: 
211:         # external hyperlinks
212:         @markup.add_special(/((link:|https?:|mailto:|ftp:|www\.)\S+\w)/, :HYPERLINK)
213: 
214:         # and links of the form  <text>[<url>]
215:         @markup.add_special(/(((\{.*?\})|\b\S+?)\[\S+?\.\S+?\])/, :TIDYLINK)
216: #        @markup.add_special(/\b(\S+?\[\S+?\.\S+?\])/, :TIDYLINK)
217: 
218:         if Options.instance.mathml
219:           # TeX inline form
220:           @markup.add_special(/(\$(.*?)[^\\]\$)/im, :TEXINLINE)
221: 
222:           # TeX inline delimiter
223:           @markup.add_special(/(\\\$)/im, :TEXINLINEDELIMITER)
224: 
225:           # TeX block form
226:           @markup.add_special(/(\\\[(.+?)\\\])/im, :TEXBLOCK)
227:         end
228: 
229:       end
230:       unless defined? @html_formatter
231:         @html_formatter = TexParser.new(self.path, self)
232:       end
233: 
234:       # Convert leading comment markers to spaces, but only
235:       # if all non-blank lines have them
236: 
237:       if str =~ /^(?>\s*)[^\#]/
238:         content = str
239:       else
240:         content = str.gsub(/^\s*(#+)/)  { $1.tr('#',' ') }
241:       end
242: 
243:       block_exceptions = []
244:       if Options.instance.mathml
245:         block_exceptions << {
246:           'name'     => :texblockform,
247:           'start'    => Regexp.new("^\\\\\\["),
248:           'end'      => Regexp.new("\\\\\\]$"),
249:           'replaces' => []
250:         }
251:         block_exceptions[0]['replaces'] << {
252:           'from' => Regexp.new("\\\\\\\\"),
253:           'to'   => "\\\\\\\\\\\\\\\\",
254:         }
255:       end
256: 
257:       res = @markup.convert(content, @html_formatter, block_exceptions)
258:       if remove_para
259:         res.sub!(/^<p>/, '')
260:         res.sub!(/<\/p>$/, '')
261:       end
262:       res
263:     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]