org-ruby 0.2.0 → 0.3.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.
Files changed (56) hide show
  1. data/History.txt +32 -24
  2. data/README.txt +66 -66
  3. data/Rakefile +26 -22
  4. data/bin/org-ruby +40 -40
  5. data/lib/org-ruby.rb +50 -48
  6. data/lib/org-ruby/headline.rb +75 -75
  7. data/lib/org-ruby/html_output_buffer.rb +81 -80
  8. data/lib/org-ruby/line.rb +173 -172
  9. data/lib/org-ruby/output_buffer.rb +154 -154
  10. data/lib/org-ruby/parser.rb +76 -72
  11. data/lib/org-ruby/regexp_helper.rb +156 -156
  12. data/lib/org-ruby/textile_output_buffer.rb +67 -67
  13. data/spec/data/freeform.org +111 -111
  14. data/spec/data/hyp-planning.org +335 -335
  15. data/spec/data/remember.org +53 -53
  16. data/spec/headline_spec.rb +55 -55
  17. data/spec/html_examples/block_code.html +30 -29
  18. data/spec/html_examples/block_code.org +35 -35
  19. data/spec/html_examples/blockquote.html +7 -7
  20. data/spec/html_examples/blockquote.org +13 -13
  21. data/spec/html_examples/escape-pre.html +7 -0
  22. data/spec/html_examples/escape-pre.org +6 -0
  23. data/spec/html_examples/inline-formatting.html +10 -10
  24. data/spec/html_examples/inline-formatting.org +17 -17
  25. data/spec/html_examples/lists.html +19 -19
  26. data/spec/html_examples/lists.org +36 -36
  27. data/spec/html_examples/only-list.html +5 -0
  28. data/spec/html_examples/only-list.org +3 -0
  29. data/spec/html_examples/only-table.html +6 -0
  30. data/spec/html_examples/only-table.org +5 -0
  31. data/spec/html_examples/tables.html +20 -20
  32. data/spec/html_examples/tables.org +26 -26
  33. data/spec/html_examples/text.html +2 -2
  34. data/spec/html_examples/text.org +16 -16
  35. data/spec/line_spec.rb +89 -89
  36. data/spec/parser_spec.rb +86 -86
  37. data/spec/regexp_helper_spec.rb +57 -57
  38. data/spec/spec_helper.rb +20 -20
  39. data/spec/textile_examples/block_code.org +35 -35
  40. data/spec/textile_examples/block_code.textile +29 -29
  41. data/spec/textile_examples/blockquote.org +13 -13
  42. data/spec/textile_examples/blockquote.textile +11 -11
  43. data/spec/textile_examples/keywords.org +13 -13
  44. data/spec/textile_examples/keywords.textile +11 -11
  45. data/spec/textile_examples/links.org +11 -11
  46. data/spec/textile_examples/links.textile +10 -10
  47. data/spec/textile_examples/lists.org +36 -36
  48. data/spec/textile_examples/lists.textile +20 -20
  49. data/spec/textile_examples/single-space-plain-list.org +13 -13
  50. data/spec/textile_examples/single-space-plain-list.textile +10 -10
  51. data/spec/textile_examples/tables.org +26 -26
  52. data/spec/textile_examples/tables.textile +23 -23
  53. data/spec/textile_output_buffer_spec.rb +21 -21
  54. data/tasks/test_case.rake +49 -0
  55. metadata +21 -5
  56. data/.bnsignore +0 -18
@@ -1,86 +1,86 @@
1
-
2
- require File.join(File.dirname(__FILE__), %w[spec_helper])
3
-
4
- describe Orgmode::Parser do
5
- it "should open ORG files" do
6
- parser = Orgmode::Parser.load(RememberFile)
7
- end
8
-
9
- it "should fail on non-existant files" do
10
- lambda { parser = Orgmode::Parser.load("does-not-exist.org") }.should raise_error
11
- end
12
-
13
- it "should load all of the lines" do
14
- parser = Orgmode::Parser.load(RememberFile)
15
- parser.lines.length.should eql(53)
16
- end
17
-
18
- it "should find all headlines" do
19
- parser = Orgmode::Parser.load(RememberFile)
20
- parser.should have(12).headlines
21
- end
22
-
23
- it "can find a headline by index" do
24
- parser = Orgmode::Parser.load(RememberFile)
25
- parser.headlines[1].line.should eql("** YAML header in Webby\n")
26
- end
27
-
28
- it "should determine headline levels" do
29
- parser = Orgmode::Parser.load(RememberFile)
30
- parser.headlines[0].level.should eql(1)
31
- parser.headlines[1].level.should eql(2)
32
- end
33
-
34
- it "should put body lines in headlines" do
35
- parser = Orgmode::Parser.load(RememberFile)
36
- parser.headlines[0].should have(0).body_lines
37
- parser.headlines[1].should have(6).body_lines
38
- end
39
-
40
- it "should understand lines before the first headline" do
41
- parser = Orgmode::Parser.load(FreeformFile)
42
- parser.should have(19).header_lines
43
- end
44
-
45
- it "should return a textile string" do
46
- parser = Orgmode::Parser.load(FreeformFile)
47
- parser.to_textile.should be_kind_of(String)
48
- end
49
-
50
- it "can translate textile files" do
51
- data_directory = File.join(File.dirname(__FILE__), "textile_examples")
52
- org_files = File.expand_path(File.join(data_directory, "*.org" ))
53
- files = Dir.glob(org_files)
54
- files.each do |file|
55
- basename = File.basename(file, ".org")
56
- textile_name = File.join(data_directory, basename + ".textile")
57
- textile_name = File.expand_path(textile_name)
58
-
59
- expected = IO.read(textile_name)
60
- expected.should be_kind_of(String)
61
- parser = Orgmode::Parser.new(IO.read(file))
62
- actual = parser.to_textile
63
- actual.should be_kind_of(String)
64
- actual.should == expected
65
- end
66
- end
67
-
68
- it "can translate to html" do
69
- data_directory = File.join(File.dirname(__FILE__), "html_examples")
70
- org_files = File.expand_path(File.join(data_directory, "*.org" ))
71
- files = Dir.glob(org_files)
72
- files.each do |file|
73
- basename = File.basename(file, ".org")
74
- textile_name = File.join(data_directory, basename + ".html")
75
- textile_name = File.expand_path(textile_name)
76
-
77
- expected = IO.read(textile_name)
78
- expected.should be_kind_of(String)
79
- parser = Orgmode::Parser.new(IO.read(file))
80
- actual = parser.to_html
81
- actual.should be_kind_of(String)
82
- actual.should == expected
83
- end
84
- end
85
- end
86
-
1
+
2
+ require File.join(File.dirname(__FILE__), %w[spec_helper])
3
+
4
+ describe Orgmode::Parser do
5
+ it "should open ORG files" do
6
+ parser = Orgmode::Parser.load(RememberFile)
7
+ end
8
+
9
+ it "should fail on non-existant files" do
10
+ lambda { parser = Orgmode::Parser.load("does-not-exist.org") }.should raise_error
11
+ end
12
+
13
+ it "should load all of the lines" do
14
+ parser = Orgmode::Parser.load(RememberFile)
15
+ parser.lines.length.should eql(53)
16
+ end
17
+
18
+ it "should find all headlines" do
19
+ parser = Orgmode::Parser.load(RememberFile)
20
+ parser.should have(12).headlines
21
+ end
22
+
23
+ it "can find a headline by index" do
24
+ parser = Orgmode::Parser.load(RememberFile)
25
+ parser.headlines[1].line.should eql("** YAML header in Webby\n")
26
+ end
27
+
28
+ it "should determine headline levels" do
29
+ parser = Orgmode::Parser.load(RememberFile)
30
+ parser.headlines[0].level.should eql(1)
31
+ parser.headlines[1].level.should eql(2)
32
+ end
33
+
34
+ it "should put body lines in headlines" do
35
+ parser = Orgmode::Parser.load(RememberFile)
36
+ parser.headlines[0].should have(0).body_lines
37
+ parser.headlines[1].should have(6).body_lines
38
+ end
39
+
40
+ it "should understand lines before the first headline" do
41
+ parser = Orgmode::Parser.load(FreeformFile)
42
+ parser.should have(19).header_lines
43
+ end
44
+
45
+ it "should return a textile string" do
46
+ parser = Orgmode::Parser.load(FreeformFile)
47
+ parser.to_textile.should be_kind_of(String)
48
+ end
49
+
50
+ it "can translate textile files" do
51
+ data_directory = File.join(File.dirname(__FILE__), "textile_examples")
52
+ org_files = File.expand_path(File.join(data_directory, "*.org" ))
53
+ files = Dir.glob(org_files)
54
+ files.each do |file|
55
+ basename = File.basename(file, ".org")
56
+ textile_name = File.join(data_directory, basename + ".textile")
57
+ textile_name = File.expand_path(textile_name)
58
+
59
+ expected = IO.read(textile_name)
60
+ expected.should be_kind_of(String)
61
+ parser = Orgmode::Parser.new(IO.read(file))
62
+ actual = parser.to_textile
63
+ actual.should be_kind_of(String)
64
+ actual.should == expected
65
+ end
66
+ end
67
+
68
+ it "can translate to html" do
69
+ data_directory = File.join(File.dirname(__FILE__), "html_examples")
70
+ org_files = File.expand_path(File.join(data_directory, "*.org" ))
71
+ files = Dir.glob(org_files)
72
+ files.each do |file|
73
+ basename = File.basename(file, ".org")
74
+ textile_name = File.join(data_directory, basename + ".html")
75
+ textile_name = File.expand_path(textile_name)
76
+
77
+ expected = IO.read(textile_name)
78
+ expected.should be_kind_of(String)
79
+ parser = Orgmode::Parser.new(IO.read(file))
80
+ actual = parser.to_html
81
+ actual.should be_kind_of(String)
82
+ actual.should == expected
83
+ end
84
+ end
85
+ end
86
+
@@ -1,57 +1,57 @@
1
- require File.join(File.dirname(__FILE__), %w[spec_helper])
2
-
3
- describe Orgmode::RegexpHelper do
4
- it "should recognize simple markup" do
5
- e = Orgmode::RegexpHelper.new
6
- total = 0
7
- e.match_all("/italic/") do |border, string|
8
- border.should eql("/")
9
- string.should eql("italic")
10
- total += 1
11
- end
12
- total.should eql(1)
13
-
14
- total = 0
15
- borders = %w[* / ~]
16
- strings = %w[bold italic verbatim]
17
- e.match_all("This string contains *bold*, /italic/, and ~verbatim~ text.")\
18
- do |border, str|
19
- border.should eql(borders[total])
20
- str.should eql(strings[total])
21
- total += 1
22
- end
23
- total.should eql(3)
24
- end
25
-
26
- it "should not get confused by links" do
27
- e = Orgmode::RegexpHelper.new
28
- total = 0
29
- # Make sure the slashes in these links aren't treated as italics
30
- e.match_all("[[http://www.bing.com/twitter]]") do |border, str|
31
- total += 1
32
- end
33
- total.should eql(0)
34
- end
35
-
36
- it "should correctly perform substitutions" do
37
- e = Orgmode::RegexpHelper.new
38
- map = {
39
- "*" => "strong",
40
- "/" => "i",
41
- "~" => "pre"
42
- }
43
- n = e.rewrite_emphasis("This string contains *bold*, /italic/, and ~verbatim~ text.") do |border, str|
44
- "<#{map[border]}>#{str}</#{map[border]}>"
45
- end
46
- n.should eql("This string contains <strong>bold</strong>, <i>italic</i>, and <pre>verbatim</pre> text.")
47
- end
48
-
49
- it "should allow link rewriting" do
50
- e = Orgmode::RegexpHelper.new
51
- str = e.rewrite_links("[[http://www.bing.com]]") do |link,text|
52
- text ||= link
53
- "\"#{text}\":#{link}"
54
- end
55
- str.should eql("\"http://www.bing.com\":http://www.bing.com")
56
- end
57
- end # describe Orgmode::RegexpHelper
1
+ require File.join(File.dirname(__FILE__), %w[spec_helper])
2
+
3
+ describe Orgmode::RegexpHelper do
4
+ it "should recognize simple markup" do
5
+ e = Orgmode::RegexpHelper.new
6
+ total = 0
7
+ e.match_all("/italic/") do |border, string|
8
+ border.should eql("/")
9
+ string.should eql("italic")
10
+ total += 1
11
+ end
12
+ total.should eql(1)
13
+
14
+ total = 0
15
+ borders = %w[* / ~]
16
+ strings = %w[bold italic verbatim]
17
+ e.match_all("This string contains *bold*, /italic/, and ~verbatim~ text.")\
18
+ do |border, str|
19
+ border.should eql(borders[total])
20
+ str.should eql(strings[total])
21
+ total += 1
22
+ end
23
+ total.should eql(3)
24
+ end
25
+
26
+ it "should not get confused by links" do
27
+ e = Orgmode::RegexpHelper.new
28
+ total = 0
29
+ # Make sure the slashes in these links aren't treated as italics
30
+ e.match_all("[[http://www.bing.com/twitter]]") do |border, str|
31
+ total += 1
32
+ end
33
+ total.should eql(0)
34
+ end
35
+
36
+ it "should correctly perform substitutions" do
37
+ e = Orgmode::RegexpHelper.new
38
+ map = {
39
+ "*" => "strong",
40
+ "/" => "i",
41
+ "~" => "pre"
42
+ }
43
+ n = e.rewrite_emphasis("This string contains *bold*, /italic/, and ~verbatim~ text.") do |border, str|
44
+ "<#{map[border]}>#{str}</#{map[border]}>"
45
+ end
46
+ n.should eql("This string contains <strong>bold</strong>, <i>italic</i>, and <pre>verbatim</pre> text.")
47
+ end
48
+
49
+ it "should allow link rewriting" do
50
+ e = Orgmode::RegexpHelper.new
51
+ str = e.rewrite_links("[[http://www.bing.com]]") do |link,text|
52
+ text ||= link
53
+ "\"#{text}\":#{link}"
54
+ end
55
+ str.should eql("\"http://www.bing.com\":http://www.bing.com")
56
+ end
57
+ end # describe Orgmode::RegexpHelper
@@ -1,20 +1,20 @@
1
-
2
- require File.expand_path(
3
- File.join(File.dirname(__FILE__), %w[.. lib org-ruby]))
4
-
5
-
6
- RememberFile = File.join(File.dirname(__FILE__), %w[data remember.org])
7
- FreeformFile = File.join(File.dirname(__FILE__), %w[data freeform.org])
8
-
9
-
10
- Spec::Runner.configure do |config|
11
- # == Mock Framework
12
- #
13
- # RSpec uses it's own mocking framework by default. If you prefer to
14
- # use mocha, flexmock or RR, uncomment the appropriate line:
15
- #
16
- # config.mock_with :mocha
17
- # config.mock_with :flexmock
18
- # config.mock_with :rr
19
- end
20
-
1
+
2
+ require File.expand_path(
3
+ File.join(File.dirname(__FILE__), %w[.. lib org-ruby]))
4
+
5
+
6
+ RememberFile = File.join(File.dirname(__FILE__), %w[data remember.org])
7
+ FreeformFile = File.join(File.dirname(__FILE__), %w[data freeform.org])
8
+
9
+
10
+ Spec::Runner.configure do |config|
11
+ # == Mock Framework
12
+ #
13
+ # RSpec uses it's own mocking framework by default. If you prefer to
14
+ # use mocha, flexmock or RR, uncomment the appropriate line:
15
+ #
16
+ # config.mock_with :mocha
17
+ # config.mock_with :flexmock
18
+ # config.mock_with :rr
19
+ end
20
+
@@ -1,35 +1,35 @@
1
- * Block Code
2
-
3
- I need to get block code examples working. In =orgmode=, they look
4
- like this:
5
-
6
- #+BEGIN_EXAMPLE
7
-
8
- def initialize(output)
9
- @output = output
10
- @buffer = ""
11
- @output_type = :start
12
- @list_indent_stack = []
13
- @paragraph_modifier = nil
14
-
15
- @logger = Logger.new(STDERR)
16
- @logger.level = Logger::WARN
17
- end
18
-
19
- #+END_EXAMPLE
20
-
21
- And now I should be back to normal text.
22
-
23
- Putting in another paragraph for good measure.
24
-
25
-
26
- Code should also get cancelled by a list, thus:
27
-
28
- #+BEGIN_EXAMPLE
29
- This is my code!
30
-
31
- Another line!
32
- #+END_EXAMPLE
33
-
34
- - My list should cancel this.
35
- - Another list line.
1
+ * Block Code
2
+
3
+ I need to get block code examples working. In =orgmode=, they look
4
+ like this:
5
+
6
+ #+BEGIN_EXAMPLE
7
+
8
+ def initialize(output)
9
+ @output = output
10
+ @buffer = ""
11
+ @output_type = :start
12
+ @list_indent_stack = []
13
+ @paragraph_modifier = nil
14
+
15
+ @logger = Logger.new(STDERR)
16
+ @logger.level = Logger::WARN
17
+ end
18
+
19
+ #+END_EXAMPLE
20
+
21
+ And now I should be back to normal text.
22
+
23
+ Putting in another paragraph for good measure.
24
+
25
+
26
+ Code should also get cancelled by a list, thus:
27
+
28
+ #+BEGIN_EXAMPLE
29
+ This is my code!
30
+
31
+ Another line!
32
+ #+END_EXAMPLE
33
+
34
+ - My list should cancel this.
35
+ - Another list line.
@@ -1,29 +1,29 @@
1
- h1. Block Code
2
-
3
- I need to get block code examples working. In @orgmode@, they look like this:
4
-
5
- bc..
6
- def initialize(output)
7
- @output = output
8
- @buffer = ""
9
- @output_type = :start
10
- @list_indent_stack = []
11
- @paragraph_modifier = nil
12
-
13
- @logger = Logger.new(STDERR)
14
- @logger.level = Logger::WARN
15
- end
16
-
17
-
18
- p. And now I should be back to normal text.
19
-
20
- Putting in another paragraph for good measure.
21
-
22
- Code should also get cancelled by a list, thus:
23
-
24
- bc.. This is my code!
25
-
26
- Another line!
27
-
28
- * My list should cancel this.
29
- * Another list line.
1
+ h1. Block Code
2
+
3
+ I need to get block code examples working. In @orgmode@, they look like this:
4
+
5
+ bc..
6
+ def initialize(output)
7
+ @output = output
8
+ @buffer = ""
9
+ @output_type = :start
10
+ @list_indent_stack = []
11
+ @paragraph_modifier = nil
12
+
13
+ @logger = Logger.new(STDERR)
14
+ @logger.level = Logger::WARN
15
+ end
16
+
17
+
18
+ p. And now I should be back to normal text.
19
+
20
+ Putting in another paragraph for good measure.
21
+
22
+ Code should also get cancelled by a list, thus:
23
+
24
+ bc.. This is my code!
25
+
26
+ Another line!
27
+
28
+ * My list should cancel this.
29
+ * Another list line.