formol-markdown 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +2 -0
- data/LICENSE +3 -0
- data/README.md +15 -0
- data/Rakefile +51 -0
- data/formol-markdown.gemspec +18 -0
- data/lib/formol-markdown.rb +7 -0
- data/lib/formol/formatters/redcarpet/formatter.rb +43 -0
- data/lib/formol/formatters/redcarpet/syntax_highlighter.rb +20 -0
- metadata +75 -0
data/.gitignore
ADDED
data/LICENSE
ADDED
data/README.md
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# Markdown text processor for Formol forum engine
|
2
|
+
|
3
|
+
Just add this gem in your Gemfile, after formol's.
|
4
|
+
|
5
|
+
```ruby
|
6
|
+
gem 'formol'
|
7
|
+
gem 'formol-markdown'
|
8
|
+
```
|
9
|
+
|
10
|
+
It adds `Formol::Formatters::Redcarpet::Formatter` to Formol.formatters.
|
11
|
+
|
12
|
+
You need then to add in your formol initializer:
|
13
|
+
`config.text_formatter = :markdown`
|
14
|
+
|
15
|
+
It supports syntax highlighting and quotes. Have fun!
|
data/Rakefile
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
#
|
2
|
+
# To change this template, choose Tools | Templates
|
3
|
+
# and open the template in the editor.
|
4
|
+
|
5
|
+
|
6
|
+
require 'rubygems'
|
7
|
+
require 'rake'
|
8
|
+
require 'rake/clean'
|
9
|
+
require 'rake/gempackagetask'
|
10
|
+
require 'rake/rdoctask'
|
11
|
+
require 'rake/testtask'
|
12
|
+
require 'spec/rake/spectask'
|
13
|
+
|
14
|
+
spec = Gem::Specification.new do |s|
|
15
|
+
s.name = 'formol-markdown'
|
16
|
+
s.version = '0.0.1'
|
17
|
+
s.has_rdoc = true
|
18
|
+
s.extra_rdoc_files = ['README', 'LICENSE']
|
19
|
+
s.summary = 'Your summary here'
|
20
|
+
s.description = s.summary
|
21
|
+
s.author = ''
|
22
|
+
s.email = ''
|
23
|
+
# s.executables = ['your_executable_here']
|
24
|
+
s.files = %w(LICENSE README Rakefile) + Dir.glob("{bin,lib,spec}/**/*")
|
25
|
+
s.require_path = "lib"
|
26
|
+
s.bindir = "bin"
|
27
|
+
end
|
28
|
+
|
29
|
+
Rake::GemPackageTask.new(spec) do |p|
|
30
|
+
p.gem_spec = spec
|
31
|
+
p.need_tar = true
|
32
|
+
p.need_zip = true
|
33
|
+
end
|
34
|
+
|
35
|
+
Rake::RDocTask.new do |rdoc|
|
36
|
+
files =['README', 'LICENSE', 'lib/**/*.rb']
|
37
|
+
rdoc.rdoc_files.add(files)
|
38
|
+
rdoc.main = "README" # page to start on
|
39
|
+
rdoc.title = "formol-markdown Docs"
|
40
|
+
rdoc.rdoc_dir = 'doc/rdoc' # rdoc output folder
|
41
|
+
rdoc.options << '--line-numbers'
|
42
|
+
end
|
43
|
+
|
44
|
+
Rake::TestTask.new do |t|
|
45
|
+
t.test_files = FileList['test/**/*.rb']
|
46
|
+
end
|
47
|
+
|
48
|
+
Spec::Rake::SpecTask.new do |t|
|
49
|
+
t.spec_files = FileList['spec/**/*.rb']
|
50
|
+
t.libs << Dir["lib"]
|
51
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
|
3
|
+
# Describe your gem and declare its dependencies:
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "formol-markdown"
|
6
|
+
s.version = "1.0.0"
|
7
|
+
s.authors = ["Florian DUTEY"]
|
8
|
+
s.email = ["fdutey@gmail.com"]
|
9
|
+
s.homepage = "https://github.com/mulasse/formol-markdown"
|
10
|
+
s.summary = "Markdown formatter for formol forum engine"
|
11
|
+
s.description = "Markdown formatter for formol forum engine"
|
12
|
+
|
13
|
+
s.files = `git ls-files`.split("\n")
|
14
|
+
s.require_paths = ["lib"]
|
15
|
+
|
16
|
+
s.add_dependency 'pygments.rb'
|
17
|
+
s.add_dependency 'redcarpet'
|
18
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Formol
|
2
|
+
module Formatters
|
3
|
+
module Redcarpet
|
4
|
+
class Formatter
|
5
|
+
def initialize
|
6
|
+
@renderer = SyntaxHighlighter.new(:hard_wrap => true,
|
7
|
+
:filter_html => true)
|
8
|
+
@processor = ::Redcarpet::Markdown.new(@renderer, :fenced_code_blocks => true,
|
9
|
+
:no_intra_emphasis => true,
|
10
|
+
:autolink => true,
|
11
|
+
:space_after_headers => false,
|
12
|
+
:superscript => false)
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_html(text)
|
16
|
+
@processor.render(text).html_safe
|
17
|
+
end
|
18
|
+
|
19
|
+
def quote(author_name, text)
|
20
|
+
wrote = I18n.t('formol.posts.wrote')
|
21
|
+
|
22
|
+
text_with_author = "**#{author_name} #{wrote}:**\n\n"
|
23
|
+
text_with_author << text
|
24
|
+
|
25
|
+
blockquote(text_with_author)
|
26
|
+
end
|
27
|
+
|
28
|
+
def blockquote(text)
|
29
|
+
quoted_text = ""
|
30
|
+
|
31
|
+
# this is needed to highlight work in quotes
|
32
|
+
text.split("\n").each_with_index do |line, index|
|
33
|
+
quoted_text << '> ' if index == 0 || (line.strip.blank? || line.start_with?('>'))
|
34
|
+
quoted_text << line
|
35
|
+
quoted_text << "\n"
|
36
|
+
end
|
37
|
+
|
38
|
+
quoted_text
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Formol
|
2
|
+
module Formatters
|
3
|
+
module Redcarpet
|
4
|
+
class SyntaxHighlighter < ::Redcarpet::Render::XHTML
|
5
|
+
def block_code(code, language)
|
6
|
+
title_block(language) + Pygments.highlight(code, :lexer => language,
|
7
|
+
:options => {
|
8
|
+
:linenos => 'inline'
|
9
|
+
})
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def title_block(language)
|
15
|
+
%{<div class="highlight_title #{language.downcase}">#{language.downcase.capitalize}</div>}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: formol-markdown
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Florian DUTEY
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-17 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: pygments.rb
|
16
|
+
requirement: &75542450 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *75542450
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: redcarpet
|
27
|
+
requirement: &75542030 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *75542030
|
36
|
+
description: Markdown formatter for formol forum engine
|
37
|
+
email:
|
38
|
+
- fdutey@gmail.com
|
39
|
+
executables: []
|
40
|
+
extensions: []
|
41
|
+
extra_rdoc_files: []
|
42
|
+
files:
|
43
|
+
- .gitignore
|
44
|
+
- LICENSE
|
45
|
+
- README.md
|
46
|
+
- Rakefile
|
47
|
+
- formol-markdown.gemspec
|
48
|
+
- lib/formol-markdown.rb
|
49
|
+
- lib/formol/formatters/redcarpet/formatter.rb
|
50
|
+
- lib/formol/formatters/redcarpet/syntax_highlighter.rb
|
51
|
+
homepage: https://github.com/mulasse/formol-markdown
|
52
|
+
licenses: []
|
53
|
+
post_install_message:
|
54
|
+
rdoc_options: []
|
55
|
+
require_paths:
|
56
|
+
- lib
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
requirements: []
|
70
|
+
rubyforge_project:
|
71
|
+
rubygems_version: 1.8.10
|
72
|
+
signing_key:
|
73
|
+
specification_version: 3
|
74
|
+
summary: Markdown formatter for formol forum engine
|
75
|
+
test_files: []
|