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:                                \b(\w[\w\#\/\.\-\~\:]*[!?=]?) # file_name
255:                              | \b(\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 149
149:     def markup(str, remove_para=false)
150:       return '' unless str
151:       unless defined? @markup
152:         @markup = SM::SimpleMarkup.new
153: 
154:         # class names, variable names, or instance variables
155:         @markup.add_special(/(
156:                                \b\w+(::\w+)*[\.\#]\w+(\([\.\w+\*\/\+\-\=\<\>]+\))?  # A::B.meth(**) (for operator in Fortran95)
157:                              | \#\w+(\([.\w\*\/\+\-\=\<\>]+\))?  #  meth(**) (for operator in Fortran95)
158:                              | \b([A-Z]\w*(::\w+)*[.\#]\w+)  #    A::B.meth
159:                              | \b([A-Z]\w+(::\w+)*)       #    A::B..
160:                              | \#\w+[!?=]?                #    #meth_name 
161:                              | \b\w+([_\/\.]+\w+)*[!?=]?  #    meth_name
162:                              )/x, 
163:                             :CROSSREF)
164: 
165:         # file names
166:         @markup.add_special(/(
167:                                \b(\w[\w\#\/\.\-\~\:]*[!?=]?) # file_name
168:                              | \b(\w[\w\#\/\.\-\~\:]*(\([\.\w+\*\/\+\-\=\<\>]+\))?)
169:                              )/x, 
170:                             :CROSSREFFILE)
171: 
172:         # external hyperlinks
173:         @markup.add_special(/((link:|https?:|mailto:|ftp:|www\.)\S+\w)/, :HYPERLINK)
174: 
175:         # and links of the form  <text>[<url>]
176:         @markup.add_special(/(((\{.*?\})|\b\S+?)\[\S+?\.\S+?\])/, :TIDYLINK)
177: #        @markup.add_special(/\b(\S+?\[\S+?\.\S+?\])/, :TIDYLINK)
178: 
179:         if Options.instance.mathml
180:           # TeX inline form
181:           @markup.add_special(/(\$(.*?)[^\\]\$)/im, :TEXINLINE)
182: 
183:           # TeX inline delimiter
184:           @markup.add_special(/(\\\$)/im, :TEXINLINEDELIMITER)
185: 
186:           # TeX block form
187:           @markup.add_special(/(\\\[(.+?)\\\])/im, :TEXBLOCK)
188:         end
189: 
190:       end
191:       unless defined? @html_formatter
192:         @html_formatter = TexParser.new(self.path, self)
193:       end
194: 
195:       # Convert leading comment markers to spaces, but only
196:       # if all non-blank lines have them
197: 
198:       if str =~ /^(?>\s*)[^\#]/
199:         content = str
200:       else
201:         content = str.gsub(/^\s*(#+)/)  { $1.tr('#',' ') }
202:       end
203: 
204:       block_exceptions = []
205:       if Options.instance.mathml
206:         block_exceptions << {
207:           'name'     => :texblockform,
208:           'start'    => Regexp.new("^\\\\\\["),
209:           'end'      => Regexp.new("\\\\\\]$"),
210:           'replaces' => []
211:         }
212:         block_exceptions[0]['replaces'] << {
213:           'from' => Regexp.new("\\\\\\\\"),
214:           'to'   => "\\\\\\\\\\\\\\\\",
215:         }
216:       end
217: 
218:       res = @markup.convert(content, @html_formatter, block_exceptions)
219:       if remove_para
220:         res.sub!(/^<p>/, '')
221:         res.sub!(/<\/p>$/, '')
222:       end
223:       res
224:     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]