lib/kramdown/parser/kramdown/math.rb in kramdown-0.10.0 vs lib/kramdown/parser/kramdown/math.rb in kramdown-0.11.0
- old
+ new
@@ -18,34 +18,45 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#++
#
+require 'kramdown/parser/kramdown/block_boundary'
+
module Kramdown
module Parser
class Kramdown
BLOCK_MATH_START = /^#{OPT_SPACE}(\\)?\$\$(.*?)\$\$\s*?\n/m
# Parse the math block at the current location.
def parse_block_math
- if @src[1]
+ if !after_block_boundary?
+ return false
+ elsif @src[1]
@src.scan(/^#{OPT_SPACE}\\/)
return false
end
+ orig_pos = @src.pos
@src.pos += @src.matched_size
- @tree.children << new_block_el(:math, @src[2], :category => :block)
- true
+ data = @src[2]
+ if before_block_boundary?
+ @tree.children << new_block_el(:math, data)
+ true
+ else
+ @src.pos = orig_pos
+ false
+ end
end
define_parser(:block_math, BLOCK_MATH_START)
INLINE_MATH_START = /\$\$(.*?)\$\$/
# Parse the inline math at the current location.
def parse_inline_math
@src.pos += @src.matched_size
- @tree.children << Element.new(:math, @src[1], :category => :span)
+ @tree.children << Element.new(:math, @src[1], nil, :category => :span)
end
define_parser(:inline_math, INLINE_MATH_START, '\$')
end
end