Method: Zena::Parser::ZazenRules#render_code

Defined in:
lib/zena/parser/zazen_rules.rb

#render_code(text) ⇒ Object



373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
# File 'lib/zena/parser/zazen_rules.rb', line 373

def render_code(text)
  text.gsub!( /<pre>\\ZAZENBLOCKCODE(\d+)ZAZENBLOCKCODE\\<\/pre>/ ) do
    if @translate_ids
      @escaped_code[$1.to_i]
    else
      code_lang, code, pre_params = @escaped_code[$1.to_i]
      # FIXME: How to not parse with Textile ?
      if code_lang == :raw then
        # SECURITY: symbol cannot be set from zazen.
        code
      else
        Zena::CodeSyntax.new(code, @context[:pretty_code] ? code_lang : nil).to_html(@context.merge(:pre_params => pre_params))
      end
    end
  end

  text.gsub!( /\\ZAZENBLOCKAT(\d+)ZAZENBLOCKAT\\/ ) do
    code = @escaped_at[$1.to_i]
    if @translate_ids
      '@'+code+'@'
    else
      if code =~ /^(\w+)\|(.*)$/
        code_lang, code = $1, $2
      end
      Zena::CodeSyntax.new(code, @context[:pretty_code] ? code_lang : nil).to_html(@context.merge(:inline => true))
    end
  end
end