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