markup_parser 0.0.6 → 0.0.7
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/README.md +29 -0
- data/lib/markup_parser/default.rb +7 -7
- data/lib/markup_parser/markdown/uv_html_render.rb +11 -1
- data/lib/markup_parser/markdown.rb +3 -0
- data/lib/markup_parser/version.rb +1 -1
- metadata +12 -12
data/README.md
CHANGED
@@ -13,5 +13,34 @@ So I created my own little library.
|
|
13
13
|
|
14
14
|
## Usage
|
15
15
|
|
16
|
+
List the available markup parsers:
|
16
17
|
|
18
|
+
MarkupParser.format_parsers #=> { 'markdown' => MarkupParser::Markdown, 'rdoc' => MarkupParser::Rdoc }
|
17
19
|
|
20
|
+
Parse some text to Html:
|
21
|
+
|
22
|
+
MarkupParser::Markdown.new("body").to_html #=> "<p>body<p>"
|
23
|
+
|
24
|
+
**Note** that the `MarkupParser::Markdown` is the parser for Markdown, and can be reused by just creating a new instance.
|
25
|
+
|
26
|
+
## Styling Code Blocks
|
27
|
+
|
28
|
+
Another goal was to simplify code block styling. MarkupParser doesn't stylize the code, but instead lets you easily accomplish it with your own code styler:
|
29
|
+
|
30
|
+
markup = MarkupParser::Html.new("<pre lang='ruby'>Class</pre>")
|
31
|
+
markup.stylize_code_blocks { |code, lang|
|
32
|
+
Albino.colorize(code, lang)
|
33
|
+
}
|
34
|
+
markup.to_html #=> "<pre class='highlight'><span class='class'>Class</span></pre>"
|
35
|
+
|
36
|
+
Or:
|
37
|
+
|
38
|
+
MarkupParser::Html.new("<pre lang='ruby'>Class</pre>").stylize_code_blocks { |code, lang|
|
39
|
+
Albino.colorize(code, lang)
|
40
|
+
}.to_html #=> "<pre class='highlight'><span class='class'>Class</span></pre>"
|
41
|
+
|
42
|
+
For each code block recognized by the markup language, `stylize_code_blocks` accepts a block with parameters: `code, lang` for you to use.
|
43
|
+
|
44
|
+
## Adding Markup Parsers
|
45
|
+
|
46
|
+
Ask me (Todo)
|
@@ -2,7 +2,7 @@ require 'nokogiri'
|
|
2
2
|
|
3
3
|
module MarkupParser
|
4
4
|
class Default
|
5
|
-
attr_reader :original_text, :
|
5
|
+
attr_reader :original_text, :nokogiri_parser, :html_text, :lexer_proc
|
6
6
|
|
7
7
|
def initialize(text='', &lexer)
|
8
8
|
@original_text = hot_fixes(text)
|
@@ -13,7 +13,7 @@ module MarkupParser
|
|
13
13
|
# Returns the fully stylized and sanitized HTML
|
14
14
|
def to_html
|
15
15
|
begin
|
16
|
-
|
16
|
+
nokogiri_parser.to_xhtml(:save_with => Nokogiri::XML::Node::SaveOptions::AS_XHTML)
|
17
17
|
rescue => e
|
18
18
|
puts <<-ERROR
|
19
19
|
******************
|
@@ -28,17 +28,17 @@ module MarkupParser
|
|
28
28
|
|
29
29
|
|
30
30
|
# Instantiates a Nokoguri::HTML fragment parser
|
31
|
-
def
|
31
|
+
def nokogiri_parser
|
32
32
|
begin
|
33
|
-
@
|
33
|
+
@nokogiri_parser ||= ::Nokogiri::HTML::DocumentFragment.parse(html_text)
|
34
34
|
rescue => e
|
35
35
|
puts "
|
36
36
|
\n******************
|
37
|
-
Error in #{self.class}#
|
37
|
+
Error in #{self.class}#nokogiri_parser.
|
38
38
|
Reason: #{e.message}.
|
39
39
|
Putting error message into the output.
|
40
40
|
******************\n"
|
41
|
-
@
|
41
|
+
@nokogiri_parser = ::Nokogiri::HTML::DocumentFragment.parse("<p class='parse_error'>Error in parsing in #{self.class}: #{e.message}.</p>")
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
@@ -60,7 +60,7 @@ module MarkupParser
|
|
60
60
|
# Stylizes the code blocks in the html_text.
|
61
61
|
# Uses either a passed in lexer Proc or the default_lexer
|
62
62
|
def stylize_code_blocks
|
63
|
-
|
63
|
+
nokogiri_parser.search('pre').each do |node|
|
64
64
|
begin
|
65
65
|
next unless lang = node['lang']
|
66
66
|
text = node.inner_text
|
@@ -1,6 +1,16 @@
|
|
1
1
|
# HTML renderer with Ultraviolet Code Lexer
|
2
2
|
class UvHtmlRender < Redcarpet::Render::HTML
|
3
3
|
def block_code(code, language)
|
4
|
-
|
4
|
+
begin
|
5
|
+
return Uv.parse(code, "xhtml", language, false, "railscasts")
|
6
|
+
rescue => e
|
7
|
+
puts "
|
8
|
+
\n******************
|
9
|
+
Error in parsing <pre lang=''> block.
|
10
|
+
Reason: #{e.message}.
|
11
|
+
Continueing code block parsing.
|
12
|
+
******************\n"
|
13
|
+
return code
|
14
|
+
end
|
5
15
|
end
|
6
16
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: markup_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-09-
|
12
|
+
date: 2011-09-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
16
|
-
requirement: &
|
16
|
+
requirement: &70258925224740 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70258925224740
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: uv
|
27
|
-
requirement: &
|
27
|
+
requirement: &70258925191720 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70258925191720
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rdoc
|
38
|
-
requirement: &
|
38
|
+
requirement: &70258925190820 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70258925190820
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rake
|
49
|
-
requirement: &
|
49
|
+
requirement: &70258925190380 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70258925190380
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: minitest
|
60
|
-
requirement: &
|
60
|
+
requirement: &70258925189700 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70258925189700
|
69
69
|
description: ! 'Standardized markup parsers to use a single format: an object. Instantiate
|
70
70
|
a specific markup class with text to output formated Html. Allows for easy code
|
71
71
|
block highlighting using a Proc; defaults to Uv (ruby Ultraviolet)'
|