8
8
description 'Employ MathJax in all settings: wiki, issues, or every page.'
9
9
url 'https://github.com/vDorst/redmine_latex_mathjax'
10
10
author_url 'https://github.com/vDorst'
11
- version '0.2 .0'
11
+ version '0.3 .0'
12
12
13
13
Redmine ::WikiFormatting ::Macros . register do
14
- desc = "MathJax Macro: Usage: {{mj( MathJax Syntax )}}"
15
- macro :mj , :parse_args => false do |obj , args |
16
- out = MathJaxEmbedMacro . mj_macro ( obj , args )
14
+ desc "MathJax Macro:\n \n " +
15
+ "Usage:\n " +
16
+ "{{mj( single line MathJax Syntax )}}\n \n " +
17
+ "{{mj\n Multi line\n MathJax Syntax\n }}"
18
+ macro :mj , :parse_args => false do |obj , args , text |
19
+ out = MathJaxEmbedMacro . mj_macro ( obj , args , text )
17
20
end
18
21
end
19
22
end
@@ -23,15 +26,36 @@ class MathJaxEmbedMacro
23
26
@@delimiter = '~~~'
24
27
# Modify URL to MathJax.
25
28
@@url = 'https://cdn.mathjax.org/mathjax/latest/MathJax.js'
26
- def self . mj_macro ( obj , arg )
27
- raise "Usage: {{mj( MathJax Syntax )}}" unless arg . length >= 1
28
- out = "#@@delimiter #{ arg } #@@delimiter " . html_safe
29
+ def self . mj_error ( text )
30
+ return "<span id=\" errorExplanation\" ><strong>MathJaxMacro:</strong> #{ text } </span>" . html_safe
31
+ end
32
+ def self . mj_macro ( obj , arg , text )
33
+ ## Check any argument is given
34
+ if ( ( text == nil ) && ( arg . length == 0 ) )
35
+ return "<div id=\" errorExplanation\" ><strong>MathJaxMacro:</strong> Usage:<ul><li><stong>Argument only</strong>: only single line MathJax Syntax</li>{{mj( MathJax Syntax )}}<li>Blocktext only: Multiline MathJax Syntax</li>{{mj<br/>Multi-<br/>line<br/>}}</ul></div>" . html_safe
36
+ end
37
+ ## Check if both argument are given
38
+ if ( ( text != nil ) && ( arg . length > 0 ) )
39
+ return self . mj_error ( "Usage: Don\' t mix argument and blocktext!" )
40
+ end
41
+ # Use text is arg == nil
42
+ if ( text != nil )
43
+ arg = text
44
+ end
45
+ # Check argument length in Argument Mode
46
+ if ( arg != nil ) && ( arg . length < 1 )
47
+ return self . mj_error ( "Input must be atlease 1 characet long." )
48
+ end
49
+ # Check for illegal charaters.
50
+ if arg =~ /[<>]/
51
+ return self . mj_error ( "Illegal characters found! Don\' t using < or >" )
52
+ end
53
+ return "#@@delimiter #{ arg } #@@delimiter " . html_safe
29
54
end
30
55
def self . delimiter ( )
31
56
return @@delimiter
32
57
end
33
58
def self . URLToMathJax ( )
34
59
return @@url
35
60
end
36
- end
37
-
61
+ end
0 commit comments