model_formatting 0.2.3.19 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -2,15 +2,13 @@ source :gemcutter
2
2
  source "http://gem.entp.com"
3
3
 
4
4
  gem 'rake'
5
- gem 'rack', '~> 1.1.3'
6
- gem 'actionpack', '~> 2.3.18'
7
- gem 'activerecord', '~> 2.3.18'
8
- gem 'activesupport', '~> 2.3.18'
9
- gem 'redcarpet', '~> 2.2'
10
- gem 'tidy_ffi', '~> 0.1'
5
+ gem 'rdiscount', '~> 1.6.5'
6
+ gem 'actionpack', '~> 3.0.0'
7
+ gem 'activerecord', '~> 3.0.0'
8
+ gem 'activesupport', '~> 3.0.0'
9
+ gem 'tidy_ffi', '~> 0.1.2'
11
10
 
12
11
  group :development, :test do
13
12
  gem 'context', '0.5.5'
14
13
  gem 'matchy', '~>0.4.0'
15
- gem 'ruby-debug'
16
14
  end
data/Gemfile.lock CHANGED
@@ -2,41 +2,55 @@ GEM
2
2
  remote: http://rubygems.org/
3
3
  remote: http://gem.entp.com/
4
4
  specs:
5
- actionpack (2.3.18)
6
- activesupport (= 2.3.18)
7
- rack (~> 1.1.0)
8
- activerecord (2.3.18)
9
- activesupport (= 2.3.18)
10
- activesupport (2.3.18)
11
- columnize (0.3.6)
5
+ abstract (1.0.0)
6
+ actionpack (3.0.12)
7
+ activemodel (= 3.0.12)
8
+ activesupport (= 3.0.12)
9
+ builder (~> 2.1.2)
10
+ erubis (~> 2.6.6)
11
+ i18n (~> 0.5.0)
12
+ rack (~> 1.2.5)
13
+ rack-mount (~> 0.6.14)
14
+ rack-test (~> 0.5.7)
15
+ tzinfo (~> 0.3.23)
16
+ activemodel (3.0.12)
17
+ activesupport (= 3.0.12)
18
+ builder (~> 2.1.2)
19
+ i18n (~> 0.5.0)
20
+ activerecord (3.0.12)
21
+ activemodel (= 3.0.12)
22
+ activesupport (= 3.0.12)
23
+ arel (~> 2.0.10)
24
+ tzinfo (~> 0.3.23)
25
+ activesupport (3.0.12)
26
+ arel (2.0.10)
27
+ builder (2.1.2)
12
28
  context (0.5.5)
13
- ffi (1.2.1)
14
- linecache (0.46)
15
- rbx-require-relative (> 0.0.4)
29
+ erubis (2.6.6)
30
+ abstract (>= 1.0.0)
31
+ ffi (1.0.10)
32
+ i18n (0.5.0)
16
33
  matchy (0.4.0)
17
- rack (1.1.5)
34
+ rack (1.2.5)
35
+ rack-mount (0.6.14)
36
+ rack (>= 1.0.0)
37
+ rack-test (0.5.7)
38
+ rack (>= 1.0)
18
39
  rake (0.9.2)
19
- rbx-require-relative (0.0.9)
20
- redcarpet (2.2.2)
21
- ruby-debug (0.10.4)
22
- columnize (>= 0.1)
23
- ruby-debug-base (~> 0.10.4.0)
24
- ruby-debug-base (0.10.4)
25
- linecache (>= 0.3)
26
- tidy_ffi (0.1.5)
27
- ffi (~> 1.2.0)
40
+ rdiscount (1.6.8)
41
+ tidy_ffi (0.1.3)
42
+ ffi (>= 0.3.5)
43
+ tzinfo (0.3.32)
28
44
 
29
45
  PLATFORMS
30
46
  ruby
31
47
 
32
48
  DEPENDENCIES
33
- actionpack (~> 2.3.18)
34
- activerecord (~> 2.3.18)
35
- activesupport (~> 2.3.18)
49
+ actionpack (~> 3.0.0)
50
+ activerecord (~> 3.0.0)
51
+ activesupport (~> 3.0.0)
36
52
  context (= 0.5.5)
37
53
  matchy (~> 0.4.0)
38
- rack (~> 1.1.3)
39
54
  rake
40
- redcarpet (~> 2.2)
41
- ruby-debug
42
- tidy_ffi (~> 0.1)
55
+ rdiscount (~> 1.6.5)
56
+ tidy_ffi (~> 0.1.2)
data/README CHANGED
@@ -1,9 +1,3 @@
1
- This is a plugin for Rails that performs automatic text-to-html formatting.
2
-
3
- For rails 2.3, please use the 'rails23' branch (you can specify ~> 0.2 in your gemfile)
4
-
5
- It uses the 'redcarpet' markdown library with a few other pre-processing steps.
6
- Note: tests do not run on 1.9.x series due to a bug in the test frameworks we use,
7
- but the code works fine.
1
+ This is a plugin for Rails 2.2.x that performs automatic text-to-html formatting.
8
2
 
9
3
  It is extracted from and used by [Tender](http://tenderapp.com/) and [Lighthouse](http://lighthouseapp.com/).
data/Rakefile CHANGED
@@ -1,22 +1,21 @@
1
- require 'rubygems/package_task'
1
+ require 'rake/gempackagetask'
2
2
  require 'rake/testtask'
3
3
 
4
4
  spec = Gem::Specification.new do |s|
5
5
  s.name = "model_formatting"
6
- s.version = "0.2.3.19"
6
+ s.version = "0.3.2"
7
7
  s.author = "ENTP"
8
8
  s.email = "company@entp.com"
9
9
  s.homepage = "http://github.com/entp"
10
10
  s.platform = Gem::Platform::RUBY
11
- s.summary = "Automatically format model attributes using redcarpet (markdown) and Tender/Lighthouse extensions."
11
+ s.summary = "Automatically format model attributes using rdiscount and Tender/Lighthouse extensions."
12
12
  s.files = FileList['[a-zA-Z]*', 'bin/*', 'lib/**/*', 'rails/**/*', 'test/**/*']
13
13
  s.has_rdoc = false
14
14
  s.extra_rdoc_files = ["README"]
15
- s.add_dependency("rack", "~>1.1.3")
16
- s.add_dependency("redcarpet", "~>2.2")
17
- s.add_dependency("actionpack", "~>2.3.15")
18
- s.add_dependency("activerecord", "~>2.3.15")
19
- s.add_dependency("activesupport", "~>2.3.15")
15
+ s.add_dependency("rdiscount", "~>1.6.5")
16
+ s.add_dependency("actionpack", "~>3.0.0")
17
+ s.add_dependency("activerecord", "~>3.0.0")
18
+ s.add_dependency("activesupport", "~>3.0.0")
20
19
  s.add_dependency("tidy_ffi", "~>0.1.2")
21
20
  s.add_development_dependency("jeremymcanally-context", "~>0.5.5")
22
21
  s.add_development_dependency("jeremymcanally-matchy", "~>0.1.0")
@@ -24,7 +23,7 @@ end
24
23
 
25
24
 
26
25
  desc 'Build the gem.'
27
- Gem::PackageTask.new(spec) do |pkg|
26
+ Rake::GemPackageTask.new(spec) do |pkg|
28
27
  pkg.gem_spec = spec
29
28
  end
30
29
 
@@ -1,6 +1,5 @@
1
1
  require 'cgi'
2
2
  require 'active_support' # NilClass#blank?
3
- require 'redcarpet_custom'
4
3
  module ModelFormatting
5
4
  class Part < Array
6
5
  attr_reader :format
@@ -89,16 +88,16 @@ module ModelFormatting
89
88
  end
90
89
  end
91
90
  if format == :html
92
- string = process_tidy(string)
93
91
  if options[:white_list]
94
92
  string = options[:white_list].sanitize(string)
95
93
  end
94
+ string = process_tidy(string)
96
95
  end
97
96
  string.strip!
98
97
  format == :html ? "<div>#{string}</div>" : string
99
98
  end
100
99
 
101
- CODEBLOCK_RE = /^(@@@|```)( ([a-z]+)\s*)?$/
100
+ CODEBLOCK_RE = /^@@@( ([a-z]+)\s*)?$/
102
101
 
103
102
  # Parse a string into a given array of [CodeBlcok, FormattedBlock, CodeBlock, FormattedBlock]
104
103
  #
@@ -123,7 +122,7 @@ module ModelFormatting
123
122
  current_part = nil
124
123
  else
125
124
  if current_part then parts << current_part end
126
- current_part = CodePart.new(format, $3)
125
+ current_part = CodePart.new(format, $2)
127
126
  end
128
127
  in_code_block = !in_code_block
129
128
  else
@@ -179,27 +178,20 @@ module ModelFormatting
179
178
 
180
179
  def self.gfm(text)
181
180
  extract_tag(text, :pre) do |txt|
182
- # in very clear cases, let newlines become <br /> tags
183
- #text.gsub!(/(\A|^$\n)(^\w[^\n]*\n)(^\w[^\n]*$)+/m) do |x|
184
- # x.gsub(/^(.+)$/, "\\1 ")
185
- text.gsub!(/^[\w\<][^\n]*\n+/) do |x|
186
- x =~ /\n{2}/ ? x : (x.strip!; x << " \n")
181
+ # prevent foo_bar_baz from ending up with an italic word in the middle
182
+ text.gsub!(/(^(?! {4}|\t)\w+_\w+_\w[\w_]*)/) do |x|
183
+ x.gsub('_', '\_') if x.split('').sort.to_s[0..1] == '__'
187
184
  end
188
185
  end
189
186
  end
190
187
 
191
188
  begin
192
- require 'redcarpet'
189
+ require 'rdiscount'
193
190
  def self.process_markdown(text)
194
- markdown = Redcarpet::Markdown.new(Redcarpet::Render::Custom,
195
- :no_intra_emphasis => true,
196
- :tables => true,
197
- :fenced_code_blocks => true,
198
- :space_after_headers => true
199
- ).render(text)
191
+ RDiscount.new(text).to_html
200
192
  end
201
193
  rescue LoadError
202
- puts "No Redcarpet gem found. `gem install redcarpet`."
194
+ puts "No RDiscount gem found. `gem install rdiscount`."
203
195
  def self.process_markdown(text)
204
196
  text
205
197
  end
@@ -208,20 +200,12 @@ module ModelFormatting
208
200
  begin
209
201
  require 'tidy_ffi'
210
202
  def self.process_tidy(text)
211
- begin
212
- tidy = TidyFFI::Tidy.new(text)
213
- tidy.options.input_encoding = 'utf8'
214
- tidy.options.show_body_only = true
215
- tidy.options.new_inline_tags = "video source"
216
- tidy.options.force_output = true
217
- tidy.clean.strip
218
- rescue ArgumentError => e
219
- if e.to_s == "string contains null byte"
220
- text
221
- else
222
- raise e
223
- end
224
- end
203
+ tidy = TidyFFI::Tidy.new(text)
204
+ tidy.options.input_encoding = 'utf8'
205
+ tidy.options.show_body_only = true
206
+ tidy.options.new_inline_tags = "video"
207
+ tidy.options.force_output = true
208
+ tidy.clean.strip
225
209
  end
226
210
  rescue LoadError
227
211
  puts "No TidyFFI gem found. `gem install tidy_ffi`."
@@ -24,7 +24,7 @@ module ModelFormatting
24
24
  formats :body
25
25
  end
26
26
 
27
- context "Simple with formatting" do
27
+ describe "Simple with formatting" do
28
28
  it "has attribute from #formats arguments" do
29
29
  Simple.model_formatting_attributes[:body].should == "formatted_body"
30
30
  end
@@ -60,13 +60,6 @@ module ModelFormatting
60
60
  record.save
61
61
  record.formatted_body.should ==%(<div><p>Enc&ouml;ded &#592; \\Upload \\upload</p></div>)
62
62
  end
63
-
64
- it "formats incorrect html" do
65
- record = Simple.new
66
- record.body = "<a href=http://google.com>google</a>"
67
- record.save
68
- record.formatted_body.should ==%(<div><p><a href="http://google.com">google</a></p></div>)
69
- end
70
63
  end
71
64
 
72
65
  class BaseWithAfter < Base
@@ -75,7 +68,7 @@ module ModelFormatting
75
68
  end
76
69
  end
77
70
 
78
- context "base with after callback" do
71
+ describe "base with after callback" do
79
72
  it "does not leave mkd-extraction artifacts" do
80
73
  record = BaseWithAfter.new
81
74
  record.body = File.read(File.dirname(__FILE__) + '/fixtures/mkd-extraction.txt')
@@ -101,7 +94,7 @@ module ModelFormatting
101
94
  end
102
95
  end
103
96
 
104
- context "Post with formatting" do
97
+ describe "Post with formatting" do
105
98
  it "has attribute from #formats arguments" do
106
99
  Post.model_formatting_attributes[:body].should == "formatted_body"
107
100
  end
@@ -122,7 +115,7 @@ module ModelFormatting
122
115
  Post.before_save.should == :format_content_with_model_formatting
123
116
  end
124
117
 
125
- context "being saved" do
118
+ describe "being saved" do
126
119
  before do
127
120
  @record = Post.new
128
121
  @record.body = 'booya'
@@ -159,7 +152,7 @@ module ModelFormatting
159
152
  end
160
153
  end
161
154
 
162
- context "ChildPost with formatting" do
155
+ describe "ChildPost with formatting" do
163
156
  it "has attribute from #formats arguments" do
164
157
  ChildPost.model_formatting_attributes[:body].should == "formatted_body"
165
158
  end
@@ -176,7 +169,7 @@ module ModelFormatting
176
169
  ChildPost.before_save.should == :format_content_with_model_formatting
177
170
  end
178
171
 
179
- context "being saved" do
172
+ describe "being saved" do
180
173
  before do
181
174
  @record = ChildPost.new
182
175
  @record.body = 'booya'
@@ -7,11 +7,6 @@ class ModelFormattingTest < Test::Unit::TestCase
7
7
  parts.first.class.should == ModelFormatting::FormattedPart
8
8
  parts.first.should == 'foo'
9
9
  end
10
-
11
- it "generates TOC titles" do
12
- ModelFormatting.process(:html, "# title one\n\n# title two\n\n## title one").should == \
13
- "<div><h1 id=\"title-one\"><a name=\"title-one\" class=\"anchor\" href=\n\"#title-one\" id=\"title-one\"></a>title one</h1>\n<h1 id=\"title-two\"><a name=\"title-two\" class=\"anchor\" href=\n\"#title-two\" id=\"title-two\"></a>title two</h1>\n<h2 id=\"title-one_1\"><a name=\"title-one_1\" class=\"anchor\" href=\n\"#title-one_1\" id=\"title-one_1\"></a>title one</h2></div>"
14
- end
15
10
 
16
11
  it "parses empty code block into array of single CodeBlock" do
17
12
  parts = ModelFormatting.parse_text_parts(nil, nil, "@@@ foo\n@@@")
@@ -76,11 +71,11 @@ class ModelFormattingTest < Test::Unit::TestCase
76
71
  end
77
72
 
78
73
  it "converts @@@ with params to code blocks" do
79
- ModelFormatting.process(:html, "foo\n@@@ ninja\nbar\n@@@\n@@@\nbaz\n@@@\n@@@ wah wah \n \n").should == "<div><p>foo<br></p>\n<pre>\n<code class=\"ninja\">bar</code>\n</pre>\n<pre>\n<code>baz</code>\n</pre>\n@@@ wah wah</div>"
74
+ ModelFormatting.process(:html, "foo\n@@@ ninja\nbar\n@@@\n@@@\nbaz\n@@@\n@@@ wah wah \n \n").should == "<div><p>foo</p>\n<pre>\n<code class=\"ninja\">bar</code>\n</pre>\n<pre>\n<code>baz</code>\n</pre>\n<p>@@@ wah wah</p></div>"
80
75
  end
81
76
 
82
77
  it "fixes irregular number of @@@'s" do
83
- ModelFormatting.process(:html, "foo\n@@@\nbar\n@@@\n@@@\nbaz\n@@@\n@@@ wah wah \n \n@@@").should == "<div><p>foo<br></p>\n<pre>\n<code>bar</code>\n</pre>\n<pre>\n<code>baz</code>\n</pre>\n@@@ wah wah\n<pre>\n\n</pre></div>"
78
+ ModelFormatting.process(:html, "foo\n@@@\nbar\n@@@\n@@@\nbaz\n@@@\n@@@ wah wah \n \n@@@").should == "<div><p>foo</p>\n<pre>\n<code>bar</code>\n</pre>\n<pre>\n<code>baz</code>\n</pre>\n<p>@@@ wah wah</p>\n<pre>\n\n</pre></div>"
84
79
  end
85
80
 
86
81
  it "converts @@@ with params to code blocks with text format" do
@@ -93,11 +88,10 @@ class ModelFormattingTest < Test::Unit::TestCase
93
88
 
94
89
  it "treats linebreaks correctly" do
95
90
  ModelFormatting.process(:html, "Line breaks should not be treated as\nnew paragraphs. They are not paragraphs.\n\nHowever, when a line is skipped, that is a paragraph.\nGMail, and basically every comment or submission form on the \nweb work this way.").should == \
96
- "<div><p>Line breaks should not be treated as<br>\nnew paragraphs. They are not paragraphs.</p>\n<p>However, when a line is skipped, that is a paragraph.<br>\nGMail, and basically every comment or submission form on the<br>\nweb work this way.</p></div>"
97
-
91
+ "<div><p>Line breaks should not be treated as new paragraphs. They are\nnot paragraphs.</p>\n<p>However, when a line is skipped, that is a paragraph. GMail, and\nbasically every comment or submission form on the web work this\nway.</p></div>"
98
92
  end
99
93
 
100
- context "GFM" do
94
+ describe "GFM" do
101
95
  it "does not touch single underscores inside words" do
102
96
  assert_equal "foo_bar", ModelFormatting.gfm("foo_bar")
103
97
  end
@@ -110,19 +104,10 @@ class ModelFormattingTest < Test::Unit::TestCase
110
104
  assert_equal "<pre>\nfoo_bar_baz\n</pre>", ModelFormatting.gfm("<pre>\nfoo_bar_baz\n</pre>")
111
105
  end
112
106
 
113
- it "does not touch underscores inside words" do
114
- assert_equal "foo_bar_baz", ModelFormatting.gfm("foo_bar_baz")
115
- end
116
-
117
- it "turns newlines into br tags in simple cases" do
118
- assert_equal "foo \nbar", ModelFormatting.gfm("foo\nbar")
107
+ it "escapes two or more underscores inside words" do
108
+ assert_equal "foo\\_bar\\_baz", ModelFormatting.gfm("foo_bar_baz")
119
109
  end
120
-
121
- it "converts newlines in all groups" do
122
- assert_equal "apple \npear \norange \nbanana\n\nruby \npython \nerlang \njavascript",
123
- ModelFormatting.gfm("apple\npear\norange\nbanana\n\nruby\npython\nerlang\njavascript")
124
- end
125
-
110
+
126
111
  it "does not not convert newlines in lists" do
127
112
  assert_equal "# foo\n# bar", ModelFormatting.gfm("# foo\n# bar")
128
113
  assert_equal "* foo\n* bar", ModelFormatting.gfm("* foo\n* bar")
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: model_formatting
3
3
  version: !ruby/object:Gem::Version
4
- hash: 117
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 2
9
8
  - 3
10
- - 19
11
- version: 0.2.3.19
9
+ - 2
10
+ version: 0.3.2
12
11
  platform: ruby
13
12
  authors:
14
13
  - ENTP
@@ -16,89 +15,77 @@ autorequire:
16
15
  bindir: bin
17
16
  cert_chain: []
18
17
 
19
- date: 2014-01-15 00:00:00 Z
18
+ date: 2012-03-21 00:00:00 -07:00
19
+ default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
22
+ name: rdiscount
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
23
25
  none: false
24
26
  requirements:
25
27
  - - ~>
26
28
  - !ruby/object:Gem::Version
27
- hash: 21
29
+ hash: 5
28
30
  segments:
29
31
  - 1
30
- - 1
31
- - 3
32
- version: 1.1.3
32
+ - 6
33
+ - 5
34
+ version: 1.6.5
33
35
  type: :runtime
34
- requirement: *id001
35
- prerelease: false
36
- name: rack
36
+ version_requirements: *id001
37
37
  - !ruby/object:Gem::Dependency
38
- version_requirements: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- hash: 7
44
- segments:
45
- - 2
46
- - 2
47
- version: "2.2"
48
- type: :runtime
49
- requirement: *id002
38
+ name: actionpack
50
39
  prerelease: false
51
- name: redcarpet
52
- - !ruby/object:Gem::Dependency
53
- version_requirements: &id003 !ruby/object:Gem::Requirement
40
+ requirement: &id002 !ruby/object:Gem::Requirement
54
41
  none: false
55
42
  requirements:
56
43
  - - ~>
57
44
  - !ruby/object:Gem::Version
58
- hash: 29
45
+ hash: 7
59
46
  segments:
60
- - 2
61
47
  - 3
62
- - 15
63
- version: 2.3.15
48
+ - 0
49
+ - 0
50
+ version: 3.0.0
64
51
  type: :runtime
65
- requirement: *id003
66
- prerelease: false
67
- name: actionpack
52
+ version_requirements: *id002
68
53
  - !ruby/object:Gem::Dependency
69
- version_requirements: &id004 !ruby/object:Gem::Requirement
54
+ name: activerecord
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
70
57
  none: false
71
58
  requirements:
72
59
  - - ~>
73
60
  - !ruby/object:Gem::Version
74
- hash: 29
61
+ hash: 7
75
62
  segments:
76
- - 2
77
63
  - 3
78
- - 15
79
- version: 2.3.15
64
+ - 0
65
+ - 0
66
+ version: 3.0.0
80
67
  type: :runtime
81
- requirement: *id004
82
- prerelease: false
83
- name: activerecord
68
+ version_requirements: *id003
84
69
  - !ruby/object:Gem::Dependency
85
- version_requirements: &id005 !ruby/object:Gem::Requirement
70
+ name: activesupport
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
86
73
  none: false
87
74
  requirements:
88
75
  - - ~>
89
76
  - !ruby/object:Gem::Version
90
- hash: 29
77
+ hash: 7
91
78
  segments:
92
- - 2
93
79
  - 3
94
- - 15
95
- version: 2.3.15
80
+ - 0
81
+ - 0
82
+ version: 3.0.0
96
83
  type: :runtime
97
- requirement: *id005
98
- prerelease: false
99
- name: activesupport
84
+ version_requirements: *id004
100
85
  - !ruby/object:Gem::Dependency
101
- version_requirements: &id006 !ruby/object:Gem::Requirement
86
+ name: tidy_ffi
87
+ prerelease: false
88
+ requirement: &id005 !ruby/object:Gem::Requirement
102
89
  none: false
103
90
  requirements:
104
91
  - - ~>
@@ -110,11 +97,11 @@ dependencies:
110
97
  - 2
111
98
  version: 0.1.2
112
99
  type: :runtime
113
- requirement: *id006
114
- prerelease: false
115
- name: tidy_ffi
100
+ version_requirements: *id005
116
101
  - !ruby/object:Gem::Dependency
117
- version_requirements: &id007 !ruby/object:Gem::Requirement
102
+ name: jeremymcanally-context
103
+ prerelease: false
104
+ requirement: &id006 !ruby/object:Gem::Requirement
118
105
  none: false
119
106
  requirements:
120
107
  - - ~>
@@ -126,11 +113,11 @@ dependencies:
126
113
  - 5
127
114
  version: 0.5.5
128
115
  type: :development
129
- requirement: *id007
130
- prerelease: false
131
- name: jeremymcanally-context
116
+ version_requirements: *id006
132
117
  - !ruby/object:Gem::Dependency
133
- version_requirements: &id008 !ruby/object:Gem::Requirement
118
+ name: jeremymcanally-matchy
119
+ prerelease: false
120
+ requirement: &id007 !ruby/object:Gem::Requirement
134
121
  none: false
135
122
  requirements:
136
123
  - - ~>
@@ -142,9 +129,7 @@ dependencies:
142
129
  - 0
143
130
  version: 0.1.0
144
131
  type: :development
145
- requirement: *id008
146
- prerelease: false
147
- name: jeremymcanally-matchy
132
+ version_requirements: *id007
148
133
  description:
149
134
  email: company@entp.com
150
135
  executables: []
@@ -163,12 +148,12 @@ files:
163
148
  - lib/model_formatting/init.rb
164
149
  - lib/model_formatting/instance_methods.rb
165
150
  - lib/model_formatting.rb
166
- - lib/redcarpet_custom.rb
167
151
  - rails/init.rb
168
152
  - test/fixtures/mkd-extraction.txt
169
153
  - test/formatting_test.rb
170
154
  - test/model_formatting_test.rb
171
155
  - test/test_helper.rb
156
+ has_rdoc: true
172
157
  homepage: http://github.com/entp
173
158
  licenses: []
174
159
 
@@ -198,9 +183,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
183
  requirements: []
199
184
 
200
185
  rubyforge_project:
201
- rubygems_version: 1.8.15
186
+ rubygems_version: 1.6.2
202
187
  signing_key:
203
188
  specification_version: 3
204
- summary: Automatically format model attributes using redcarpet (markdown) and Tender/Lighthouse extensions.
189
+ summary: Automatically format model attributes using rdiscount and Tender/Lighthouse extensions.
205
190
  test_files: []
206
191
 
@@ -1,27 +0,0 @@
1
- require 'redcarpet'
2
- module Redcarpet::Render
3
- class Custom < HTML
4
- # include Redcarpet::Render::HTML
5
- def header(title, level)
6
- @headers ||= []
7
- # you can use this permalink style: 1-foo-bar with the level in it
8
- # permalink = "#{level}-#{title.gsub(/\W+/, "-")}"
9
-
10
- # .. or just use title. you might like a better regex here, too
11
- permalink = title.gsub(/\W+/, "-").downcase
12
-
13
- # for extra credit: implement this as its own method
14
- if @headers.include?(permalink)
15
- permalink += "_1"
16
- # my brain hurts
17
- loop do
18
- break if !@headers.include?(permalink)
19
- # generate titles like foo-bar_1, foo-bar_2
20
- permalink.gsub!(/\_(\d+)$/, "_#{$1.to_i + 1}")
21
- end
22
- end
23
- @headers << permalink
24
- %(\n<h#{level} id=\"#{permalink}\"><a name="#{permalink}" class="anchor" href="##{permalink}"></a>#{title}</h#{level}>\n)
25
- end
26
- end
27
- end