1 | 1 |
# encoding: UTF-8
|
2 | 2 |
|
3 | 3 |
from datetime import datetime
|
|
4 |
from collections import OrderedDict
|
4 | 5 |
import re
|
5 | 6 |
|
6 | 7 |
from feedmark.formats.markdown import markdown_to_html5, markdown_to_html5_deep
|
|
31 | 32 |
class Document(object):
|
32 | 33 |
def __init__(self, title):
|
33 | 34 |
self.title = title
|
34 | |
self.properties = {}
|
|
35 |
self.properties = OrderedDict()
|
35 | 36 |
|
36 | 37 |
self.preamble = None
|
37 | 38 |
self.sections = []
|
|
53 | 54 |
|
54 | 55 |
def to_json_data(self, **kwargs):
|
55 | 56 |
|
56 | |
htmlize = kwargs.get('htmlize', False)
|
57 | |
if htmlize:
|
|
57 |
if kwargs.get('htmlize', False):
|
58 | 58 |
if 'reference_links' not in kwargs:
|
59 | 59 |
kwargs['reference_links'] = self.global_reference_links()
|
60 | 60 |
preamble = markdown_to_html5(self.preamble, reference_links=kwargs['reference_links'])
|
|
62 | 62 |
else:
|
63 | 63 |
preamble = self.preamble
|
64 | 64 |
properties = self.properties
|
|
65 |
|
|
66 |
if kwargs.get('ordered', False):
|
|
67 |
properties_list = []
|
|
68 |
for key, value in properties.items():
|
|
69 |
properties_list.append([key, value])
|
|
70 |
properties = properties_list
|
|
71 |
else:
|
|
72 |
properties = dict(properties)
|
65 | 73 |
|
66 | 74 |
return {
|
67 | 75 |
'filename': self.filename,
|
|
76 | 84 |
def __init__(self, title):
|
77 | 85 |
self.document = None
|
78 | 86 |
self.title = title
|
79 | |
self.properties = {}
|
|
87 |
self.properties = OrderedDict()
|
80 | 88 |
|
81 | 89 |
self.lines = []
|
82 | 90 |
|
|
85 | 93 |
if self.document:
|
86 | 94 |
s += " of " + str(self.document)
|
87 | 95 |
return s
|
88 | |
|
89 | |
def add_line(self, line):
|
90 | |
self.lines.append(line.rstrip())
|
91 | |
|
92 | |
def set(self, key, value):
|
93 | |
self.properties[key] = value
|
94 | 96 |
|
95 | 97 |
@property
|
96 | 98 |
def body(self):
|
|
119 | 121 |
|
120 | 122 |
def to_json_data(self, **kwargs):
|
121 | 123 |
|
122 | |
htmlize = kwargs.get('htmlize', False)
|
123 | |
if htmlize:
|
|
124 |
if kwargs.get('htmlize', False):
|
124 | 125 |
body = markdown_to_html5(self.body, reference_links=kwargs['reference_links'])
|
125 | 126 |
properties = markdown_to_html5_deep(self.properties, reference_links=kwargs['reference_links'])
|
126 | 127 |
else:
|
127 | 128 |
body = self.body
|
128 | 129 |
properties = self.properties
|
|
130 |
|
|
131 |
if kwargs.get('ordered', False):
|
|
132 |
properties_list = []
|
|
133 |
for key, value in properties.items():
|
|
134 |
properties_list.append([key, value])
|
|
135 |
properties = properties_list
|
|
136 |
else:
|
|
137 |
properties = dict(properties)
|
129 | 138 |
|
130 | 139 |
return {
|
131 | 140 |
'title': self.title,
|
|
213 | 222 |
raise ValueError('Expected property')
|
214 | 223 |
|
215 | 224 |
def parse_properties(self):
|
216 | |
properties = {}
|
|
225 |
properties = OrderedDict()
|
217 | 226 |
while self.is_blank_line() or self.is_property_line():
|
218 | 227 |
if self.is_property_line():
|
219 | 228 |
kind, key, val = self.parse_property()
|