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