mustdown 0.0.2 → 0.1.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.
- checksums.yaml +7 -0
- data/MIT-LICENSE +1 -1
- data/README.md +35 -4
- data/app/helpers/mustdown/mustdown_helper.rb +19 -12
- data/lib/generators/templates/mustdown.rb +2 -0
- data/lib/mustdown/engine.rb +2 -0
- data/lib/mustdown/version.rb +1 -1
- data/lib/mustdown.rb +194 -25
- metadata +35 -38
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bc042b8580cec63abbbd16ce9e0294ba1400988f
|
4
|
+
data.tar.gz: 12afa86fffd4bf116c4d653f3114925572a4b11e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b544f888f2840b3c10fd6b8dae15a0c9fb7e308ab995e16c6af7e0cc0d6a0e63e03eb2e1ca21955b275d0acfdbb1581b61972b760c23b07fcd6127cec8505591
|
7
|
+
data.tar.gz: 57c76a80031a0fa9d1114aa6729f6df5358e9b368bae832158ab24953efb6a49140a2a5ef072cca4c39958da850ac505bf7c7e3897d30ec5fec52eadd0d499d4
|
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
# Mustdown
|
1
|
+
# Mustdown [](http://travis-ci.org/simonc/mustdown) [](https://codeclimate.com/github/simonc/mustdown) [](https://coveralls.io/r/simonc/mustdown?branch=master)
|
2
2
|
|
3
|
-
Mustdown provides helpers to ease the use markdown, mustache and both of
|
3
|
+
Mustdown provides helpers to ease the use of markdown, mustache and both of
|
4
|
+
them.
|
4
5
|
|
5
6
|
## Installation
|
6
7
|
|
@@ -10,7 +11,7 @@ Add the gem to your `Gemfile` :
|
|
10
11
|
|
11
12
|
Then call `bundle install` to install it for your application.
|
12
13
|
|
13
|
-
##
|
14
|
+
## Usage in Rails
|
14
15
|
|
15
16
|
### markdown
|
16
17
|
|
@@ -54,6 +55,37 @@ Output:
|
|
54
55
|
<h1>Hello World</h1>
|
55
56
|
```
|
56
57
|
|
58
|
+
## Usage outside of Rails
|
59
|
+
|
60
|
+
If you're not using Rails, it's possible to use the Mustdown module directly.
|
61
|
+
|
62
|
+
### markdown
|
63
|
+
|
64
|
+
This will render the given text through Markdown.
|
65
|
+
|
66
|
+
``` ruby
|
67
|
+
Mustdown.markdown("# Hello World")
|
68
|
+
# => "<h1>Hello World</h1>"
|
69
|
+
```
|
70
|
+
|
71
|
+
### mustache
|
72
|
+
|
73
|
+
The `mustache` method renders a mustache template with the given binding object.
|
74
|
+
|
75
|
+
``` ruby
|
76
|
+
Mustdown.mustache("Hello {{name}}", name: 'John')
|
77
|
+
# => "Hello John"
|
78
|
+
```
|
79
|
+
|
80
|
+
### mustdown
|
81
|
+
|
82
|
+
This method is more complex since it provides the two previous methods in one.
|
83
|
+
|
84
|
+
``` ruby
|
85
|
+
Mustdown.mustdown("# {{title}}", title: 'Hello World')
|
86
|
+
# => "<h1>Hello World</h1>"
|
87
|
+
```
|
88
|
+
|
57
89
|
## Mustdown configuration
|
58
90
|
|
59
91
|
You can generate a default initializer by calling:
|
@@ -81,7 +113,6 @@ Let's take an example. Given the following models in your app:
|
|
81
113
|
|
82
114
|

|
83
115
|
|
84
|
-
|
85
116
|
Define the following in `config/locales/en.yml`:
|
86
117
|
|
87
118
|
``` yaml
|
@@ -1,21 +1,28 @@
|
|
1
|
+
# Public: Wrapper class for Mustdown.
|
2
|
+
#
|
3
|
+
# This module is a Rails helper that provides an easy access to the Mustdown
|
4
|
+
# rendering methods.
|
1
5
|
module Mustdown
|
2
6
|
module MustdownHelper
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
markdown = Redcarpet::Markdown.new(renderer, md_exts)
|
9
|
-
|
10
|
-
markdown.render(content).html_safe
|
7
|
+
# Public: Calls Mustdown.markdown.
|
8
|
+
#
|
9
|
+
# See Mustdown.markdown.
|
10
|
+
def markdown(*args)
|
11
|
+
Mustdown.markdown(*args).html_safe
|
11
12
|
end
|
12
13
|
|
13
|
-
|
14
|
-
|
14
|
+
# Public: Calls Mustdown.mustache.
|
15
|
+
#
|
16
|
+
# See Mustdown.mustache.
|
17
|
+
def mustache(*args)
|
18
|
+
Mustdown.mustache(*args).html_safe
|
15
19
|
end
|
16
20
|
|
17
|
-
|
18
|
-
|
21
|
+
# Public: Calls Mustdown.mustdown.
|
22
|
+
#
|
23
|
+
# See Mustdown.mustdown.
|
24
|
+
def mustdown(*args)
|
25
|
+
Mustdown.mustdown(*args).html_safe
|
19
26
|
end
|
20
27
|
end
|
21
28
|
end
|
data/lib/mustdown/engine.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
module Mustdown
|
2
2
|
class Engine < ::Rails::Engine
|
3
|
+
# Disable specs generation
|
3
4
|
config.generators do |g|
|
4
5
|
g.test_framework :rspec, view_specs: false
|
5
6
|
end
|
6
7
|
|
8
|
+
# Register MustdownHelper as a Rails helper
|
7
9
|
initializer 'mustdown.action_controller' do |app|
|
8
10
|
ActiveSupport.on_load :action_controller do
|
9
11
|
helper Mustdown::MustdownHelper
|
data/lib/mustdown/version.rb
CHANGED
data/lib/mustdown.rb
CHANGED
@@ -3,37 +3,206 @@ require 'bundler/setup'
|
|
3
3
|
require 'redcarpet'
|
4
4
|
require 'mustache'
|
5
5
|
|
6
|
-
require 'mustdown/engine'
|
6
|
+
require 'mustdown/engine' if defined?(Rails)
|
7
7
|
|
8
|
+
# Public: Provides a simple way to render markdown, mustache and
|
9
|
+
# mustache+markdown templates.
|
10
|
+
#
|
11
|
+
# Examples
|
12
|
+
#
|
13
|
+
# # Rendering a markdown template.
|
14
|
+
# tpl = 'This is **bold** and this is *italic*'
|
15
|
+
# Mustdown.markdown(tpl)
|
16
|
+
# # => '<p>This is <strong>bold</strong> and this is <em>italic</em></p>'
|
17
|
+
#
|
18
|
+
# # Rendering a mustache template.
|
19
|
+
# tpl = 'My name is {{name}} and I am {{age}}'
|
20
|
+
# Mustdown.mustache(tpl, name: 'Tom', age: 20)
|
21
|
+
# # => 'My name is Tom and I am 20'
|
22
|
+
#
|
23
|
+
# # Rendering a mustache+markdown template.
|
24
|
+
# tpl = '# More about {{name}}'
|
25
|
+
# Mustdown.mustdown(tpl, name: 'Tom')
|
26
|
+
# # => '<h1>More about Tom</h1>'
|
8
27
|
module Mustdown
|
9
|
-
|
10
|
-
attr_accessor :markdown_extensions
|
11
|
-
attr_accessor :renderer_options
|
12
|
-
attr_accessor :renderer
|
28
|
+
extend self
|
13
29
|
|
14
|
-
|
15
|
-
|
16
|
-
end
|
30
|
+
# Public: Sets the Hash of markdown extensions.
|
31
|
+
attr_writer :markdown_extensions
|
17
32
|
|
18
|
-
|
19
|
-
|
20
|
-
no_intra_emphasis: true,
|
21
|
-
tables: true,
|
22
|
-
fenced_code_blocks: true,
|
23
|
-
autolink: true,
|
24
|
-
strikethrough: true
|
25
|
-
}
|
26
|
-
end
|
33
|
+
# Public: Sets the Hash of markdown renderer options.
|
34
|
+
attr_writer :renderer_options
|
27
35
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
36
|
+
# Public: Sets the markdown renderer (a Redcarpet compatible renderer).
|
37
|
+
#
|
38
|
+
# Note: It accepts a class or an instance.
|
39
|
+
attr_writer :markdown_renderer
|
40
|
+
|
41
|
+
# Public: Provides a way to configure Mustdown.
|
42
|
+
#
|
43
|
+
# Yields itself.
|
44
|
+
#
|
45
|
+
# Examples
|
46
|
+
#
|
47
|
+
# # Configuring Mustdown
|
48
|
+
# Mustdown.configure do |config|
|
49
|
+
# config.markdown_renderer = MyCustomRenderer
|
50
|
+
# end
|
51
|
+
#
|
52
|
+
# Returns nothing.
|
53
|
+
def configure
|
54
|
+
yield self
|
55
|
+
end
|
56
|
+
|
57
|
+
# Public: Returns the default markdown extensions
|
58
|
+
#
|
59
|
+
# Returns a Hash.
|
60
|
+
def markdown_extensions
|
61
|
+
@markdown_extensions ||= {
|
62
|
+
no_intra_emphasis: true,
|
63
|
+
tables: true,
|
64
|
+
fenced_code_blocks: true,
|
65
|
+
autolink: true,
|
66
|
+
strikethrough: true
|
67
|
+
}
|
68
|
+
end
|
69
|
+
|
70
|
+
# Public: Returns the default markdown renderer options
|
71
|
+
#
|
72
|
+
# Returns a Hash.
|
73
|
+
def renderer_options
|
74
|
+
@renderer_options ||= {
|
75
|
+
no_styles: true,
|
76
|
+
safe_links_only: true
|
77
|
+
}
|
78
|
+
end
|
79
|
+
|
80
|
+
# Public: Returns the markdown renderer.
|
81
|
+
#
|
82
|
+
# This can be a class or an object. When it's a class, a new instance will be
|
83
|
+
# created when rendering.
|
84
|
+
#
|
85
|
+
# Defaults to Redcarpet::Render::HTML
|
86
|
+
#
|
87
|
+
# Returns an Object.
|
88
|
+
def markdown_renderer
|
89
|
+
@markdown_renderer ||= Redcarpet::Render::HTML
|
90
|
+
end
|
91
|
+
|
92
|
+
# Deprecated: Returns the markdown renderer.
|
93
|
+
#
|
94
|
+
# Use markdown_renderer instead.
|
95
|
+
#
|
96
|
+
# Returns an Object.
|
97
|
+
def renderer
|
98
|
+
warn "Mustdown.renderer is deprecated. Use Mustdown.markdown_renderer instead."
|
99
|
+
self.markdown_renderer
|
100
|
+
end
|
101
|
+
|
102
|
+
# Deprecated: Sets the markdown renderer
|
103
|
+
#
|
104
|
+
# Use markdown_renderer= instead.
|
105
|
+
#
|
106
|
+
# Returns nothing.
|
107
|
+
def renderer=(value)
|
108
|
+
warn "Mustdown.renderer= is deprecated. Use Mustdown.markdown_renderer= instead."
|
109
|
+
self.markdown_renderer = value
|
110
|
+
end
|
111
|
+
|
112
|
+
# Public: Renders a markdown template.
|
113
|
+
#
|
114
|
+
# template - The String template containing markdown template.
|
115
|
+
# markdown_extensions - A Hash of additional extensions that will be merged
|
116
|
+
# with the default ones.
|
117
|
+
# renderer_options - A Hash of additional markdown renderer options that
|
118
|
+
# will be merged with the default ones.
|
119
|
+
#
|
120
|
+
# Examples
|
121
|
+
#
|
122
|
+
# tpl = '# Hello world'
|
123
|
+
# Mustdown.markdown(tpl)
|
124
|
+
# # => '<h1>Hello world</h1>'
|
125
|
+
#
|
126
|
+
# tpl = 'http://example.com [example](http://example.com)'
|
127
|
+
# Mustdown.markdown(tpl, autolink: false)
|
128
|
+
# # => '<p>http://example.com <a href="http://example.com">example</a></p>'
|
129
|
+
#
|
130
|
+
# tpl = 'http://example.com [example](http://example.com)'
|
131
|
+
# Mustdown.markdown(tpl, { autolink: false }, { no_links: true })
|
132
|
+
# # => '<p>http://example.com [example](http://example.com)</p>'
|
133
|
+
#
|
134
|
+
# Returns the rendered markdown String.
|
135
|
+
def markdown(template, markdown_extensions = {}, renderer_options = {})
|
136
|
+
exts = markdown_extensions.merge(markdown_extensions)
|
137
|
+
opts = renderer_options.merge(renderer_options)
|
138
|
+
|
139
|
+
renderer = markdown_renderer.new(opts)
|
140
|
+
markdown = Redcarpet::Markdown.new(renderer, exts)
|
141
|
+
|
142
|
+
markdown.render(template)
|
143
|
+
end
|
144
|
+
|
145
|
+
# Public: Renders a mustache template.
|
146
|
+
#
|
147
|
+
# template - The String template containing mustache template.
|
148
|
+
# resource - The Hash or Object used as binding for the template.
|
149
|
+
#
|
150
|
+
# Examples
|
151
|
+
#
|
152
|
+
# tpl = 'Hello {{name}}'
|
153
|
+
# Mustdown.mustache(tpl, name: 'Tom')
|
154
|
+
# # => 'Hello Tom'
|
155
|
+
#
|
156
|
+
# tpl = 'Hello {{name}}'
|
157
|
+
# user = User.find(1) # A user named Tom
|
158
|
+
# Mustdown.mustache(tpl, user)
|
159
|
+
# # => 'Hello Tom'
|
160
|
+
#
|
161
|
+
# Returns the rendered mustache String.
|
162
|
+
def mustache(template, resource)
|
163
|
+
Mustache.render(template, resource)
|
164
|
+
end
|
165
|
+
|
166
|
+
# Public: Renders a mustache+markdown template.
|
167
|
+
#
|
168
|
+
# template - The String template containing mustache+markdown template.
|
169
|
+
# resource - The Hash or Object used as binding for the template.
|
170
|
+
# markdown_args - Zero, one or two Hash objects that will be passed to the
|
171
|
+
# markdown method.
|
172
|
+
#
|
173
|
+
# Examples
|
174
|
+
#
|
175
|
+
# tpl = '# Hello {{name}}'
|
176
|
+
# Mustdown.mustdown(tpl, name: 'Tom')
|
177
|
+
# # => '<h1>Hello Tom</h1>'
|
178
|
+
#
|
179
|
+
# tpl = '{{url}}'
|
180
|
+
# website = { url: 'http://example.com' }
|
181
|
+
# Mustdown.markdown(tpl, website, autolink: false)
|
182
|
+
# # => '<p>http://example.com</p>'
|
183
|
+
#
|
184
|
+
# tpl = '[{{title}}]({{url}})'
|
185
|
+
# website = { title: 'Example', url: 'http://example.com' }
|
186
|
+
# Mustdown.markdown(tpl, website, { autolink: false }, { no_links: true })
|
187
|
+
# # => '<p>[Example](http://example.com)</p>'
|
188
|
+
#
|
189
|
+
# Returns the rendered mustache+arkdown String.
|
190
|
+
def mustdown(template, resource, *markdown_args)
|
191
|
+
markdown mustache(template, resource), *markdown_args
|
192
|
+
end
|
34
193
|
|
35
|
-
|
36
|
-
|
194
|
+
# Private: Outputs a warning message.
|
195
|
+
#
|
196
|
+
# In a Rails app uses Rails.logger, $stderr otherwise.
|
197
|
+
#
|
198
|
+
# message - The String message to display as a warning.
|
199
|
+
#
|
200
|
+
# Returns nothing.
|
201
|
+
def warn(message)
|
202
|
+
if defined?(Rails)
|
203
|
+
Rails.logger.warn message
|
204
|
+
else
|
205
|
+
$stderr.puts "WARNING: #{message}"
|
37
206
|
end
|
38
207
|
end
|
39
208
|
end
|
metadata
CHANGED
@@ -1,94 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mustdown
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Simon COURTOIS
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-07-31 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rails
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 3.1.1
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 3.1.1
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: redcarpet
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
33
|
+
version: 2.0.0
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
40
|
+
version: 2.0.0
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: mustache
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: 0.99.4
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: 0.99.4
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: coveralls
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.6'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.6'
|
62
69
|
- !ruby/object:Gem::Dependency
|
63
70
|
name: sqlite3
|
64
71
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
72
|
requirements:
|
67
|
-
- -
|
73
|
+
- - '>='
|
68
74
|
- !ruby/object:Gem::Version
|
69
75
|
version: '0'
|
70
76
|
type: :development
|
71
77
|
prerelease: false
|
72
78
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
79
|
requirements:
|
75
|
-
- -
|
80
|
+
- - '>='
|
76
81
|
- !ruby/object:Gem::Version
|
77
82
|
version: '0'
|
78
83
|
- !ruby/object:Gem::Dependency
|
79
84
|
name: rspec-rails
|
80
85
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
86
|
requirements:
|
83
|
-
- -
|
87
|
+
- - '>='
|
84
88
|
- !ruby/object:Gem::Version
|
85
89
|
version: '0'
|
86
90
|
type: :development
|
87
91
|
prerelease: false
|
88
92
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
93
|
requirements:
|
91
|
-
- -
|
94
|
+
- - '>='
|
92
95
|
- !ruby/object:Gem::Version
|
93
96
|
version: '0'
|
94
97
|
description: Rails helpers to use Markdown and Mustache all together
|
@@ -108,33 +111,27 @@ files:
|
|
108
111
|
- Rakefile
|
109
112
|
- README.md
|
110
113
|
homepage: http://github.com/simonc/mustdown
|
111
|
-
licenses:
|
114
|
+
licenses:
|
115
|
+
- MIT
|
116
|
+
metadata: {}
|
112
117
|
post_install_message:
|
113
118
|
rdoc_options: []
|
114
119
|
require_paths:
|
115
120
|
- lib
|
116
121
|
required_ruby_version: !ruby/object:Gem::Requirement
|
117
|
-
none: false
|
118
122
|
requirements:
|
119
|
-
- -
|
123
|
+
- - '>='
|
120
124
|
- !ruby/object:Gem::Version
|
121
125
|
version: '0'
|
122
|
-
segments:
|
123
|
-
- 0
|
124
|
-
hash: -3051764860609270774
|
125
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
|
-
none: false
|
127
127
|
requirements:
|
128
|
-
- -
|
128
|
+
- - '>='
|
129
129
|
- !ruby/object:Gem::Version
|
130
130
|
version: '0'
|
131
|
-
segments:
|
132
|
-
- 0
|
133
|
-
hash: -3051764860609270774
|
134
131
|
requirements: []
|
135
132
|
rubyforge_project:
|
136
|
-
rubygems_version:
|
133
|
+
rubygems_version: 2.0.3
|
137
134
|
signing_key:
|
138
|
-
specification_version:
|
135
|
+
specification_version: 4
|
139
136
|
summary: Rails helpers to use Markdown and Mustache all together
|
140
137
|
test_files: []
|