Module: Kitabu::Markup
Instance Method Summary collapse
Instance Method Details
#content_for(options) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/kitabu/markup.rb', line 5 def content_for() source_file = File.join(KITABU_ROOT, 'code', [:source_file].to_s) code = [:code] if [:source_file] && File.exists?(source_file) file = File.new(source_file) if [:from_line] && [:to_line] from_line = [:from_line].to_i - 1 to_line = [:to_line].to_i offset = to_line - from_line code = file.readlines.slice(from_line, offset).join elsif block_name = [:block_name] re = %r(# ?begin: ?\b#{block_name}\b ?(?:[^\r\n]+)?\r?\n(.*?)\r?\n([^\r\n]+)?# ?end: \b#{block_name}\b)sim file.read.gsub(re) { |block| code = $1 } else code = file.read code = code.gsub(/</, '<').gsub(/>/, '>').gsub(/&/, '&') end end # no code? set to default code ||= [:code] # normalize indentation line = StringIO.new(code).readlines[0] if line =~ /^(\t+)/ char = "\t" size = $1.length elsif line =~ /^( +)/ char = " " size = $1.length end code.gsub! %r(^#{char}{#{size}}), "" if size.to_i > 0 # remove all line stubs code.gsub! %r(^[\t ]*__$), "" # return code end |
#syntax(code, syntax, processor) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/kitabu/markup.rb', line 49 def syntax(code, syntax, processor) # get chosen theme theme = Kitabu::Base.config['theme'] theme = Kitabu::Base.default_theme unless Kitabu::Base.theme?(theme) syntax = "plain_text" if syntax.to_s =~ /^\s*$/ # get syntax syntax = Kitabu::Base.default_syntax unless Kitabu::Base.syntax?(syntax) code.gsub!(/x%x%/sm, "&") if processor == :textile code = Uv.parse(code, "xhtml", syntax, false, theme) code.gsub!(/<pre class="(.*?)"/sim, %(<pre class="\\1 #{syntax}")) code.gsub!(/<pre>/sim, %(<pre class="#{syntax} #{theme}")) code end |