AoBane 0.1.14 → 0.1.15
Sign up to get free protection for your applications and to get access to all the features.
- data/AoBane.icns +0 -0
- data/AoBane.jpg +0 -0
- data/AoBane.tiff +0 -0
- data/lib/AoBane.rb +130 -179
- data/lib/AoBane/utilities.rb +192 -62
- data/lib/AoBane/version.rb +1 -1
- data/test/Test.html +48 -16
- data/test/Test.md +18 -4
- data/test/test2.html +30 -0
- data/test/test2.md +24 -0
- metadata +7 -2
data/AoBane.icns
ADDED
Binary file
|
data/AoBane.jpg
ADDED
Binary file
|
data/AoBane.tiff
ADDED
Binary file
|
data/lib/AoBane.rb
CHANGED
@@ -52,9 +52,9 @@ require 'math_ml/string'
|
|
52
52
|
|
53
53
|
|
54
54
|
module AoBane
|
55
|
-
VERSION = '0.1.
|
56
|
-
VERSION_NUMBER = 0.
|
57
|
-
RELEASE_DATE = '2013-
|
55
|
+
VERSION = '0.1.15'
|
56
|
+
VERSION_NUMBER = 0.0115
|
57
|
+
RELEASE_DATE = '2013-05-07'
|
58
58
|
VERSION_LABEL = "#{VERSION} (#{RELEASE_DATE})"
|
59
59
|
|
60
60
|
UTF8_BOM = "\xef\xbb\xbf"
|
@@ -523,44 +523,23 @@ module AoBane
|
|
523
523
|
text += "\n\n"
|
524
524
|
@log.debug "Normalized line-endings: %p" % text
|
525
525
|
|
526
|
-
#Insert by set.minami 2013-
|
527
|
-
text.gsub!(/\*\[(.*?)\]\((.*?)(\|.*?)*(\/.*?)*\)/){|match|
|
528
|
-
'<font color="' +
|
529
|
-
if $2.nil? then '' else $2 end +'" ' +
|
530
|
-
'face="' +
|
531
|
-
if $3.nil? then '' else $3.delete('|') end + '" ' +
|
532
|
-
'size="' +
|
533
|
-
if $4.nil? then '' else $4.delete('/') end + '">' +
|
534
|
-
$1 + '</font>'
|
535
|
-
}
|
536
|
-
#Insert by set.minami 2013-04-13
|
537
|
-
text = Utilities::prePaling(text)
|
538
|
-
#Insert by set.minami 2013-04-21
|
539
|
-
text = Utilities::abbrPreProcess(text)
|
540
|
-
#Insert by set.minami 2013-04-01
|
541
|
-
text.gsub!(/\\TeX\{(.+?)\\TeX\}/){
|
542
|
-
begin
|
543
|
-
$1.to_mathml
|
544
|
-
rescue => e
|
545
|
-
puts 'math_ml Error: ' + $1
|
546
|
-
puts e
|
547
|
-
end
|
548
|
-
}
|
549
|
-
|
526
|
+
#text = Utilities::prePaling(text) #Insert by set.minami 2013-04-27
|
550
527
|
#Insert by set.minami 2013-04-03
|
551
528
|
nrange = []
|
552
529
|
departure = 1
|
553
530
|
preproc = Marshal.load(Marshal.dump(text))
|
554
531
|
text.clear
|
532
|
+
stack = []
|
555
533
|
html_text_number = 0
|
534
|
+
# Utilities::initNumberStack
|
535
|
+
|
556
536
|
preproc.lines { |line|
|
557
537
|
html_text_number += 1
|
558
538
|
begin
|
559
|
-
line.gsub!(/^\{nrange:(.*?)(;\d+)
|
560
|
-
depNum = $2.delete(';').to_i
|
561
|
-
departure =
|
562
|
-
if
|
563
|
-
if /[hH]([1-6])\-[hH]([1-6])/ =~ $1
|
539
|
+
line.gsub!(/^\{nrange:(.*?)(;\d+)??\}/){ |match|
|
540
|
+
#depNum = $2.delete(';').to_i
|
541
|
+
#departure = if depNum > 0 then depNum else 1 end
|
542
|
+
if /h(\d)\-h(\d)/i =~ $1
|
564
543
|
nrange.push($1)
|
565
544
|
nrange.push($2)
|
566
545
|
if nrange.size > 2 then
|
@@ -580,18 +559,43 @@ module AoBane
|
|
580
559
|
"@ l.#{html_text_number}";exit(-1)
|
581
560
|
raise FatalError,"AoBane Syntax Error:Header range is WRONG!"
|
582
561
|
end
|
583
|
-
line
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
562
|
+
if line =~ /^(%{1,#{range}})(.*?)\n/ then
|
563
|
+
text << Utilities.
|
564
|
+
calcSectionNo(nrange.min,range,$1.size,departure,$2,stack) +
|
565
|
+
"\n"
|
566
|
+
else
|
567
|
+
text << line
|
568
|
+
end
|
588
569
|
@log.debug nrange.minmax
|
589
570
|
rescue => e
|
590
571
|
@log.warn "AoBane Syntax WARNING l.#{html_text_number}:#{line.chomp} haven't adopted"
|
591
572
|
@log.warn e
|
592
573
|
end
|
593
574
|
}
|
594
|
-
|
575
|
+
|
576
|
+
text.gsub!(/\*\[(.*?)\]\((.*?)(\|.*?)*(\/.*?)*\)/){|match|
|
577
|
+
'<font color="' +
|
578
|
+
if $2.nil? then '' else $2 end +'" ' +
|
579
|
+
'face="' +
|
580
|
+
if $3.nil? then '' else $3.delete('|') end + '" ' +
|
581
|
+
'size="' +
|
582
|
+
if $4.nil? then '' else $4.delete('/') end + '">' +
|
583
|
+
$1 + '</font>'
|
584
|
+
}
|
585
|
+
#Insert by set.minami 2013-04-21
|
586
|
+
text = Utilities::abbrPreProcess(text)
|
587
|
+
#Insert by set.minami 2013-04-01
|
588
|
+
text.gsub!(/\\TeX\{(.+?)\\TeX\}/){
|
589
|
+
begin
|
590
|
+
$1.to_mathml
|
591
|
+
rescue => e
|
592
|
+
puts 'math_ml Error: ' + $1
|
593
|
+
puts e
|
594
|
+
end
|
595
|
+
}
|
596
|
+
|
597
|
+
text = Utilities::preProcFence(text,0).join("\n") #Insert by set.minami 2013-04-27
|
598
|
+
#Insert by set.minami 2013-03-30
|
595
599
|
#Insert by set.minami
|
596
600
|
|
597
601
|
# Filter HTML if we're asked to do so
|
@@ -657,75 +661,15 @@ module AoBane
|
|
657
661
|
end
|
658
662
|
end
|
659
663
|
|
660
|
-
#Insert by Set.Minami 2013-04-13
|
661
|
-
text = Utilities::postPaling(text)
|
662
664
|
#Insert by set.minami 2013-04-21
|
663
665
|
text = Utilities::abbrPostProcess(text)
|
664
666
|
#Insert by set.minami 2013-03-30
|
665
667
|
text = Utilities::insertTimeStamp(text)
|
666
|
-
|
667
|
-
#output = text.split("\n")
|
668
|
-
specialChar = {
|
669
|
-
"\-\-" => "—",
|
670
|
-
"<=" => "⇔",
|
671
|
-
"<\->" => "↔",
|
672
|
-
"\->" =>"→",
|
673
|
-
"<\-" =>"←",
|
674
|
-
"=>" => "⇒",
|
675
|
-
"<=" => "⇐",
|
676
|
-
"\|\|\^" => "⇑",
|
677
|
-
"\|\|\/" => "⇓",
|
678
|
-
"\|\/" => "↓",
|
679
|
-
"\|\^" => "↑",
|
680
|
-
">>" => "»",
|
681
|
-
"\<\<" => "«",
|
682
|
-
"+_" => "±",
|
683
|
-
"!=" => "≠",
|
684
|
-
"~~" => "≈",
|
685
|
-
"~=" => "≅",
|
686
|
-
"<_" => "≤",
|
687
|
-
">_" => "&ge",
|
688
|
-
"\|FA" => "∀",
|
689
|
-
"\|EX" => "∃",
|
690
|
-
"\|=" => "≡",
|
691
|
-
"\(+\)" => "&oplus",
|
692
|
-
"\(x\)" => "⊗",
|
693
|
-
"\(c\)" => "©",
|
694
|
-
"\(R\)" =>"®",
|
695
|
-
"\(SS\)" => "§",
|
696
|
-
"\(TM\)" => "™",
|
697
|
-
"!in" => "∉"}
|
668
|
+
text = Utilities::postProcFence(text) #Insert by set.minami 2013-04-27
|
698
669
|
|
699
|
-
|
670
|
+
text = Utilities::transformSpecialChar(text) #Insert by set.minami 2013-04-27
|
700
671
|
|
701
|
-
|
702
|
-
text.gsub!(/<\/pre>(.*?)<pre>/i){|m|
|
703
|
-
if m.nil? then '<\/pre><pre>'
|
704
|
-
else
|
705
|
-
'<\/pre>' + m.gsub!(/#{entry}/,specialChar).to_s + '<pre>'
|
706
|
-
end
|
707
|
-
}
|
708
|
-
text.gsub!(/<\/pre>(.*?)/i){|m|
|
709
|
-
if m.nil? then '<\/pre>'
|
710
|
-
else
|
711
|
-
'</pre>' + m.gsub!(/#{entry}/,specialChar).to_s
|
712
|
-
end
|
713
|
-
}
|
714
|
-
text.gsub!(/(.*?)<pre>/i){|m|
|
715
|
-
if m.nil? then '<pre>'
|
716
|
-
else
|
717
|
-
m.gsub!(/#{entry}/,specialChar).to_s + '<pre>'
|
718
|
-
end
|
719
|
-
}
|
720
|
-
else
|
721
|
-
if text.nil? then ''
|
722
|
-
else text.gsub!(/#{entry}/,specialChar)
|
723
|
-
end
|
724
|
-
end
|
725
|
-
#return output.join("\n")
|
726
|
-
#Insert by set.minami
|
727
|
-
return text
|
728
|
-
|
672
|
+
return text
|
729
673
|
end
|
730
674
|
|
731
675
|
alias parse parse_text
|
@@ -879,6 +823,7 @@ module AoBane
|
|
879
823
|
|
880
824
|
@log.debug "Applying block transforms to:\n %p" % str
|
881
825
|
text = str
|
826
|
+
|
882
827
|
text = pretransform_fenced_code_blocks( text, rs )
|
883
828
|
text = pretransform_block_separators(text, rs)
|
884
829
|
|
@@ -1231,12 +1176,11 @@ module AoBane
|
|
1231
1176
|
}
|
1232
1177
|
end
|
1233
1178
|
|
1234
|
-
CaptionRegexp =
|
1179
|
+
CaptionRegexp = '\[(.+?)\](\{(.+?)\})??'
|
1235
1180
|
TableRegexp = %r{
|
1236
1181
|
(?:
|
1237
|
-
(#{CaptionRegexp}\s*\n)
|
1238
|
-
|
1239
|
-
^([ ]{0,#{TabWidth - 1}}) # not indented
|
1182
|
+
(#{CaptionRegexp}\s*\n)??# modified by set.minami 2013-04-20
|
1183
|
+
([ ]{0,#{TabWidth - 1}}) # not indented
|
1240
1184
|
(?:[|][ ]*) # NOT optional border
|
1241
1185
|
|
1242
1186
|
\S.*? # 1st cell content
|
@@ -1253,9 +1197,9 @@ module AoBane
|
|
1253
1197
|
|
1254
1198
|
# Transform tables.
|
1255
1199
|
def transform_tables(str, rs)
|
1256
|
-
|
1257
|
-
|
1258
|
-
|
1200
|
+
str.gsub(TableRegexp){
|
1201
|
+
transform_table_rows($~[0], rs)
|
1202
|
+
}
|
1259
1203
|
end
|
1260
1204
|
|
1261
1205
|
TableSeparatorCellRegexp = %r{
|
@@ -1271,79 +1215,86 @@ module AoBane
|
|
1271
1215
|
}x
|
1272
1216
|
|
1273
1217
|
def transform_table_rows(str, rs)
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1301
|
-
|
1302
|
-
|
1303
|
-
|
1304
|
-
|
1305
|
-
|
1306
|
-
|
1307
|
-
|
1308
|
-
|
1309
|
-
|
1310
|
-
|
1311
|
-
|
1312
|
-
|
1313
|
-
|
1314
|
-
|
1315
|
-
|
1316
|
-
|
1317
|
-
|
1318
|
-
|
1319
|
-
|
1320
|
-
|
1321
|
-
|
1322
|
-
|
1323
|
-
|
1324
|
-
|
1325
|
-
|
1326
|
-
|
1327
|
-
|
1328
|
-
|
1329
|
-
|
1330
|
-
|
1331
|
-
|
1332
|
-
|
1333
|
-
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1218
|
+
# split cells to 2-d array
|
1219
|
+
data = str.split("\n").map{|x| x.split('|')}
|
1220
|
+
caption = '' #Inserted by set.minami 2013-04-20
|
1221
|
+
captionName = ''
|
1222
|
+
if /#{CaptionRegexp}/ =~ data[0].first then
|
1223
|
+
caption = if $1.nil? then '' else $1 end
|
1224
|
+
captionName = if $3.nil? then '' else $3 end
|
1225
|
+
data.shift
|
1226
|
+
end #Inserted by set.minami 2013-04-20
|
1227
|
+
data.each do |row|
|
1228
|
+
if row.first.nil? then next end
|
1229
|
+
# cut left space
|
1230
|
+
row.first.lstrip!
|
1231
|
+
|
1232
|
+
# cut when optional side-borders is included
|
1233
|
+
row.shift if row.first.empty?
|
1234
|
+
end
|
1235
|
+
|
1236
|
+
column_attrs = []
|
1237
|
+
|
1238
|
+
re = ''
|
1239
|
+
re << if captionName == '' then
|
1240
|
+
"<table>\n"
|
1241
|
+
else
|
1242
|
+
"<table id=\"#{captionName}\">\n"
|
1243
|
+
end
|
1244
|
+
re << "<caption>#{caption}</caption>\n"
|
1245
|
+
#Insert by set.minami 2013-04-20
|
1246
|
+
|
1247
|
+
# head is exist?
|
1248
|
+
|
1249
|
+
#if !data[1].nil? && data[1].last =~ /\s+/ then
|
1250
|
+
### p data
|
1251
|
+
# data.each{|d|
|
1252
|
+
# d.pop
|
1253
|
+
# }
|
1254
|
+
#end #Insert by set.minami @ 2013-04-29
|
1255
|
+
if data.size >= 3 and data[1].all?{|x| x =~ TableSeparatorCellRegexp} then
|
1256
|
+
head_row = data.shift
|
1257
|
+
separator_row = data.shift
|
1258
|
+
|
1259
|
+
separator_row.each do |cell|
|
1260
|
+
cell.match TableSeparatorCellRegexp
|
1261
|
+
left = $1; right = $2
|
1262
|
+
|
1263
|
+
if left and right then
|
1264
|
+
column_attrs << ' style="text-align: center"'
|
1265
|
+
elsif right then
|
1266
|
+
column_attrs << ' style="text-align: right"'
|
1267
|
+
elsif left then
|
1268
|
+
column_attrs << ' style="text-align: left"'
|
1269
|
+
else
|
1270
|
+
column_attrs << ''
|
1271
|
+
end
|
1272
|
+
end
|
1273
|
+
|
1274
|
+
re << "\t<thead><tr>\n"
|
1275
|
+
head_row.each_with_index do |cell, i|
|
1276
|
+
re << "\t\t<th#{column_attrs[i]}>#{apply_span_transforms(cell.strip, rs)}</th>\n"
|
1277
|
+
end
|
1278
|
+
re << "\t</tr></thead>\n"
|
1279
|
+
end
|
1280
|
+
|
1281
|
+
# data row
|
1282
|
+
re << "\t<tbody>\n"
|
1283
|
+
data.each do |row|
|
1284
|
+
re << "\t\t<tr>\n"
|
1285
|
+
row.each_with_index do |cell, i|
|
1286
|
+
re << "\t\t\t<td#{column_attrs[i]}>#{apply_span_transforms(cell.strip, rs)}</td>\n"
|
1287
|
+
end
|
1288
|
+
re << "\t\t</tr>\n"
|
1289
|
+
end
|
1290
|
+
re << "\t</tbody>\n"
|
1291
|
+
|
1292
|
+
re << "</table>\n"
|
1293
|
+
|
1294
|
+
re
|
1344
1295
|
end
|
1345
1296
|
|
1346
|
-
|
1297
|
+
|
1347
1298
|
### Transform any Markdown-style horizontal rules in a copy of the specified
|
1348
1299
|
### +str+ and return it.
|
1349
1300
|
def transform_hrules( str, rs )
|
data/lib/AoBane/utilities.rb
CHANGED
@@ -15,6 +15,66 @@ module Utilities
|
|
15
15
|
$MAX_H = 6
|
16
16
|
@@log = Logger.new(STDOUT)
|
17
17
|
@@log.level = Logger::WARN
|
18
|
+
|
19
|
+
def transformSpecialChar(text)
|
20
|
+
#output = text.split("\n")
|
21
|
+
specialChar = {
|
22
|
+
"\-\-" => "—",
|
23
|
+
"<=" => "⇔",
|
24
|
+
"<\->" => "↔",
|
25
|
+
"\->" =>"→",
|
26
|
+
"<\-" =>"←",
|
27
|
+
"=>" => "⇒",
|
28
|
+
"<=" => "⇐",
|
29
|
+
"\|\|\^" => "⇑",
|
30
|
+
"\|\|\/" => "⇓",
|
31
|
+
"\|\/" => "↓",
|
32
|
+
"\|\^" => "↑",
|
33
|
+
">>" => "»",
|
34
|
+
"\<\<" => "«",
|
35
|
+
"+_" => "±",
|
36
|
+
"!=" => "≠",
|
37
|
+
"~~" => "≈",
|
38
|
+
"~=" => "≅",
|
39
|
+
"<_" => "≤",
|
40
|
+
">_" => "&ge",
|
41
|
+
"\|FA" => "∀",
|
42
|
+
"\|EX" => "∃",
|
43
|
+
"\|=" => "≡",
|
44
|
+
"\(\+\)" => "⊕",
|
45
|
+
"\(\-\)" => "⊖",
|
46
|
+
"\(X\)" => "⊗",
|
47
|
+
"\(c\)" => "©",
|
48
|
+
"\(R\)" =>"®",
|
49
|
+
"\(SS\)" => "§",
|
50
|
+
"\(TM\)" => "™",
|
51
|
+
"!in" => "∉"}
|
52
|
+
|
53
|
+
entry = '(?!\-+\|)\-\-|<=>|<\->|\->|<\-|=>|<=|\|\^|\|\|\/|\|\/|\^|\>\>|\<\<|' +
|
54
|
+
'\+_|!=|~~|~=|>_|<_|\|FA|\|EX|\|=|\(\+\)|\(\-\)|\(X\)|\(c\)|\(R\)|\(SS\)|\(TM\)|!in'
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
zoneofPre = ["<pre>","<\/pre>"]
|
59
|
+
dup = []
|
60
|
+
doc = text.split("\n")
|
61
|
+
index = 0
|
62
|
+
doc.each{
|
63
|
+
if doc[index] =~ /#{zoneofPre[0]}/i
|
64
|
+
until doc[index] =~ /#{zoneofPre[1]}/i
|
65
|
+
dup[index] = doc[index]
|
66
|
+
index += 1
|
67
|
+
end
|
68
|
+
dup[index] = doc[index]
|
69
|
+
else
|
70
|
+
dup[index] = if !doc[index].nil? then doc[index].gsub(/#{entry}/,specialChar) end
|
71
|
+
index += 1
|
72
|
+
end
|
73
|
+
}
|
74
|
+
|
75
|
+
#Insert by set.minami
|
76
|
+
return dup.join("\n")
|
77
|
+
end
|
18
78
|
###Insert Timestamp#################################################################
|
19
79
|
def insertTimeStamp(text)
|
20
80
|
if /\$date/i =~ text then
|
@@ -78,37 +138,81 @@ def abbrPostProcess(text)
|
|
78
138
|
end
|
79
139
|
end
|
80
140
|
###paling proccessing##########################################################
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
141
|
+
StartDivMark =
|
142
|
+
'[\/\|]\-:b=(\d+?)\s(\w+?\s\w+?\s)' + # $1 $2
|
143
|
+
'(w=(\w+?)\s)??' + # $3 $4
|
144
|
+
'(h=(\w+?)\s)??' + # $5 $6
|
145
|
+
'(bg=((#)??\w+?)\s)??' + # $7 $8 $9
|
146
|
+
'(lh=([\w%]+?)\s)??' + # $10 $11
|
147
|
+
'(mg=(\d+?)\s)??' + # $12 $13
|
148
|
+
'(al=(\w+?)\s)??' + # $14 $15
|
149
|
+
'(rad=(\d+?))\-+[\|\/]' + # $16 $17
|
150
|
+
'({(.+?)})??' # $18 $19
|
151
|
+
EndDivMark = '\|\_+\|'
|
152
|
+
AllChar = '\w\s\!@\#\$%\^&\*\(\)\-\+=\[\{\}\];:\'"<>\,\.\/\?\\|'
|
153
|
+
InnerRepresent = ["@","/"]
|
154
|
+
|
155
|
+
def preProcFence(text,startPoint)
|
156
|
+
output = []
|
157
|
+
dup = []
|
158
|
+
isInFence = [false]
|
159
|
+
linePointer = 0
|
160
|
+
exclude = '(?!^\|_+|\|\-:)^\||^[#]{1,6}\s|^\s+\*|^\s+\-'
|
161
|
+
if !text.instance_of?(Array) then output = text.split("\n") else output = text end
|
162
|
+
|
92
163
|
output.each_with_index{|line,index|
|
93
|
-
if
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
164
|
+
if index < startPoint then next
|
165
|
+
elsif /#{StartDivMark}/ =~ line then
|
166
|
+
start = line.split("|")
|
167
|
+
dup << "/" + start[1] + "/"
|
168
|
+
if start.size >= 2 then dup << start[2..-1] end
|
169
|
+
isInFence.push(true)
|
170
|
+
next
|
171
|
+
elsif /#{EndDivMark}/ =~ line then
|
172
|
+
dup << '/@/'
|
173
|
+
next
|
174
|
+
else
|
175
|
+
if isInFence.last then
|
176
|
+
if dup.last.nil? then
|
177
|
+
dup << compressWSpaces(line)
|
178
|
+
else
|
179
|
+
if dup.last =~ /#{exclude}/i || line =~ /#{exclude}/i then
|
180
|
+
if line =~ /#{exclude}/i then dup << line
|
181
|
+
else dup << compressWSpaces(line) end
|
182
|
+
else
|
183
|
+
if line == "" then
|
184
|
+
dup << '<br />'
|
185
|
+
else
|
186
|
+
dup.last << compressWSpaces(line)
|
187
|
+
next
|
188
|
+
end
|
189
|
+
end
|
106
190
|
end
|
191
|
+
else
|
192
|
+
dup << if !line.nil? then line else "" end
|
193
|
+
end
|
107
194
|
end
|
108
|
-
end #if
|
109
195
|
}
|
110
|
-
return
|
111
|
-
end
|
196
|
+
return dup
|
197
|
+
end
|
198
|
+
|
199
|
+
def compressWSpaces(line)
|
200
|
+
dup = if line =~ /\s+$/ then line.strip + " " else line end
|
201
|
+
return dup
|
202
|
+
end
|
203
|
+
|
204
|
+
|
205
|
+
# Pattern to match strong emphasis in Markdown text
|
206
|
+
BoldRegexp = %r{ (\*\*) (\S|\S.*?\S) \1 }x
|
207
|
+
|
208
|
+
# Pattern to match normal emphasis in Markdown text
|
209
|
+
ItalicRegexp = %r{ (\*) (\S|\S.*?\S) \1 }x
|
210
|
+
|
211
|
+
def italic_and_bold(str)
|
212
|
+
str.
|
213
|
+
gsub( BoldRegexp, %{<strong>\\2</strong>} ).
|
214
|
+
gsub( ItalicRegexp, %{<em>\\2</em>} )
|
215
|
+
end
|
112
216
|
|
113
217
|
def isDigit(str)
|
114
218
|
if /\d+/ =~ str then
|
@@ -118,7 +222,7 @@ def isDigit(str)
|
|
118
222
|
end
|
119
223
|
end
|
120
224
|
|
121
|
-
def
|
225
|
+
def postProcFence(text)
|
122
226
|
output = text.split("\n")
|
123
227
|
output.each_with_index{|line,index|
|
124
228
|
if /#{StartDivMark}/ =~ line then
|
@@ -127,22 +231,33 @@ def postPaling(text)
|
|
127
231
|
if $6.nil? then '' else 'height:' + if Utilities::isDigit($6) then $6 + 'px;' else $6 + ';' end end +
|
128
232
|
if $8.nil? then '' else 'background-color:' + $8 + ';' end +
|
129
233
|
if $11.nil? then 'line-height:100%;' else 'line-height:' + $11 + ';' end +
|
234
|
+
if $13.nil? then '' else 'margin:' + $13 + 'px;' end +
|
235
|
+
if $15.nil? then '' else 'text-align:' + $15 + ';' end +
|
130
236
|
'border-radius:' +
|
131
|
-
if $
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
237
|
+
if $16.nil? then '' else $16 end + 'px;"' +
|
238
|
+
if $19.nil? then '' else 'class="#{$19}"' end +
|
239
|
+
'>'
|
240
|
+
output.each_with_index{|l,i = index|
|
241
|
+
if /\/@\// =~ l then
|
242
|
+
output[i] = '</div>'
|
243
|
+
index = i
|
136
244
|
break
|
137
245
|
end
|
138
|
-
|
246
|
+
i += 1
|
247
|
+
}
|
139
248
|
end
|
140
249
|
}
|
141
250
|
return output.join("\n")
|
142
|
-
end #def
|
251
|
+
end #def postProcFence
|
252
|
+
|
253
|
+
### Initialize a Stack class ############################
|
254
|
+
def initNumberStack
|
255
|
+
Stack.destroy
|
256
|
+
end
|
257
|
+
|
143
258
|
### Return a caluculated section number and string.############################
|
144
|
-
def calcSectionNo(startNo=1, range=0, size=0, dep=1, str='')
|
145
|
-
stack = Stack.instance
|
259
|
+
def calcSectionNo(startNo=1, range=0, size=0, dep=1, str='', outerStack)
|
260
|
+
stack = outerStack #Stack.instance
|
146
261
|
i = dep.to_i
|
147
262
|
counter = 0
|
148
263
|
numberStr = [["%",i,counter],["%%",i,counter],["%%%",i,counter],
|
@@ -154,25 +269,30 @@ end #def postPailing
|
|
154
269
|
@@log.error("AoBane Syntax Error: Header shortage!")
|
155
270
|
raise SyntaxError,"Headder shortage!"
|
156
271
|
else
|
157
|
-
(1..
|
158
|
-
|
272
|
+
(1..headNo).each_with_index{|k| #h1 to h6
|
273
|
+
p k
|
159
274
|
if (k < headNo) then
|
160
|
-
|
161
|
-
if k >= stack.
|
275
|
+
p "+++" # #{k},#{stack.sizeofStack}"
|
276
|
+
if k >= stack.size then
|
162
277
|
stack.push(numberStr[k])
|
163
278
|
end
|
164
|
-
elsif
|
165
|
-
|
279
|
+
elsif k == headNo then
|
280
|
+
p "---"
|
281
|
+
if stack.size == 0 then
|
166
282
|
stack.push(numberStr[k-1])
|
167
283
|
end
|
168
|
-
if
|
169
|
-
|
284
|
+
if stack.last[$S_SLOT].size > numberStr[k-1][$S_SLOT].size then
|
285
|
+
loop do
|
286
|
+
stack.pop
|
287
|
+
if stack.last[$S_SLOT].size == numberStr[k-1][$S_SLOT].size then
|
288
|
+
break
|
289
|
+
end
|
290
|
+
end
|
170
291
|
end
|
171
292
|
else
|
172
|
-
|
293
|
+
p "~~~~"
|
173
294
|
stack.push(numberStr[k])
|
174
295
|
end #if...elsif
|
175
|
-
stack.dump
|
176
296
|
}
|
177
297
|
=begin
|
178
298
|
else
|
@@ -181,22 +301,35 @@ end #def postPailing
|
|
181
301
|
end #case
|
182
302
|
=end
|
183
303
|
end #if...else
|
184
|
-
|
185
|
-
number =
|
304
|
+
p "$$$$"
|
305
|
+
number = ""
|
306
|
+
stack.each { |item|
|
307
|
+
if item == stack.last then
|
308
|
+
item[$N_SLOT] += item[$C_SLOT]
|
309
|
+
item[$C_SLOT] = 1
|
310
|
+
end
|
311
|
+
number << (item[$N_SLOT]).to_s + '.'
|
312
|
+
@@log.debug number
|
313
|
+
}
|
314
|
+
|
186
315
|
h = "#"
|
187
316
|
times = startNo.to_i + size.to_i - 1
|
188
317
|
return h*times + number + str
|
189
318
|
end #def
|
190
319
|
|
320
|
+
module_function:compressWSpaces
|
321
|
+
module_function:italic_and_bold
|
322
|
+
module_function:transformSpecialChar
|
191
323
|
module_function:getNowTime
|
192
324
|
module_function:insertTimeStamp
|
193
325
|
module_function:abbrPreProcess
|
194
326
|
module_function:abbrPostProcess
|
195
327
|
module_function:storeAbbr
|
328
|
+
module_function:initNumberStack
|
196
329
|
module_function:calcSectionNo
|
197
|
-
module_function:
|
330
|
+
module_function:preProcFence
|
198
331
|
module_function:isDigit
|
199
|
-
module_function:
|
332
|
+
module_function:postProcFence
|
200
333
|
#############################################################################
|
201
334
|
end
|
202
335
|
|
@@ -234,16 +367,7 @@ class Stack
|
|
234
367
|
end
|
235
368
|
|
236
369
|
def insertNumber
|
237
|
-
|
238
|
-
@stack.each { |item|
|
239
|
-
if isTopofStack(item) then
|
240
|
-
item[$N_SLOT] += item[$C_SLOT]
|
241
|
-
item[$C_SLOT] = 1
|
242
|
-
end
|
243
|
-
str << (item[$N_SLOT]).to_s + '.'
|
244
|
-
@@log.debug str
|
245
|
-
}
|
246
|
-
return str
|
370
|
+
# return str
|
247
371
|
end
|
248
372
|
|
249
373
|
def evalStackTop
|
@@ -268,9 +392,15 @@ class Stack
|
|
268
392
|
end
|
269
393
|
end
|
270
394
|
|
271
|
-
def dump
|
395
|
+
def self.dump
|
272
396
|
@@log.debug("Stack DUMP:#{@stack}")
|
273
397
|
end
|
274
398
|
|
399
|
+
def self.destroy
|
400
|
+
if @stack.nil? then @stack = [] else @stack.clear end
|
401
|
+
p @stack
|
402
|
+
@sp = 0
|
403
|
+
end
|
404
|
+
|
275
405
|
end
|
276
406
|
|
data/lib/AoBane/version.rb
CHANGED
data/test/Test.html
CHANGED
@@ -8,7 +8,22 @@
|
|
8
8
|
|
9
9
|
<ul>
|
10
10
|
<li><a href="#bfheader-0cbc6611f5540bd0809a388dc95a615b" rel="toc">Test</a>
|
11
|
-
|
11
|
+
<ul>
|
12
|
+
<li><a href="#bfheader-f2b20ed74117a2bda0525514a898e0e0" rel="toc">1. →1.</a>
|
13
|
+
<ul>
|
14
|
+
<li><a href="#bfheader-4e7b97bf9819709771ba6c716991e3ef" rel="toc">1.1. →1.1.</a></li>
|
15
|
+
<li><a href="#bfheader-a4940c538c7be252daf50cc4237617ce" rel="toc">1.2. →1.2.</a>
|
16
|
+
<ul>
|
17
|
+
<li><a href="#bfheader-b162ec5d01c9e20e3551a5b96fa9f650" rel="toc">1.2.1. →1.2.1.</a></li>
|
18
|
+
<li><a href="#bfheader-584eba1c1d454adaca0318b151a2dcb2" rel="toc">1.2.2. →1.2.2.</a></li>
|
19
|
+
</ul></li>
|
20
|
+
<li><a href="#bfheader-9868f67e1aa2e9e7d90a9a4846b8558f" rel="toc">1.3. →1.3.</a></li>
|
21
|
+
</ul></li>
|
22
|
+
<li><a href="#bfheader-bd5a30e45e46b39eca67398f88312a1b" rel="toc">2. →2.</a>
|
23
|
+
<ul>
|
24
|
+
<li><a href="#bfheader-acbd18db4cc2f85cedef654fccc4a4d8" rel="toc">foo</a></li>
|
25
|
+
</ul></li>
|
26
|
+
</ul></li>
|
12
27
|
</ul>
|
13
28
|
|
14
29
|
<h1 id="bfheader-0cbc6611f5540bd0809a388dc95a615b">Test</h1>
|
@@ -19,26 +34,43 @@
|
|
19
34
|
|
20
35
|
<p>aa » «</p>
|
21
36
|
|
22
|
-
<
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
<
|
31
|
-
abccccc</p></li>
|
32
|
-
</ol>
|
37
|
+
<h2 id="bfheader-f2b20ed74117a2bda0525514a898e0e0">1. →1.</h2>
|
38
|
+
|
39
|
+
<h3 id="bfheader-4e7b97bf9819709771ba6c716991e3ef">1.1. →1.1.</h3>
|
40
|
+
|
41
|
+
<h3 id="bfheader-a4940c538c7be252daf50cc4237617ce">1.2. →1.2.</h3>
|
42
|
+
|
43
|
+
<h4 id="bfheader-b162ec5d01c9e20e3551a5b96fa9f650">1.2.1. →1.2.1.</h4>
|
44
|
+
|
45
|
+
<h4 id="bfheader-584eba1c1d454adaca0318b151a2dcb2">1.2.2. →1.2.2.</h4>
|
33
46
|
|
34
|
-
<
|
47
|
+
<h3 id="bfheader-9868f67e1aa2e9e7d90a9a4846b8558f">1.3. →1.3.</h3>
|
48
|
+
|
49
|
+
<p>abcdefg</p>
|
50
|
+
|
51
|
+
<h2 id="bfheader-bd5a30e45e46b39eca67398f88312a1b">2. →2.</h2>
|
52
|
+
|
53
|
+
<p>abccccc</p>
|
54
|
+
|
55
|
+
<div style="border:2px solid gray ;width:300px;line-height:100%;border-radius:rad=10px;">
|
35
56
|
|
36
57
|
<h3 id="bfheader-acbd18db4cc2f85cedef654fccc4a4d8">foo</h3>
|
37
58
|
|
38
|
-
<p>
|
59
|
+
<p>barasdf
|
60
|
+
<br />
|
61
|
+
<div style="border:2px solid gray ;width:200px;line-height:100%;border-radius:rad=10px;">
|
62
|
+
aaaaaa
|
63
|
+
cccc
|
64
|
+
<div style="border:2px solid gray ;width:100px;line-height:100%;border-radius:rad=10px;">
|
65
|
+
bbbbbb
|
66
|
+
</div>
|
67
|
+
</div>
|
68
|
+
<div style="border:2px solid gray ;width:200px;line-height:100%;border-radius:rad=10px;">
|
69
|
+
aaaaaa
|
70
|
+
</div>
|
71
|
+
<br />
|
72
|
+
<br />
|
39
73
|
</div>
|
40
|
-
|
41
|
-
<p><font color="#ff0000" face="" size="5">foo</font></p>
|
42
74
|
|
43
75
|
</body>
|
44
76
|
</html>
|
data/test/Test.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
{nrange:h2-h5}
|
2
2
|
{toc:h1-h6}
|
3
3
|
|
4
4
|
Test
|
@@ -28,10 +28,24 @@ abcdefg
|
|
28
28
|
abccccc
|
29
29
|
|
30
30
|
|-:b=2 solid gray w=300 rad=10-----------------|
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
### foo
|
32
|
+
bar
|
33
|
+
asdf
|
34
|
+
|
35
|
+
|-:b=2 solid gray w=200 rad=10-----------------|
|
36
|
+
aaaaaa
|
37
|
+
cccc
|
38
|
+
|-:b=2 solid gray w=100 rad=10-----------------|
|
39
|
+
bbbbbb
|
40
|
+
|____________________________________|
|
41
|
+
|__________________________________________|
|
42
|
+
kkkkkk
|
43
|
+
|-:b=2 solid gray w=200 rad=10-----------------|
|
44
|
+
aaaaaa
|
45
|
+
|__________________________________________|
|
46
|
+
|
34
47
|
|
48
|
+
|__________________________________________|
|
35
49
|
*[foo](#ff0000/5)
|
36
50
|
|
37
51
|
|
data/test/test2.html
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
5
|
+
<title>Test</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
|
9
|
+
<h1 id="bfheader-0cbc6611f5540bd0809a388dc95a615b">Test</h1>
|
10
|
+
|
11
|
+
<h1 id="bfheader-afbc53b5508660ebc55ef0e9f6b92fc4">1. aaa</h1>
|
12
|
+
|
13
|
+
<h2 id="bfheader-5de9e1fcd9cd2972a7eb946c7bf542c6">1.1. abc</h2>
|
14
|
+
|
15
|
+
<h3 id="bfheader-27b4fea764f25be818fbddc9644dacda">1.1.1. kkkk</h3>
|
16
|
+
|
17
|
+
<h4 id="bfheader-9a36ccc535c67e888612b6c40b377ac0">1.1.1.1. www</h4>
|
18
|
+
|
19
|
+
<h1 id="bfheader-7ce41b8fd4205ac8204851ebda7996cc">2. qqq</h1>
|
20
|
+
|
21
|
+
<h2 id="bfheader-76627366ec5ded7ed3f5dd8bffbab2a0">2.1. rrr</h2>
|
22
|
+
|
23
|
+
<p>cccc</p>
|
24
|
+
|
25
|
+
<h3 id="bfheader-a87f63d7e810f249c861814cea02f2af">2.1.1. rtttt</h3>
|
26
|
+
|
27
|
+
<p>aaaa</p>
|
28
|
+
|
29
|
+
</body>
|
30
|
+
</html>
|
data/test/test2.md
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: AoBane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.15
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-05-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: math_ml
|
@@ -69,6 +69,9 @@ extra_rdoc_files: []
|
|
69
69
|
files:
|
70
70
|
- .gitignore
|
71
71
|
- AoBane.gemspec
|
72
|
+
- AoBane.icns
|
73
|
+
- AoBane.jpg
|
74
|
+
- AoBane.tiff
|
72
75
|
- Gemfile
|
73
76
|
- LICENSE.txt
|
74
77
|
- README.md
|
@@ -81,6 +84,7 @@ files:
|
|
81
84
|
- lib/AoBane/version.rb
|
82
85
|
- test/Test.html
|
83
86
|
- test/Test.md
|
87
|
+
- test/test2.html
|
84
88
|
- test/test2.md
|
85
89
|
homepage: https://github.com/setminami/AoBane
|
86
90
|
licenses:
|
@@ -110,4 +114,5 @@ summary: You can generate complex HTML with simple way.
|
|
110
114
|
test_files:
|
111
115
|
- test/Test.html
|
112
116
|
- test/Test.md
|
117
|
+
- test/test2.html
|
113
118
|
- test/test2.md
|