]> git.lyx.org Git - features.git/blob - lib/lyx2lyx/lyx_2_3.py
Remove external date inset
[features.git] / lib / lyx2lyx / lyx_2_3.py
1 # -*- coding: utf-8 -*-
2 # This file is part of lyx2lyx
3 # -*- coding: utf-8 -*-
4 # Copyright (C) 2016 The LyX team
5 #
6 # This program is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU General Public License
8 # as published by the Free Software Foundation; either version 2
9 # of the License, or (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19
20 """ Convert files to the file format generated by lyx 2.3"""
21
22 import re, string
23 import unicodedata
24 import sys, os
25
26 # Uncomment only what you need to import, please.
27
28 #from parser_tools import find_token, find_end_of, find_tokens, \
29 #  find_token_exact, find_end_of_inset, find_end_of_layout, \
30 #  find_token_backwards, is_in_inset, get_value, get_quoted_value, \
31 #  del_token, check_token, get_option_value
32
33 from parser_tools import find_token, find_end_of_inset, get_value
34
35 #from lyx2lyx_tools import add_to_preamble, put_cmd_in_ert, get_ert, lyx2latex, \
36 #  lyx2verbatim, length_in_bp, convert_info_insets
37 #  insert_to_preamble, latex_length, revert_flex_inset, \
38 #  revert_font_attrs, hex2ratio, str2bool
39
40 from lyx2lyx_tools import add_to_preamble, put_cmd_in_ert
41
42 ####################################################################
43 # Private helper functions
44
45
46
47 ###############################################################################
48 ###
49 ### Conversion and reversion routines
50 ###
51 ###############################################################################
52
53 def convert_microtype(document):
54     " Add microtype settings. "
55     i = find_token(document.header, "\\font_tt_scale" , 0)
56     if i == -1:
57         document.warning("Malformed LyX document: Can't find \\font_tt_scale.")
58         return;
59     j = find_token(document.preamble, "\\usepackage{microtype}", 0)
60     if j == -1:
61         document.header.insert(i + 1, "\\use_microtype 0")
62     else:
63         document.header.insert(i + 1, "\\use_microtype 1")
64         del document.preamble[j]
65
66
67 def revert_microtype(document):
68     " Remove microtype settings. "
69     i = find_token(document.header, "\\use_microtype", 0)
70     if i == -1:
71         return
72     value = get_value(document.header, "\\use_microtype" , i).split()[0]
73     del document.header[i]
74     if value == "1":
75         add_to_preamble(document, ["\\usepackage{microtype}"])
76
77
78 def convert_dateinset(document):
79     ' Convert date external inset to ERT '
80     i = 0
81     while 1:
82         i = find_token(document.body, "\\begin_inset External", i)
83         if i == -1:
84             return
85         j = find_end_of_inset(document.body, i)
86         if j == -1:
87             document.warning("Malformed lyx document: Missing '\\end_inset' in convert_dateinset.")
88             i += 1
89             continue
90         if get_value(document.body, 'template', i, j) == "Date":
91             document.body[i : j + 1] = put_cmd_in_ert("\\today ")
92         i += 1
93         continue
94
95
96
97 ##
98 # Conversion hub
99 #
100
101 supported_versions = ["2.3.0", "2.3"]
102 convert = [
103            [509, [convert_microtype]],
104            [510, [convert_dateinset]]
105           ]
106
107 revert =  [
108            [509, []],
109            [508, [revert_microtype]]
110           ]
111
112
113 if __name__ == "__main__":
114     pass