flannel 0.2.12 → 0.2.13
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/Rakefile +1 -0
- data/VERSION.yml +1 -1
- data/flannel.gemspec +3 -2
- data/lib/flannel/block.treetop +9 -1
- data/lib/flannel/html_formatter.rb +26 -0
- data/test/block_parser_styles_test.rb +12 -0
- data/test/html_formatter_test.rb +14 -0
- metadata +4 -4
data/Rakefile
CHANGED
@@ -7,6 +7,7 @@ begin
|
|
7
7
|
Jeweler::Tasks.new do |gem|
|
8
8
|
gem.name = "flannel"
|
9
9
|
gem.summary = %Q{A soft comfortable worn in markup language for Ruby}
|
10
|
+
gem.description = %Q{Flannel is a markup language that is not intended for your web app. It's for your local use, to write a blog entry in your text editor or a number of other uses.}
|
10
11
|
gem.email = "jamal.hansen@gmail.com"
|
11
12
|
gem.homepage = "http://github.com/rubyyot/flannel"
|
12
13
|
gem.authors = ["Jamal Hansen"]
|
data/VERSION.yml
CHANGED
data/flannel.gemspec
CHANGED
@@ -5,12 +5,13 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{flannel}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.13"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jamal Hansen"]
|
12
|
-
s.date = %q{2010-02-
|
12
|
+
s.date = %q{2010-02-26}
|
13
13
|
s.default_executable = %q{quilt-it}
|
14
|
+
s.description = %q{Flannel is a markup language that is not intended for your web app. It's for your local use, to write a blog entry in your text editor or a number of other uses.}
|
14
15
|
s.email = %q{jamal.hansen@gmail.com}
|
15
16
|
s.executables = ["quilt-it"]
|
16
17
|
s.extra_rdoc_files = [
|
data/lib/flannel/block.treetop
CHANGED
@@ -40,7 +40,7 @@ grammar Block
|
|
40
40
|
end
|
41
41
|
|
42
42
|
rule block_type
|
43
|
-
( feed / preformatted / list / header / blockquote / paragraph
|
43
|
+
( feed / preformatted / list / header / blockquote / dlist / image / paragraph ) {
|
44
44
|
def content
|
45
45
|
[:block_type, text_value.to_sym ]
|
46
46
|
end
|
@@ -87,6 +87,10 @@ grammar Block
|
|
87
87
|
"feed" { def content; text_value; end }
|
88
88
|
end
|
89
89
|
|
90
|
+
rule image
|
91
|
+
"image" { def content; text_value; end }
|
92
|
+
end
|
93
|
+
|
90
94
|
rule preformatted
|
91
95
|
"preformatted" { def content; text_value; end }
|
92
96
|
end
|
@@ -95,6 +99,10 @@ grammar Block
|
|
95
99
|
"list" { def content; text_value; end }
|
96
100
|
end
|
97
101
|
|
102
|
+
rule dlist
|
103
|
+
"dlist" { def content; text_value; end }
|
104
|
+
end
|
105
|
+
|
98
106
|
rule block_id
|
99
107
|
" "+ [a-z\-_]+ {
|
100
108
|
def content
|
@@ -6,6 +6,7 @@ module Flannel
|
|
6
6
|
@tags ={:preformatted => "pre",
|
7
7
|
:feed => "ul",
|
8
8
|
:list => "ul",
|
9
|
+
:dlist => "dl",
|
9
10
|
:header_1 => "h1", #old style
|
10
11
|
:header_2 => "h2",
|
11
12
|
:header_3 => "h3",
|
@@ -50,6 +51,8 @@ module Flannel
|
|
50
51
|
steps << lambda { |text| html_escape text}
|
51
52
|
when :feed
|
52
53
|
steps << lambda { |text| parse_feed text }
|
54
|
+
when :image
|
55
|
+
steps << lambda { |text| create_img text }
|
53
56
|
else
|
54
57
|
steps << lambda { |text| build_wiki_links text }
|
55
58
|
steps << lambda { |text| convert_external_links text }
|
@@ -59,6 +62,10 @@ module Flannel
|
|
59
62
|
steps << lambda { |text| format_list text }
|
60
63
|
end
|
61
64
|
|
65
|
+
if style == :dlist
|
66
|
+
steps << lambda { |text| format_dlist text }
|
67
|
+
end
|
68
|
+
|
62
69
|
steps << lambda { |text| wrap(text, @tags[style], id) }
|
63
70
|
|
64
71
|
steps
|
@@ -74,6 +81,14 @@ module Flannel
|
|
74
81
|
text.gsub(/-\w(.*?)\w>/) { |match| %{<a href="#{wiki_link match}">#{format_link_display(match)}</a>}}
|
75
82
|
end
|
76
83
|
|
84
|
+
def create_img text
|
85
|
+
desc, url = text.split(/\n/, 2)
|
86
|
+
|
87
|
+
return text unless url
|
88
|
+
|
89
|
+
"<img src='#{url}' alt='#{desc}' title='#{desc}' />"
|
90
|
+
end
|
91
|
+
|
77
92
|
def wiki_link topic
|
78
93
|
permalink topic[1..-2]
|
79
94
|
end
|
@@ -113,6 +128,17 @@ module Flannel
|
|
113
128
|
text.split(/\n/).reject { |item| item == "" }.map { |item| wrap(item.chomp, "li") }.join("\n")
|
114
129
|
end
|
115
130
|
|
131
|
+
def format_dlist text
|
132
|
+
text.split(/\n/).reject { |item| item == "" }.map { |item| split_definition(item) }.join("\n")
|
133
|
+
end
|
134
|
+
|
135
|
+
def split_definition item
|
136
|
+
term, definition = item.split(/\-/, 2).map{ |term| term.strip }
|
137
|
+
|
138
|
+
return item unless definition
|
139
|
+
"<dt>#{term}</dt><dd>#{definition}</dd>"
|
140
|
+
end
|
141
|
+
|
116
142
|
def parse_feed text
|
117
143
|
parser = Flannel::FeedParser.new Flannel.cache
|
118
144
|
parser.sub_feeds text
|
@@ -71,5 +71,17 @@ class BlockParserStylesTest < Test::Unit::TestCase
|
|
71
71
|
assert_doc doc, :header_six, nil, "text"
|
72
72
|
end
|
73
73
|
|
74
|
+
def test_definition_list
|
75
|
+
doc = @parser.parse(":dlist:\ntext-foo")
|
76
|
+
|
77
|
+
assert_doc doc, :dlist, nil, "text-foo"
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_image
|
81
|
+
doc = @parser.parse(":image:\nThis is an image\n/images/pickle.jpg")
|
82
|
+
|
83
|
+
assert_doc doc, :image, nil, "This is an image\n/images/pickle.jpg"
|
84
|
+
end
|
85
|
+
|
74
86
|
end
|
75
87
|
|
data/test/html_formatter_test.rb
CHANGED
@@ -61,6 +61,20 @@ class HtmlFormatterTest < Test::Unit::TestCase
|
|
61
61
|
assert_equal "<pre><p>& foo</p></pre>", result
|
62
62
|
end
|
63
63
|
end
|
64
|
+
|
65
|
+
context "definition list" do
|
66
|
+
should "format definition list" do
|
67
|
+
result = @formatter.do("flannel - a wonderful markup dsl\nruby - a wonderful programming language", :dlist)
|
68
|
+
assert_equal "<dl><dt>flannel</dt><dd>a wonderful markup dsl</dd>\n<dt>ruby</dt><dd>a wonderful programming language</dd></dl>", result
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context "image" do
|
73
|
+
should "format image" do
|
74
|
+
result = @formatter.do("This is a picture of a cat\n/images/cat.png", :image)
|
75
|
+
assert_equal "<img src='/images/cat.png' alt='This is a picture of a cat' title='This is a picture of a cat' />", result
|
76
|
+
end
|
77
|
+
end
|
64
78
|
|
65
79
|
context "making permalinks" do
|
66
80
|
should "replace spaces with dashes" do
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 13
|
9
|
+
version: 0.2.13
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jamal Hansen
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-02-
|
17
|
+
date: 2010-02-26 00:00:00 -06:00
|
18
18
|
default_executable: quilt-it
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: "0"
|
66
66
|
type: :development
|
67
67
|
version_requirements: *id004
|
68
|
-
description:
|
68
|
+
description: Flannel is a markup language that is not intended for your web app. It's for your local use, to write a blog entry in your text editor or a number of other uses.
|
69
69
|
email: jamal.hansen@gmail.com
|
70
70
|
executables:
|
71
71
|
- quilt-it
|