[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
branch master updated: * tp/Texinfo/Config.pm (texinfo_register_no_arg_c
From: |
Patrice Dumas |
Subject: |
branch master updated: * tp/Texinfo/Config.pm (texinfo_register_no_arg_command_formatting), tp/Texinfo/Convert/HTML.pm (_translate_names) (%default_no_arg_commands_formatting, _text_element_conversion) (_convert_no_arg_command, _css_string_convert_no_arg_command) (converter_initialize): specify no args commands with a separate 'element' and 'text' information in an hash reference instead of just having a text. |
Date: |
Fri, 07 Jan 2022 13:31:18 -0500 |
This is an automated email from the git hooks/post-receive script.
pertusus pushed a commit to branch master
in repository texinfo.
The following commit(s) were added to refs/heads/master by this push:
new fc0ce3529c * tp/Texinfo/Config.pm
(texinfo_register_no_arg_command_formatting), tp/Texinfo/Convert/HTML.pm
(_translate_names) (%default_no_arg_commands_formatting,
_text_element_conversion) (_convert_no_arg_command,
_css_string_convert_no_arg_command) (converter_initialize): specify no args
commands with a separate 'element' and 'text' information in an hash reference
instead of just having a text.
fc0ce3529c is described below
commit fc0ce3529cd1306abe13ef58facf72abe0324342
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Fri Jan 7 19:31:05 2022 +0100
* tp/Texinfo/Config.pm (texinfo_register_no_arg_command_formatting),
tp/Texinfo/Convert/HTML.pm (_translate_names)
(%default_no_arg_commands_formatting, _text_element_conversion)
(_convert_no_arg_command, _css_string_convert_no_arg_command)
(converter_initialize): specify no args commands with a separate
'element' and 'text' information in an hash reference instead of just
having a text.
---
ChangeLog | 10 ++++
tp/TODO | 2 -
tp/Texinfo/Config.pm | 14 ++++--
tp/Texinfo/Convert/HTML.pm | 116 +++++++++++++++++++++++++++------------------
tp/init/html32.pm | 4 +-
5 files changed, 94 insertions(+), 52 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 5c2d7eafaa..7f2f0da772 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2022-01-06 Patrice Dumas <pertusus@free.fr>
+
+ * tp/Texinfo/Config.pm (texinfo_register_no_arg_command_formatting),
+ tp/Texinfo/Convert/HTML.pm (_translate_names)
+ (%default_no_arg_commands_formatting, _text_element_conversion)
+ (_convert_no_arg_command, _css_string_convert_no_arg_command)
+ (converter_initialize): specify no args commands with a separate
+ 'element' and 'text' information in an hash reference instead of just
+ having a text.
+
2022-01-06 Patrice Dumas <pertusus@free.fr>
* tp/Texinfo/Convert/Converter.pm
diff --git a/tp/TODO b/tp/TODO
index f686d29d2a..f0515880ce 100644
--- a/tp/TODO
+++ b/tp/TODO
@@ -16,8 +16,6 @@ Before next release
LaTeX collect packages.
-<small class="enddots" through collect css
-
Bugs
====
diff --git a/tp/Texinfo/Config.pm b/tp/Texinfo/Config.pm
index 8c704ce0e1..177e0ed90e 100644
--- a/tp/Texinfo/Config.pm
+++ b/tp/Texinfo/Config.pm
@@ -364,10 +364,11 @@ foreach my $possible_formatting_context
(($default_formatting_context,
$possible_formatting_contexts{$possible_formatting_context} = 1;
}
-sub texinfo_register_no_arg_command_formatting($$;$)
+sub texinfo_register_no_arg_command_formatting($$;$$)
{
my $command = shift;
- my $value = shift;
+ my $text = shift;
+ my $element = shift;
my $context = shift;
if (!defined($context)) {
@@ -377,7 +378,14 @@ sub texinfo_register_no_arg_command_formatting($$;$)
'texinfo_register_no_arg_command_formatting', $context));
return 0;
}
- $GNUT_no_arg_commands_formatting_strings->{$context}->{$command} = $value;
+ my $specification = {};
+ if (defined($text)) {
+ $specification->{'text'} = $text;
+ }
+ if (defined($element)) {
+ $specification->{'element'} = $element;
+ }
+ $GNUT_no_arg_commands_formatting_strings->{$context}->{$command} =
$specification;
return 1;
}
diff --git a/tp/Texinfo/Convert/HTML.pm b/tp/Texinfo/Convert/HTML.pm
index e24dbee666..d83b1eaa32 100644
--- a/tp/Texinfo/Convert/HTML.pm
+++ b/tp/Texinfo/Convert/HTML.pm
@@ -58,6 +58,12 @@ use if $] >= 5.012, feature => 'unicode_strings';
use strict;
+use Carp qw(cluck confess);
+
+use File::Copy qw(copy);
+
+use Storable;
+
use Texinfo::Common;
use Texinfo::Structuring;
use Texinfo::Convert::Unicode;
@@ -69,10 +75,6 @@ use Texinfo::Convert::NodeNameNormalization;
use Texinfo::Config;
-use Carp qw(cluck confess);
-
-use File::Copy qw(copy);
-
require Exporter;
use vars qw($VERSION @ISA);
@ISA = qw(Texinfo::Convert::Converter);
@@ -1610,9 +1612,9 @@ sub _translate_names($)
foreach my $context ('normal', 'preformatted', 'string') {
foreach my $command
(keys(%{$self->{'commands_translation'}->{$context}})) {
$translated_commands{$command} = 1;
- delete $self->{'no_arg_commands_formatting'}->{$context}->{$command};
+ delete
$self->{'no_arg_commands_formatting'}->{$context}->{$command}->{'text'};
if (defined($self->{'commands_translation'}->{$context}->{$command})) {
- $self->{'no_arg_commands_formatting'}->{$context}->{$command}
+
$self->{'no_arg_commands_formatting'}->{$context}->{$command}->{'text'}
=
$self->gdt($self->{'commands_translation'}->{$context}->{$command},
undef, 'translated_text');
}
@@ -1803,19 +1805,19 @@ foreach my $ignored_block_commands ('ignore', 'macro',
'rmacro', 'copying',
my %default_no_arg_commands_formatting;
foreach my $command
(keys(%Texinfo::Convert::Converter::xml_text_entity_no_arg_commands_formatting))
{
- $default_no_arg_commands_formatting{'normal'}->{$command} =
+ $default_no_arg_commands_formatting{'normal'}->{$command}->{'text'} =
$Texinfo::Convert::Converter::xml_text_entity_no_arg_commands_formatting{$command};
}
-$default_no_arg_commands_formatting{'normal'}->{' '} = ' ';
-$default_no_arg_commands_formatting{'normal'}->{"\t"} = ' ';
-$default_no_arg_commands_formatting{'normal'}->{"\n"} = ' ';
+$default_no_arg_commands_formatting{'normal'}->{' '}->{'text'} = ' ';
+$default_no_arg_commands_formatting{'normal'}->{"\t"}->{'text'} = ' ';
+$default_no_arg_commands_formatting{'normal'}->{"\n"}->{'text'} = ' ';
my %default_commands_translation;
# possible example of use, right now not used, as
# the generic Converter customization is directly used through
# the call to Texinfo::Convert::Utils::translated_command_tree().
-#$default_commands_translation{'normal'}->{'error'} = 'error-->';
+#$default_commands_translation{'normal'}->{'error'}->{'text'} = 'error-->';
## This is used to have gettext pick up the chain to be translated
#if (0) {
# my $not_existing;
@@ -1823,19 +1825,19 @@ my %default_commands_translation;
#}
$default_no_arg_commands_formatting{'normal'}->{'enddots'}
- = '<small class="enddots">...</small>';
-$default_no_arg_commands_formatting{'preformatted'}->{'enddots'} = '...';
-$default_no_arg_commands_formatting{'normal'}->{'*'} = '<br>';
+ = {'element' => 'small', 'text' => '...'};
+$default_no_arg_commands_formatting{'preformatted'}->{'enddots'}->{'text'} =
'...';
+$default_no_arg_commands_formatting{'normal'}->{'*'}->{'text'} = '<br>';
# this is used in math too, not sure that it is the best
# in that context, '<br>' could be better.
-$default_no_arg_commands_formatting{'preformatted'}->{'*'} = "\n";
+$default_no_arg_commands_formatting{'preformatted'}->{'*'}->{'text'} = "\n";
# escaped code points in CSS
# https://www.w3.org/TR/css-syntax/#consume-escaped-code-point
# Consume as many hex digits as possible, but no more than 5. Note that this
means 1-6 hex digits have been consumed in total. If the next input code point
is whitespace, consume it as well. Interpret the hex digits as a hexadecimal
number.
foreach my $no_brace_command (keys(%no_brace_commands)) {
- $default_no_arg_commands_formatting{'css_string'}->{$no_brace_command}
+
$default_no_arg_commands_formatting{'css_string'}->{$no_brace_command}->{'text'}
= $no_brace_commands{$no_brace_command};
}
@@ -1849,17 +1851,17 @@ foreach my $command
(keys(%{$default_no_arg_commands_formatting{'normal'}})) {
} else {
$css_string = "\\$Texinfo::Convert::Unicode::unicode_map{$command} ";
}
- $default_no_arg_commands_formatting{'css_string'}->{$command} =
$css_string;
+ $default_no_arg_commands_formatting{'css_string'}->{$command}->{'text'} =
$css_string;
} elsif ($default_no_arg_commands_formatting{'preformatted'}->{$command}) {
- $default_no_arg_commands_formatting{'css_string'}->{$command} =
- $default_no_arg_commands_formatting{'preformatted'}->{$command};
- } elsif ($default_no_arg_commands_formatting{'normal'}->{$command}) {
- $default_no_arg_commands_formatting{'css_string'}->{$command} =
- $default_no_arg_commands_formatting{'normal'}->{$command};
+ $default_no_arg_commands_formatting{'css_string'}->{$command}->{'text'} =
+
$default_no_arg_commands_formatting{'preformatted'}->{$command}->{'text'};
+ } elsif
($default_no_arg_commands_formatting{'normal'}->{$command}->{'text'}) {
+ $default_no_arg_commands_formatting{'css_string'}->{$command}->{'text'} =
+ $default_no_arg_commands_formatting{'normal'}->{$command}->{'text'};
} elsif (exists($no_brace_commands{$command})
and $no_brace_commands{$command} eq '') {
# @- @/ @/ @|
- $default_no_arg_commands_formatting{'css_string'}->{$command} = '';
+ $default_no_arg_commands_formatting{'css_string'}->{$command}->{'text'} =
'';
} else {
warn "BUG: $command: no css_string\n";
}
@@ -1867,14 +1869,14 @@ foreach my $command
(keys(%{$default_no_arg_commands_formatting{'normal'}})) {
# replace the default to force using only translation and also
# prevent using a fixed CSS.
-$default_no_arg_commands_formatting{'css_string'}->{'error'} = '';
+$default_no_arg_commands_formatting{'css_string'}->{'error'} = {};
-$default_no_arg_commands_formatting{'css_string'}->{'*'} = '\A ';
+$default_no_arg_commands_formatting{'css_string'}->{'*'}->{'text'} = '\A ';
-$default_no_arg_commands_formatting{'css_string'}->{' '} = ' ';
-$default_no_arg_commands_formatting{'css_string'}->{"\t"} = ' ';
-$default_no_arg_commands_formatting{'css_string'}->{"\n"} = ' ';
-$default_no_arg_commands_formatting{'css_string'}->{'tie'} = ' ';
+$default_no_arg_commands_formatting{'css_string'}->{' '}->{'text'} = ' ';
+$default_no_arg_commands_formatting{'css_string'}->{"\t"}->{'text'} = ' ';
+$default_no_arg_commands_formatting{'css_string'}->{"\n"}->{'text'} = ' ';
+$default_no_arg_commands_formatting{'css_string'}->{'tie'}->{'text'} = ' ';
# w not in css_string, set the corresponding css_map especially,
# which also has none and not w in the class
@@ -1886,11 +1888,12 @@ foreach my $mark_command
(keys(%{$default_no_arg_commands_formatting{'css_string
my $css_string;
if ($mark_command eq 'bullet') {
$css_string = 'disc';
- } elsif
($default_no_arg_commands_formatting{'css_string'}->{$mark_command}) {
+ } elsif ($default_no_arg_commands_formatting{'css_string'}->{$mark_command}
+ and
$default_no_arg_commands_formatting{'css_string'}->{$mark_command}->{'text'}) {
if ($special_list_bullet_css_string_no_arg_command{$mark_command}) {
$css_string =
$special_list_bullet_css_string_no_arg_command{$mark_command};
} else {
- $css_string =
$default_no_arg_commands_formatting{'css_string'}->{$mark_command};
+ $css_string =
$default_no_arg_commands_formatting{'css_string'}->{$mark_command}->{'text'};
}
$css_string =~ s/^(\\[A-Z0-9]+) $/$1/;
$css_string = '"'.$css_string.'"';
@@ -1913,6 +1916,25 @@ sub builtin_default_css_text()
return $css_text;
}
+sub _text_element_conversion($$$)
+{
+ my $self = shift;
+ my $specification = shift;
+ my $command = shift;
+
+ my $text = '';
+ # note that there could be elements in text
+ if (exists($specification->{'text'})) {
+ $text = $specification->{'text'};
+ }
+
+ if (exists($specification->{'element'})) {
+ return $self->html_attribute_class($specification->{'element'}, $command)
+ .'>'. $text . '</'.$specification->{'element'}.'>';
+ } else {
+ return $text;
+ }
+}
sub _convert_no_arg_command($$$)
{
@@ -1944,11 +1966,14 @@ sub _convert_no_arg_command($$$)
return $self->convert_tree($translated_tree, "convert no arg $cmdname
translated");
}
if ($self->in_preformatted() or $self->in_math()) {
- $result =
$self->{'no_arg_commands_formatting'}->{'preformatted'}->{$cmdname};
+ $result = $self->_text_element_conversion(
+ $self->{'no_arg_commands_formatting'}->{'preformatted'}->{$cmdname},
$cmdname);
} elsif ($self->in_string()) {
- $result = $self->{'no_arg_commands_formatting'}->{'string'}->{$cmdname};
+ $result = $self->_text_element_conversion(
+ $result = $self->{'no_arg_commands_formatting'}->{'string'}->{$cmdname},
$cmdname);
} else {
- $result = $self->{'no_arg_commands_formatting'}->{'normal'}->{$cmdname};
+ $result = $self->_text_element_conversion(
+ $result = $self->{'no_arg_commands_formatting'}->{'normal'}->{$cmdname},
$cmdname);
}
return $result;
@@ -1983,7 +2008,7 @@ sub _css_string_convert_no_arg_command($$$)
if ($translated_tree) {
return $self->convert_tree($translated_tree, "convert no arg $cmdname
translated");
}
- $result = $self->{'no_arg_commands_formatting'}->{'css_string'}->{$cmdname};
+ $result =
$self->{'no_arg_commands_formatting'}->{'css_string'}->{$cmdname}->{'text'};
}
foreach my $command(keys(%{$default_no_arg_commands_formatting{'normal'}})) {
@@ -6011,22 +6036,22 @@ sub converter_initialize($)
# duplicate such as not to modify the defaults
my $conf_default_no_arg_commands_formatting_normal
- = { %{$default_no_arg_commands_formatting{'normal'}} };
+ = Storable::dclone($default_no_arg_commands_formatting{'normal'});
if ($self->get_conf('USE_NUMERIC_ENTITY')) {
$self->_set_non_breaking_space($xml_numeric_entity_nbsp);
$self->{'paragraph_symbol'} = '&#'.hex('00B6').';';
foreach my $command (keys(%Texinfo::Convert::Unicode::unicode_entities)) {
- $conf_default_no_arg_commands_formatting_normal->{$command}
+ $conf_default_no_arg_commands_formatting_normal->{$command}->{'text'}
= $Texinfo::Convert::Unicode::unicode_entities{$command};
}
foreach my $space_command (' ', "\t", "\n") {
- $conf_default_no_arg_commands_formatting_normal->{$space_command}
+
$conf_default_no_arg_commands_formatting_normal->{$space_command}->{'text'}
= $self->html_non_breaking_space();
}
- $conf_default_no_arg_commands_formatting_normal->{'tie'}
+ $conf_default_no_arg_commands_formatting_normal->{'tie'}->{'text'}
= $self->substitute_html_non_breaking_space(
- $default_no_arg_commands_formatting{'normal'}->{'tie'});
+ $default_no_arg_commands_formatting{'normal'}->{'tie'}->{'text'});
if (not defined($self->get_conf('OPEN_QUOTE_SYMBOL'))) {
$self->set_conf('OPEN_QUOTE_SYMBOL', '&#'.hex('2018').';');
}
@@ -6064,7 +6089,8 @@ sub converter_initialize($)
} else {
$self->{'line_break_element'} = '<br>';
}
- $conf_default_no_arg_commands_formatting_normal->{'*'} =
$self->html_line_break_element();
+ $conf_default_no_arg_commands_formatting_normal->{'*'}->{'text'}
+ = $self->html_line_break_element();
my $customized_types_conversion =
Texinfo::Config::GNUT_get_types_conversion();
foreach my $type (keys(%default_types_conversion)) {
@@ -6144,15 +6170,15 @@ sub converter_initialize($)
and Texinfo::Convert::Unicode::brace_no_arg_command(
$command,
$self->get_conf('OUTPUT_ENCODING_NAME'))) {
$self->{'no_arg_commands_formatting'}->{$context}->{$command}
- = Texinfo::Convert::Unicode::brace_no_arg_command(
- $command, $self->get_conf('OUTPUT_ENCODING_NAME'));
+ = { 'text' => Texinfo::Convert::Unicode::brace_no_arg_command(
+ $command, $self->get_conf('OUTPUT_ENCODING_NAME'))};
# reset CSS for itemize command arguments
if ($context eq 'css_string'
and exists($brace_commands{$command})
and $command ne 'bullet' and $command ne 'w'
and not
$special_list_bullet_css_string_no_arg_command{$command}) {
- my $css_string =
$self->{'no_arg_commands_formatting'}->{$context}->{$command};
- #$css_string =~ s/^(\\[A-Z0-9]+) $/$1/;
+ my $css_string
+ =
$self->{'no_arg_commands_formatting'}->{$context}->{$command}->{'text'};
$css_string = '"'.$css_string.'"';
$self->{'css_map'}->{"ul.mark-$command"} = "list-style-type:
$css_string";
}
diff --git a/tp/init/html32.pm b/tp/init/html32.pm
index 1c91d7f26b..000de5dec5 100644
--- a/tp/init/html32.pm
+++ b/tp/init/html32.pm
@@ -84,8 +84,8 @@ texinfo_register_no_arg_command_formatting('oe', 'œ');
texinfo_register_no_arg_command_formatting('OE', 'Œ');
foreach my $dots ('dots', 'enddots') {
- texinfo_register_no_arg_command_formatting($dots, '<small>...</small>');
- texinfo_register_no_arg_command_formatting($dots, '...', 'preformatted');
+ texinfo_register_no_arg_command_formatting($dots, '...', 'small');
+ texinfo_register_no_arg_command_formatting($dots, '...', undef,
'preformatted');
}
foreach my $context ('preformatted', 'normal') {
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- branch master updated: * tp/Texinfo/Config.pm (texinfo_register_no_arg_command_formatting), tp/Texinfo/Convert/HTML.pm (_translate_names) (%default_no_arg_commands_formatting, _text_element_conversion) (_convert_no_arg_command, _css_string_convert_no_arg_command) (converter_initialize): specify no args commands with a separate 'element' and 'text' information in an hash reference instead of just having a text.,
Patrice Dumas <=