ppz 0.0.1 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/asset/style/ppz.css +141 -0
- data/asset/style/ppz.styl +126 -0
- data/bin/common.rb +42 -0
- data/bin/doc.rb +17 -0
- data/bin/folder.rb +10 -0
- data/bin/ppz +12 -10
- data/lib/func/util.rb +19 -2
- data/lib/{object/model → model}/abstract/model.rb +16 -18
- data/lib/model/abstract/wrapper-model.rb +26 -0
- data/lib/model/comment/container.rb +7 -0
- data/lib/model/comment/item.rb +12 -0
- data/lib/{object/model → model}/common/escape.rb +1 -1
- data/lib/{object/model → model}/common/tag.rb +0 -0
- data/lib/model/list/item/abstract.rb +13 -0
- data/lib/model/list/item/unordered.rb +7 -0
- data/lib/model/list/wrapper/abstract.rb +12 -0
- data/lib/model/list/wrapper/unordered.rb +3 -0
- data/lib/model/p/index.rb +17 -0
- data/lib/model/section/abstract.rb +15 -0
- data/lib/model/section/leaf.rb +29 -0
- data/lib/model/section/root.rb +16 -0
- data/lib/model/special-block/container.rb +25 -0
- data/lib/model/special-block/item.rb +8 -0
- data/lib/{object/parser → parser}/common/context/abstract.rb +3 -5
- data/lib/parser/common/context/doc.rb +15 -0
- data/lib/parser/doc/abstract.rb +68 -0
- data/lib/{object/parser → parser}/doc/file.rb +1 -3
- data/lib/{object/parser → parser}/doc/string.rb +1 -3
- data/lib/parser/folder/index.rb +9 -0
- data/lib/parser/folder/model/abstract.rb +90 -0
- data/lib/parser/folder/model/file/abstract.rb +23 -0
- data/lib/parser/folder/model/file/other.rb +7 -0
- data/lib/parser/folder/model/file/ppz.rb +15 -0
- data/lib/parser/folder/model/folder.rb +93 -0
- data/lib/ppz.rb +26 -1
- metadata +34 -26
- data/bin/ppz-util.rb +0 -31
- data/lib/object/model/abstract/wrapper-model.rb +0 -21
- data/lib/object/model/common/tag.test.rb +0 -25
- data/lib/object/model/list/item/abstract.rb +0 -15
- data/lib/object/model/list/item/unordered.rb +0 -5
- data/lib/object/model/list/wrapper/abstract.rb +0 -7
- data/lib/object/model/list/wrapper/unordered.rb +0 -5
- data/lib/object/model/p/index.rb +0 -15
- data/lib/object/model/section/abstract.rb +0 -10
- data/lib/object/model/section/leaf.rb +0 -35
- data/lib/object/model/section/root.rb +0 -7
- data/lib/object/model/section/test.rb +0 -12
- data/lib/object/model/special-block/container.rb +0 -18
- data/lib/object/model/special-block/item.rb +0 -10
- data/lib/object/parser/common/context/doc.rb +0 -15
- data/lib/object/parser/doc/abstract.rb +0 -69
- data/lib/object/parser/doc/file.test.rb +0 -6
- data/lib/object/parser/folder/index.rb +0 -7
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
require 'test/unit'
|
|
2
|
-
require_relative './leaf'
|
|
3
|
-
require_relative './root'
|
|
4
|
-
|
|
5
|
-
root = RootSectionModel.new
|
|
6
|
-
leaf1 = LeafSectionModel.new '一级标题'
|
|
7
|
-
leaf2 = LeafSectionModel.new '第二个一级标题'
|
|
8
|
-
leaf11 = LeafSectionModel.new '二级标题'
|
|
9
|
-
|
|
10
|
-
root.append leaf1
|
|
11
|
-
leaf1.append leaf11
|
|
12
|
-
root.append leaf2
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
require_relative '../abstract/wrapper-model'
|
|
2
|
-
|
|
3
|
-
class SpecialContainerModel < AbstractWrapperModel
|
|
4
|
-
REG_EXP = /^``` (.+)/
|
|
5
|
-
def self.from_line line
|
|
6
|
-
return nil unless match_data = REG_EXP.match(line)
|
|
7
|
-
SpecialContainerModel.new $1
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def initialize name
|
|
11
|
-
@name = name
|
|
12
|
-
super()
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def to_html
|
|
16
|
-
"<div class=\"special-block #{@name}\">#{super}</div>"
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
require_relative '../../../model/section/abstract'
|
|
2
|
-
require_relative './abstract'
|
|
3
|
-
|
|
4
|
-
class DocContext < AbstractContext
|
|
5
|
-
def level
|
|
6
|
-
@stack.reverse_each do |item|
|
|
7
|
-
return item.level if item.is_a? AbstractSectionModel
|
|
8
|
-
end
|
|
9
|
-
throw '不应该到这里'
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def pop_to_section
|
|
13
|
-
pop_to AbstractSectionModel
|
|
14
|
-
end
|
|
15
|
-
end
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# 解析一个 .ppz 文档(可以是一个文件、字符串)
|
|
2
|
-
|
|
3
|
-
require_relative '../common/context/doc'
|
|
4
|
-
require_relative '../../model/section/leaf'
|
|
5
|
-
require_relative '../../model/section/root'
|
|
6
|
-
require_relative '../../model/p/index'
|
|
7
|
-
require_relative '../../model/list/item/unordered'
|
|
8
|
-
require_relative '../../model/list/wrapper/unordered'
|
|
9
|
-
require_relative '../../model/special-block/container'
|
|
10
|
-
require_relative '../../model/special-block/item'
|
|
11
|
-
|
|
12
|
-
class AbstractDocParser
|
|
13
|
-
def initialize
|
|
14
|
-
@context = DocContext.new RootSectionModel.new
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def get_model
|
|
18
|
-
loop do
|
|
19
|
-
line = readline
|
|
20
|
-
break unless line != nil
|
|
21
|
-
handle_line line
|
|
22
|
-
end
|
|
23
|
-
@context.root
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
private
|
|
27
|
-
def handle_line line
|
|
28
|
-
if @context.head.is_a? SpecialContainerModel
|
|
29
|
-
# special-block
|
|
30
|
-
if /^``` *$/.match line
|
|
31
|
-
# special-block-end
|
|
32
|
-
@context.pop
|
|
33
|
-
return
|
|
34
|
-
else
|
|
35
|
-
# special-block-item
|
|
36
|
-
target = SpecialItemModel.new line
|
|
37
|
-
end
|
|
38
|
-
elsif target = SpecialContainerModel.from_line(line)
|
|
39
|
-
# special-block-container
|
|
40
|
-
elsif target = LeafSectionModel.from_line(line)
|
|
41
|
-
# section
|
|
42
|
-
# 检查 level
|
|
43
|
-
loop do
|
|
44
|
-
break if @context.level < target.level
|
|
45
|
-
@context.pop
|
|
46
|
-
end
|
|
47
|
-
elsif target = UnorderedListItemModel.from_line(line)
|
|
48
|
-
# 列表
|
|
49
|
-
unless @context.head.is_a? UnorderedListWrapperModel # 如果当前不在一个 无序列表 里
|
|
50
|
-
wrapper = UnorderedListWrapperModel.new # 就整一个无序列表
|
|
51
|
-
@context.pop_to_section # 找到最近的 section
|
|
52
|
-
@context.head.append wrapper # 加入 wrapper
|
|
53
|
-
@context.append wrapper # wrapper 入上下文栈
|
|
54
|
-
end
|
|
55
|
-
# p
|
|
56
|
-
else
|
|
57
|
-
@context.pop_to_section # 找到最近的 section
|
|
58
|
-
target = PModel.new line
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# 添加到父级 model
|
|
62
|
-
@context.head.append target
|
|
63
|
-
|
|
64
|
-
# 推入上下文
|
|
65
|
-
if target.is_a? AbstractWrapperModel
|
|
66
|
-
@context.append target
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|