AoBane 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +16 -4
- data/debug.txt +0 -0
- data/lib/AoBane/utilities.rb +143 -0
- data/lib/AoBane/version.rb +1 -1
- data/lib/AoBane.rb +2253 -2196
- data/test/Test.html +37 -0
- data/test/Test.md +21 -0
- metadata +4 -2
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
AoBane The MarkDown Core Engine
|
2
2
|
======
|
3
3
|
|
4
|
-
Powered By BlueFeather
|
4
|
+
Powered By BlueFeather<br>
|
5
5
|
See also [AoBane development memo](https://github.com/setminami/AoBane/wiki/development-memo).
|
6
6
|
|
7
7
|
##What's This and What You Can...
|
@@ -10,9 +10,21 @@ The points of difference are
|
|
10
10
|
* You can use font TAG like this-> `*[blablabla](color|font faces#font size)`
|
11
11
|
* *e.g.,* `*[blablabla](red|Times,Arial#5) -expand-> <font color="red" face="Times,Arial" size="5">blablabla</font>`
|
12
12
|
- And I know that font TAG was duplicated in HTML5...
|
13
|
-
* You can use MathML by to code LaTeX string surrounding `\{` and `\}`. Use firefox renderer because of MathML specification.
|
14
|
-
* like this. `\{x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}\} -expand-> <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><mi>x</mi><mo>=</mo><mfrac><mrow><mo>-</mo><mi>b</mi><mo>±</mo><msqrt><mrow><msup><mi>b</mi><mn>2</mn></msup><mo>-</mo><mn>4</mn><mi>a</mi><mi>c</mi></mrow></msqrt></mrow><mrow><mn>2</mn><mi>a</mi></mrow></mfrac></math>`
|
15
|
-
|
13
|
+
* You can use MathML by to code LaTeX string surrounding `\TeX{` and `\TeX}`. Use firefox renderer because of MathML specification.
|
14
|
+
* like this. `\TeX{x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}\TeX} -expand-> <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><mi>x</mi><mo>=</mo><mfrac><mrow><mo>-</mo><mi>b</mi><mo>±</mo><msqrt><mrow><msup><mi>b</mi><mn>2</mn></msup><mo>-</mo><mn>4</mn><mi>a</mi><mi>c</mi></mrow></msqrt></mrow><mrow><mn>2</mn><mi>a</mi></mrow></mfrac></math>`
|
15
|
+
|
16
|
+
* You can use Auto Numbering Title by seaquential '%' anotation.
|
17
|
+
* *e.g.*,like below
|
18
|
+
<pre><code>
|
19
|
+
{nrange:h2-h5} <- this means header number range is h2-h5.
|
20
|
+
% foo1 -> <h2 id=xxx>1. foo1</h2>
|
21
|
+
%% foo1.1 -> <h3 id=xxx>1.1. foo1.1</h3>
|
22
|
+
%% foo1.2 -> <h3 id=xxx>1.2. foo1.2</h3>
|
23
|
+
%%% foo1.2.1 -> <h4 id=xxx>1.2.1 foo1.2.1</h4>
|
24
|
+
% foo2 -> <h2 id=xxx>2. foo2</h2>
|
25
|
+
......................
|
26
|
+
</code></pre>
|
27
|
+
|
16
28
|
* You can use HTML special character by simple way.
|
17
29
|
|
18
30
|
like this
|
data/debug.txt
ADDED
File without changes
|
@@ -0,0 +1,143 @@
|
|
1
|
+
# AoBane Original classes and functions, and data structures.
|
2
|
+
# Copyright set.minami (c) 2013
|
3
|
+
# MIT License
|
4
|
+
|
5
|
+
require 'logger'
|
6
|
+
require 'singleton'
|
7
|
+
|
8
|
+
$S_SLOT = 0
|
9
|
+
$N_SLOT = 1
|
10
|
+
$C_SLOT = 2
|
11
|
+
$MAX_STACK = 1024 * 2
|
12
|
+
|
13
|
+
module Utilities
|
14
|
+
$MAX_H = 6
|
15
|
+
@@log = Logger.new(STDOUT)
|
16
|
+
@@log.level = Logger::WARN
|
17
|
+
|
18
|
+
### Return a caluculated section number and string.############################
|
19
|
+
def calcSectionNo(startNo, range, size, dep, str)
|
20
|
+
stack = Stack.instance
|
21
|
+
i = dep.to_i
|
22
|
+
counter = 0
|
23
|
+
numberStr = [["%",i,counter],["%%",i,counter],["%%%",i,counter],
|
24
|
+
["%%%%",i,counter],["%%%%%",i,counter],["%%%%%%",i,counter]]
|
25
|
+
number = ""
|
26
|
+
headNo = size.to_i
|
27
|
+
|
28
|
+
if (headNo > $MAX_H) || (headNo <= 0) then
|
29
|
+
@@log.error("AoBane Syntax Error: Header shortage!")
|
30
|
+
raise SyntaxError,"Headder shortage!"
|
31
|
+
else
|
32
|
+
(1..size).each_with_index{|k| #h1 to h6
|
33
|
+
@@log.debug "k #{k},hn #{headNo},s #{size},sN #{startNo},sos #{stack.sizeofStack}"
|
34
|
+
if (k < headNo) then
|
35
|
+
@@log.debug "+++ #{k},#{stack.sizeofStack}"
|
36
|
+
if k >= stack.sizeofStack then
|
37
|
+
stack.push(numberStr[k])
|
38
|
+
end
|
39
|
+
elsif (k == headNo) then
|
40
|
+
if stack.sizeofStack == 0 then
|
41
|
+
stack.push(numberStr[k-1])
|
42
|
+
end
|
43
|
+
if (stack.evalStackTop[$S_SLOT].size > numberStr[k-1][$S_SLOT].size) then
|
44
|
+
stack.pop
|
45
|
+
end
|
46
|
+
else
|
47
|
+
@@log.debug "~~~~"
|
48
|
+
stack.push(numberStr[k])
|
49
|
+
end #if...elsif
|
50
|
+
stack.dump
|
51
|
+
}
|
52
|
+
=begin
|
53
|
+
else
|
54
|
+
@@log.error("AoBane Syntax Error: Header Number Overflow!")
|
55
|
+
raise SyntaxError,"Header Number Overflow!"
|
56
|
+
end #case
|
57
|
+
=end
|
58
|
+
end #if...else
|
59
|
+
@@log.debug "$$$$"
|
60
|
+
number = stack.insertNumber
|
61
|
+
h = "#"
|
62
|
+
times = startNo.to_i + size.to_i - 1
|
63
|
+
return h*times + number + str
|
64
|
+
end #def
|
65
|
+
|
66
|
+
module_function :calcSectionNo
|
67
|
+
#############################################################################
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
#####################CLAZ declare############################################
|
72
|
+
class Stack
|
73
|
+
include Singleton
|
74
|
+
|
75
|
+
@@log = Logger.new(STDOUT)
|
76
|
+
@@log.level = Logger::WARN
|
77
|
+
|
78
|
+
def initialize
|
79
|
+
@stack = []
|
80
|
+
@sp = 0
|
81
|
+
end
|
82
|
+
|
83
|
+
def push(pair)
|
84
|
+
@@log.debug("#{__LINE__} push #{pair}")
|
85
|
+
if (@stack.size + 1) < $MAX_STACK then
|
86
|
+
@stack.push(pair)
|
87
|
+
@sp += 1
|
88
|
+
@@log.debug @stack
|
89
|
+
else
|
90
|
+
raise SyntaxError,"Stack Over Flow!"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def pop
|
95
|
+
@@log.debug("#{__LINE__} pop")
|
96
|
+
if (@stack.size - 1) >= 0 then @sp -= 1;return @stack.pop
|
97
|
+
else
|
98
|
+
raise SyntaxError,"Stack Under Flow!"
|
99
|
+
end
|
100
|
+
@@log.debug "#{@stack}"
|
101
|
+
end
|
102
|
+
|
103
|
+
def insertNumber
|
104
|
+
str = ""
|
105
|
+
@stack.each { |item|
|
106
|
+
if isTopofStack(item) then
|
107
|
+
item[$N_SLOT] += item[$C_SLOT]
|
108
|
+
item[$C_SLOT] = 1
|
109
|
+
end
|
110
|
+
str << (item[$N_SLOT]).to_s + '.'
|
111
|
+
@@log.debug str
|
112
|
+
}
|
113
|
+
return str
|
114
|
+
end
|
115
|
+
|
116
|
+
def evalStackTop
|
117
|
+
return @stack.last
|
118
|
+
end
|
119
|
+
|
120
|
+
def getSp
|
121
|
+
if @sp >= 0 then return @sp
|
122
|
+
else raise FatalError,"SP is negative!"
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def sizeofStack
|
127
|
+
return @stack.size
|
128
|
+
end
|
129
|
+
|
130
|
+
def isTopofStack(item)
|
131
|
+
if item == @stack.last then
|
132
|
+
return true
|
133
|
+
else
|
134
|
+
return false
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
def dump
|
139
|
+
@@log.debug("Stack DUMP:#{@stack}")
|
140
|
+
end
|
141
|
+
|
142
|
+
end
|
143
|
+
|
data/lib/AoBane/version.rb
CHANGED