org-ruby 0.7.1 → 0.7.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +7 -0
- data/lib/org-ruby.rb +1 -1
- data/lib/org-ruby/headline.rb +0 -7
- data/lib/org-ruby/html_output_buffer.rb +4 -2
- data/lib/org-ruby/line.rb +2 -8
- data/lib/org-ruby/parser.rb +13 -11
- data/lib/org-ruby/regexp_helper.rb +8 -8
- data/lib/org-ruby/textile_output_buffer.rb +7 -1
- metadata +6 -6
data/History.txt
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
== 0.7.2 / 2012-10-07
|
2
|
+
|
3
|
+
* Many fixes to the regular expressions used for emphasis, contributed by [[http://github.com/vonavi][vonavi]]
|
4
|
+
* Bug fix for when a table starts with a headline, thanks to [[http://github/til][til]]
|
5
|
+
* Asterisk can be used for definition lists too
|
6
|
+
* Use text lexer as default option for Pygments and Coderay when no language is specified
|
7
|
+
|
1
8
|
== 0.7.1 / 2012-08-04
|
2
9
|
|
3
10
|
* Make source code blocks from lisp dialects use Pygments scheme lexer
|
data/lib/org-ruby.rb
CHANGED
data/lib/org-ruby/headline.rb
CHANGED
@@ -85,13 +85,6 @@ module Orgmode
|
|
85
85
|
:"heading#{@level}"
|
86
86
|
end
|
87
87
|
|
88
|
-
# Converts this headline and its body to textile.
|
89
|
-
def to_textile
|
90
|
-
output = "h#{@level}. #{@headline_text}\n"
|
91
|
-
output << Line.to_textile(@body_lines[1..-1])
|
92
|
-
output
|
93
|
-
end
|
94
|
-
|
95
88
|
######################################################################
|
96
89
|
private
|
97
90
|
|
@@ -109,14 +109,14 @@ module Orgmode
|
|
109
109
|
|
110
110
|
# Only try to colorize #+BEGIN_SRC blocks with a specified language,
|
111
111
|
# but we still have to catch the cases when a lexer for the language was not available
|
112
|
-
if
|
112
|
+
if defined? Pygments or defined? CodeRay
|
113
113
|
lang = normalize_lang(@block_lang)
|
114
114
|
|
115
115
|
# NOTE: CodeRay and Pygments already escape the html once, so no need to escape_buffer!
|
116
116
|
if defined? Pygments
|
117
117
|
begin
|
118
118
|
@buffer = Pygments.highlight(@buffer, :lexer => lang)
|
119
|
-
rescue
|
119
|
+
rescue
|
120
120
|
# Not supported lexer from Pygments, we fallback on using the text lexer
|
121
121
|
@buffer = Pygments.highlight(@buffer, :lexer => 'text')
|
122
122
|
end
|
@@ -347,6 +347,8 @@ module Orgmode
|
|
347
347
|
case lang
|
348
348
|
when 'emacs-lisp', 'common-lisp', 'lisp'
|
349
349
|
'scheme'
|
350
|
+
when ''
|
351
|
+
'text'
|
350
352
|
else
|
351
353
|
lang
|
352
354
|
end
|
data/lib/org-ruby/line.rb
CHANGED
@@ -78,7 +78,7 @@ module Orgmode
|
|
78
78
|
ordered_list? or unordered_list? or definition_list?
|
79
79
|
end
|
80
80
|
|
81
|
-
UnorderedListRegexp = /^\s*(
|
81
|
+
UnorderedListRegexp = /^\s*(-|\+|\s+[*])\s+/
|
82
82
|
|
83
83
|
def unordered_list?
|
84
84
|
check_assignment_or_regexp(:unordered_list, UnorderedListRegexp)
|
@@ -88,7 +88,7 @@ module Orgmode
|
|
88
88
|
@line.sub(UnorderedListRegexp, "")
|
89
89
|
end
|
90
90
|
|
91
|
-
DefinitionListRegexp = /^\s*(
|
91
|
+
DefinitionListRegexp = /^\s*(-|\+|\s+[*])\s*(.*?)::/
|
92
92
|
|
93
93
|
def definition_list?
|
94
94
|
check_assignment_or_regexp(:definition_list, DefinitionListRegexp)
|
@@ -223,12 +223,6 @@ module Orgmode
|
|
223
223
|
return :paragraph
|
224
224
|
end
|
225
225
|
|
226
|
-
def self.to_textile(lines)
|
227
|
-
output = ""
|
228
|
-
output_buffer = TextileOutputBuffer.new(output)
|
229
|
-
Parser.translate(lines, output_buffer)
|
230
|
-
end
|
231
|
-
|
232
226
|
######################################################################
|
233
227
|
private
|
234
228
|
|
data/lib/org-ruby/parser.rb
CHANGED
@@ -99,15 +99,16 @@ module Orgmode
|
|
99
99
|
mode = :normal
|
100
100
|
previous_line = nil
|
101
101
|
table_header_set = false
|
102
|
-
@lines.each do |
|
102
|
+
@lines.each do |text|
|
103
|
+
line = Line.new text, self
|
104
|
+
|
103
105
|
case mode
|
104
106
|
when :normal
|
105
107
|
|
106
|
-
if (Headline.headline? line) then
|
107
|
-
@current_headline = Headline.new line, self, offset
|
108
|
+
if (Headline.headline? line.line) then
|
109
|
+
@current_headline = Headline.new line.line, self, offset
|
108
110
|
@headlines << @current_headline
|
109
111
|
else
|
110
|
-
line = Line.new line, self
|
111
112
|
# If there is a setting on this line, remember it.
|
112
113
|
line.in_buffer_setting? do |key, value|
|
113
114
|
store_in_buffer_setting key, value
|
@@ -131,7 +132,7 @@ module Orgmode
|
|
131
132
|
end
|
132
133
|
|
133
134
|
when :block_comment
|
134
|
-
|
135
|
+
|
135
136
|
if line.end_block? and line.block_type == "COMMENT"
|
136
137
|
mode = :normal
|
137
138
|
else
|
@@ -142,7 +143,6 @@ module Orgmode
|
|
142
143
|
|
143
144
|
# As long as we stay in code mode, force lines to be either blank or paragraphs.
|
144
145
|
# Don't try to interpret structural items, like headings and tables.
|
145
|
-
line = Line.new line, self
|
146
146
|
if line.end_block? and line.code_block?
|
147
147
|
mode = :normal
|
148
148
|
else
|
@@ -156,9 +156,8 @@ module Orgmode
|
|
156
156
|
|
157
157
|
when :src_code
|
158
158
|
|
159
|
-
line = Line.new line, self
|
160
159
|
if line.end_block? and line.code_block?
|
161
|
-
mode = :normal
|
160
|
+
mode = :normal
|
162
161
|
else
|
163
162
|
line.assigned_paragraph_type = :src
|
164
163
|
end
|
@@ -170,7 +169,6 @@ module Orgmode
|
|
170
169
|
|
171
170
|
when :property_drawer
|
172
171
|
|
173
|
-
line = Line.new line, self
|
174
172
|
if line.property_drawer_end_block?
|
175
173
|
mode = :normal
|
176
174
|
else
|
@@ -182,6 +180,7 @@ module Orgmode
|
|
182
180
|
@header_lines << line
|
183
181
|
end
|
184
182
|
end # case
|
183
|
+
|
185
184
|
previous_line = line
|
186
185
|
end # @lines.each
|
187
186
|
end # initialize
|
@@ -195,9 +194,11 @@ module Orgmode
|
|
195
194
|
# Saves the loaded orgmode file as a textile file.
|
196
195
|
def to_textile
|
197
196
|
output = ""
|
198
|
-
|
197
|
+
output_buffer = TextileOutputBuffer.new(output)
|
198
|
+
|
199
|
+
Parser.translate(@header_lines, output_buffer)
|
199
200
|
@headlines.each do |headline|
|
200
|
-
|
201
|
+
Parser.translate(headline.body_lines, output_buffer)
|
201
202
|
end
|
202
203
|
output
|
203
204
|
end
|
@@ -248,6 +249,7 @@ module Orgmode
|
|
248
249
|
# Converts an array of lines to the appropriate format.
|
249
250
|
# Writes the output to +output_buffer+.
|
250
251
|
def self.translate(lines, output_buffer)
|
252
|
+
output_buffer.output_type = :start
|
251
253
|
lines.each do |line|
|
252
254
|
|
253
255
|
# See if we're carrying paragraph payload, and output
|
@@ -52,11 +52,11 @@ module Orgmode
|
|
52
52
|
|
53
53
|
def initialize
|
54
54
|
# Set up the emphasis regular expression.
|
55
|
-
@pre_emphasis = " \t\\('\""
|
56
|
-
@post_emphasis = "- \t
|
55
|
+
@pre_emphasis = " \t\\('\"\\{"
|
56
|
+
@post_emphasis = "- \t\\.,:!\\?;'\"\\)\\}\\\\"
|
57
57
|
@border_forbidden = " \t\r\n,\"'"
|
58
58
|
@body_regexp = ".*?"
|
59
|
-
@markers = "
|
59
|
+
@markers = "\\*\\/_=~\\+"
|
60
60
|
@logger = Logger.new(STDERR)
|
61
61
|
@logger.level = Logger::WARN
|
62
62
|
build_org_emphasis_regexp
|
@@ -97,7 +97,7 @@ module Orgmode
|
|
97
97
|
def rewrite_emphasis(str)
|
98
98
|
str.gsub(@org_emphasis_regexp) do |match|
|
99
99
|
inner = yield $2, $3
|
100
|
-
"#{$1}#{inner}
|
100
|
+
"#{$1}#{inner}"
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
@@ -161,11 +161,11 @@ module Orgmode
|
|
161
161
|
|
162
162
|
def build_org_emphasis_regexp
|
163
163
|
@org_emphasis_regexp = Regexp.new("([#{@pre_emphasis}]|^)\n" +
|
164
|
-
"(
|
165
|
-
"(
|
166
|
-
"
|
164
|
+
"( [#{@markers}] ) (?!\\2)\n" +
|
165
|
+
"( [^#{@border_forbidden}] | " +
|
166
|
+
"[^#{@border_forbidden}]#{@body_regexp}[^#{@border_forbidden}] )\n" +
|
167
167
|
"\\2\n" +
|
168
|
-
"([#{@post_emphasis}]|$)\n", Regexp::EXTENDED)
|
168
|
+
"(?=[#{@post_emphasis}]|$)\n", Regexp::EXTENDED)
|
169
169
|
@logger.debug "Just created regexp: #{@org_emphasis_regexp}"
|
170
170
|
end
|
171
171
|
|
@@ -92,7 +92,13 @@ module Orgmode
|
|
92
92
|
(@output_type == :definition_list and not @support_definition_list) then
|
93
93
|
@output << "*" * @list_indent_stack.length << " "
|
94
94
|
end
|
95
|
-
|
95
|
+
if (@buffered_lines[0].kind_of?(Headline)) then
|
96
|
+
headline = @buffered_lines[0]
|
97
|
+
raise "Cannot be more than one headline!" if @buffered_lines.length > 1
|
98
|
+
@output << "h#{headline.level}. #{headline.headline_text}\n"
|
99
|
+
else
|
100
|
+
@output << inline_formatting(@buffer) << "\n"
|
101
|
+
end
|
96
102
|
end
|
97
103
|
clear_accumulation_buffer!
|
98
104
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: org-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.2
|
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: 2012-07
|
12
|
+
date: 2012-10-07 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubypants
|
16
|
-
requirement: &
|
16
|
+
requirement: &70185810847640 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.2.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70185810847640
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bones
|
27
|
-
requirement: &
|
27
|
+
requirement: &70185810846040 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: 3.8.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70185810846040
|
36
36
|
description: ! 'This gem contains Ruby routines for parsing org-mode files.The most
|
37
37
|
|
38
38
|
significant thing this library does today is convert org-mode files to
|