File: TODO

package info (click to toggle)
openjade 1.4devel1-20.1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 6,636 kB
  • sloc: cpp: 90,082; sh: 10,847; ansic: 2,365; lisp: 894; perl: 604; makefile: 443; sed: 93
file content (197 lines) | stat: -rw-r--r-- 8,033 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
* Add some optimizations to the query stuff: add query rules to the per-gi
  rule lists only if they actually contain at least on element node with that
  gi, add a seperate list of char rules and a findCharRule function to use
  for char nodes (or combine the various find...Rule functions into one
  which gets the list to look in as a parameter). Then hasCharRules_ can 
  be replaced by charRules_[0].size() > 0 || charRules_[1].size() > 0.
x
* Redo the modules stuff. Move it from Interpreter to grove/. Ideally, the
  style engine shouldn't need any hardwired knowledge about the limitations
  of the grove implementation, but should query it.

* Redo the features stuff to make it cleaner.  

* Remove the SdataMapper hack from the grove interface. Rename SdataMapper
  to something like GroveConstructionParameters and pass it to the grove
  construction process. Eventually we want to add the standard-chars,
  combine-char and other stuff to the GroveConstructionParameters.

* Make the in-memory representation for char chunks more compact. Right
  now we store a flat array of 32bit chars, which is wasteful. If we use
  a different representation, DataNode::charChunk will involve a making
  a copy and thus be much more expensive than currently. Thus we should
  make sure it is not called unnecessarily often (eg its called twice
  in ProcessContext::processNode). 

* Add more error messages to the SchemeParser. Currently, many parser
  functions just return 0 to the caller; they should also issue a message.
  Add sth like AllowedTokensMessageArg and use that in 
  SchemeParser::tokenRecover to give information about the expected tokens.

* Free Expressions when they are no longer needed. Later, maybe replace the
  allocation mechanism with a simpler one that does not actually free
  individual objects.

* Wrap lines in help message. (Add wrapping OutputCharStream.)
  Then fold the info<n> messages into a single message

* The empty delimEnd message has been removed from ParserMessages.msg.
  If translators need to do something different than just put a string
  before the actual delimiter, we should support simple insertions in
  message fragments and use
  +delim++delimiter %
  instead.

Things which are missing and need a lot of work
===============================================

* Redesign the App class hierarchy to prepare for breaking OpenJade in
  exchangeable components.

* Check the win32 port of OpenJade (OpenSP works).

* Support i18n on win32. As a first step, write a perl script to translate
  the .rc files using the translations from the <lang>.po files. Be careful,
  the quoting in .rc seems to be different from the quoting in .po. 
  This will give us compile-time language-choice on win32, ie one could
  decide to run this script for de.po before the compilation to get the
  German translations compiled in. I still have no idea how install-time
  language-selection would be handled. 

* SGML backend: Change the document-type FO to be non-atomic, to allow an
  internal DTD subset. ADD FOs for DTD declarations.

* query: leads to current-node not being an element node.

* char-script-case: this should be handled by the backends.

* baseset-encoding, literal-described-char, other-chars: 
  must abandon SP_CHARSET_FIXED to do this, since otherwise
  SP does unwanted conversions on numeric char refs. On the
  other hand, we do want SP_CHARSET_FIXED, if we are using
  jades builtin repertoire (ie Unicode). This could be done
  by scanning the cmdline args for "-s"/"--strict" before
  constructing the JadeApp instance.  

  We have to map other-chars in the Unicode/UCS private area somewhere and
  tell the user/backend about it. 
 
* combine-char: If we do this, we can't do character translation
  as a map char --> char any longer, but instead have to deal
  with string --> string.

* Annex K #ALL/#IMLICIT content tokens. Implementation idea: At the 
  begin of the instance and after seeing a new implicit element type 
  in the instance, go over all definitions and recompile the model 
  groups. Also adjust the inclusions/exclusions. Optimization: recompile 
  only those which actually use #ALL/#IMPLICIT.

<<<<<<< TODO
* Annex K #IMPLIED doctype name.

=======
* Annex K DTD data entities: add a DTD notation framework. Applications
  should have a way to register DTD notation handlers which would then
  be called for DTD data entities with the corresponding notation. They
  would get a pointer to the entity and to the current Dtd and would
  add the element and entity declarations they extract from the entity
  to the Dtd.

>>>>>>> 1.12.2.6
* check table-auto-width and multi-process features.

* A caching mechanism for DTDs, dsssl specs, ...
  This is complicated, since the result of parsing a DTD does depend not
  only on the sysid, but also on cmdline options which could define parameter
  entities and on the catalogs used to search for entities. 

* An XSLFO backend ? Would try to approximate the DSSSL FOT into an XSLFO
  document. Then we could take advantage of existing XSL formatters. We could
  also drop JadeTeX in favor of PassiveTeX (when it gets ready) then.

* TeXFOTBuilder: Only output Start/EndNode pairs for nodes actually referred to
  (see RtfFOTBuilder).

* Do page feature in the front-end.

* TeX backend: Implement general indirect FOs by outputting relevant info from
  a TeX run and reading that info in the next OJ run.



Simple things
=============

* install ports, ICs, etc only in SL Interpreters.

* Perhaps split InterpreterMessages into InterpreterMessages and 
  SchemeParserMessages (and more...). 

<<<<<<< TODO
* Remove FOTBuilder::characters(const Vector<CharacterNIC> &) and instead add
  a procedure that lets the backend query character properties for a Char
  array. Makes storing parts of the FOT more efficient (otherwise,
  SaveFOTBuilder will have to store the NIC Vectors, for example.)
  Should be done before next release.

* A way for backends to declare/access extension character properties.
  (Not needed until we have a backend that actually would do this.)

* Validation of extension flow objects. (Not very important, since the backends
  can handle these special cases without major effort.) Instead we could add a
  FOTBuilder::FOMessage() non-virtual, so that backends may produce consistent
  error messages without knowing about ProcessContext internals.
=======
* Set up framework for I18N: generating .po from .msg, po/OpenXYZ.pot from ../*.po,
  generate and install .mo files. This has been done for OpenSP,
  still to do for OpenJade. 
  
  If you add a new .msg file, you now have to remember to add it 
  to po/POTFILES.in.

  Adding support for a new language is done by:
  1) cp po/OpenSP.pot <lang>.po	
  2) Add translations in po/<lang>.po
  3) cvs add po/<lang>.po 
  4) Add <lang> to ALL_LINGUAS in configure.in
  5) cvs commit configure.in po/<lang>.po
  Here <lang> stands for the proper 2-letter language code 
  (is that ISO 639 ?)

  Still to do: figure out how to create translated .rc files from
  the translations in <lang>.po. This will need some perl magic
  to read in <lang>.po, then go over the .rc file and for each string,
  look up the translation. Then write out a translated .rc file 
  containing the proper language identification (ask Didier about this). 
>>>>>>> 1.12.2.6

* Support uri-ref addresses in more backends.

Things which have to be added to the jade internals documentation
=================================================================

*  writing backends.

*  scheme primitives: special meaning of partIndex == unsigned(-1),
   (define internal: ...), (define feature: foo ...).

*  language stuff.

*  feature checking.

*  grove plan checking.

*  color spaces.

*  char repertoire stuff.

* messages: module stuff, message numbers 
  I18n handling.

Reorganization
==============

* clean up the mess of SP_ defines
 
* replace many SP_ defines by their more `standard' automake
  names (see the bottom of acconfig.h)