rpeg-markdown 1.0 → 1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,6 +16,13 @@ Synopsis
16
16
  >> puts Markdown.new('_Hello World!_', :smart, :filter_html).to_html
17
17
  <p><em>Hello World!</em></p>
18
18
 
19
+ >> puts Markdown.new('_Hello World!_').to_latex
20
+ \emph{Hello World!}
21
+
22
+ >> puts Markdown.new('_Hello World!_').to_groff_mm
23
+ .P
24
+ \fIHello world!\fR
25
+
19
26
  >> PEGMarkdown.new('Hello! World!')
20
27
 
21
28
  Installation / Hacking
@@ -26,20 +33,20 @@ systems should be fine.
26
33
 
27
34
  Install from GEM:
28
35
 
29
- $ sudo gem install rpeg-markdown
36
+ $ sudo gem install rpeg-markdown
30
37
 
31
38
  Hacking:
32
39
 
33
- $ git clone git://github.com/rtomayko/rpeg-markdown.git
34
- $ cd rpeg-markdown
35
- $ rake test
40
+ $ git clone git://github.com/rtomayko/rpeg-markdown.git
41
+ $ cd rpeg-markdown
42
+ $ rake test
36
43
 
37
44
  Patches happily accepted via fork or email.
38
45
 
39
46
  Changes
40
47
  -------
41
48
 
42
- http://github.com/rtomayko/addons/tree/v1.0
49
+ * [Version 1.0](http://github.com/rtomayko/rpeg-markdown/tree/v1.0)
43
50
 
44
51
  COPYING
45
52
  -------
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ require 'rake/gempackagetask'
5
5
  task :default => :test
6
6
 
7
7
  DLEXT = Config::CONFIG['DLEXT']
8
- VERS = '1.0'
8
+ VERS = '1.1'
9
9
 
10
10
  spec =
11
11
  Gem::Specification.new do |s|
@@ -29,10 +29,58 @@ rb_markdown_to_html(int argc, VALUE *argv, VALUE self)
29
29
  return result;
30
30
  }
31
31
 
32
+ static VALUE
33
+ rb_markdown_to_latex(int argc, VALUE *argv, VALUE self)
34
+ {
35
+ /* grab char pointer to markdown input text */
36
+ VALUE text = rb_funcall(self, rb_intern("text"), 0);
37
+ Check_Type(text, T_STRING);
38
+ char * ptext = StringValuePtr(text);
39
+
40
+ /* flip extension bits - note that defaults are different than
41
+ * for HTML */
42
+ int extensions = EXT_SMART | EXT_NOTES | EXT_FILTER_HTML | EXT_FILTER_STYLES;
43
+ if ( rb_funcall(self, rb_intern("smart"), 0) == Qfalse )
44
+ extensions = extensions & ~ EXT_SMART ;
45
+ if ( rb_funcall(self, rb_intern("notes"), 0) == Qfalse )
46
+ extensions = extensions & ~ EXT_NOTES ;
47
+
48
+ char *latex = markdown_to_string(ptext, extensions, LATEX_FORMAT);
49
+ VALUE result = rb_str_new2(latex);
50
+ free(latex);
51
+
52
+ return result;
53
+ }
54
+
55
+ static VALUE
56
+ rb_markdown_to_groff_mm(int argc, VALUE *argv, VALUE self)
57
+ {
58
+ /* grab char pointer to markdown input text */
59
+ VALUE text = rb_funcall(self, rb_intern("text"), 0);
60
+ Check_Type(text, T_STRING);
61
+ char * ptext = StringValuePtr(text);
62
+
63
+ /* flip extension bits - note that defaults are different than
64
+ * for HTML */
65
+ int extensions = EXT_SMART | EXT_NOTES | EXT_FILTER_HTML | EXT_FILTER_STYLES;
66
+ if ( rb_funcall(self, rb_intern("smart"), 0) == Qfalse )
67
+ extensions = extensions & ~ EXT_SMART ;
68
+ if ( rb_funcall(self, rb_intern("notes"), 0) == Qfalse )
69
+ extensions = extensions & ~ EXT_NOTES ;
70
+
71
+ char *groff = markdown_to_string(ptext, extensions, GROFF_MM_FORMAT);
72
+ VALUE result = rb_str_new2(groff);
73
+ free(groff);
74
+
75
+ return result;
76
+ }
77
+
32
78
  void Init_peg_markdown()
33
79
  {
34
80
  rb_cMarkdown = rb_define_class("PEGMarkdown", rb_cObject);
35
81
  rb_define_method(rb_cMarkdown, "to_html", rb_markdown_to_html, -1);
82
+ rb_define_method(rb_cMarkdown, "to_latex", rb_markdown_to_latex, -1);
83
+ rb_define_method(rb_cMarkdown, "to_groff_mm", rb_markdown_to_groff_mm, -1);
36
84
  }
37
85
 
38
86
  // vim: ts=4 sw=4
@@ -3,10 +3,10 @@
3
3
  #include <glib.h>
4
4
 
5
5
  enum markdown_extensions {
6
- EXT_SMART = 0x1,
7
- EXT_NOTES = 0x2,
8
- EXT_FILTER_HTML = 0x4,
9
- EXT_FILTER_STYLES = 0x8
6
+ EXT_SMART = 0x01,
7
+ EXT_NOTES = 0x02,
8
+ EXT_FILTER_HTML = 0x04,
9
+ EXT_FILTER_STYLES = 0x08
10
10
  };
11
11
 
12
12
  enum markdown_formats {
@@ -734,6 +734,7 @@ static void print_groff_mm_element(GString *out, element *elt, int count) {
734
734
 
735
735
  void print_element_list(GString *out, element *elt, int format, int exts) {
736
736
  extensions = exts;
737
+ padded = 2; /* set padding to 2, so no extra blank lines at beginning */
737
738
  switch (format) {
738
739
  case HTML_FORMAT:
739
740
  print_html_element_list(out, elt, false);
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rpeg-markdown
3
3
  version: !ruby/object:Gem::Version
4
- version: "1.0"
4
+ version: "1.1"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Tomayko
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-01 00:00:00 -07:00
12
+ date: 2008-08-09 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15